1. 程式人生 > >基於node開發的web應用,負載均衡的簡單實踐

基於node開發的web應用,負載均衡的簡單實踐

叢集(cluster)是一組相互獨立的、通過高速網路互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與叢集相互作用時,叢集像是一個獨立的伺服器。

負載均衡(Load Balance),其意思就是分攤到多個操作單元上進行執行

阿里雲負載均衡

架構文件

負載均衡好處

  1. 節省成本,一個伺服器效能再好也是有瓶頸的,而且效能越高的伺服器成本也越大。
  2. 極大的提高了併發量和響應速度。

實踐例子

學無止境網
該web應用,由兩個伺服器一起提供的服務

實現負載均衡遇到的問題

  1. nginx負載均衡策略
  2. 多臺伺服器程式碼同步
  3. 多臺伺服器資料庫同步
  4. node服務,程式碼更新後,服務重啟
  5. 源的程式碼更新問題和資料升級
  6. 使用者上傳的圖片等靜態資源同步

Nginx反向代理及負載均衡

  1. 輪詢
  2. 權重
  3. ip_hash
  4. url_hash
  5. 等等...

這裡使用最簡單的輪詢機制,session存放在資料庫,解決了session伺服器之間不同步的問題。


upstream tianshengjie{
    server ip地址;
    server ip地址 max_fails=2 fail_timeout=10s;
}

server {
    listen 80 default_server;
    server_name 47.99.90.167 www.tianshengjie.cn tianshengjie.cn;
    location / {
        proxy_pass http://tianshengjie;
        proxy_cache_key $http_range$uri$is_args$args;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

服務部署


forever start -c nodemon app.js --exitcrash

forever

A simple CLI tool for ensuring that a given script runs continuously
守護node程序程式

nodemon

  1. 自動監聽檔案變化,重啟node服務
  2. exitcrash,當node服務奔潰後,重啟

程式碼同步

使用shell指令碼,自動更新程式碼,一鍵同步更新

cd git倉庫
git pull;
yarn install --production;
rsync -av --exclude-from=/opt/ssh/blog_exclude.list git倉庫 程式碼釋出地址
rsync -avz -e ssh /var/www/blog/ 
[email protected]
負載均衡伺服器ip:負載均衡伺服器釋出程式碼目錄 cd 程式碼釋出地址 ; forever stop app.js; npm run start; echo "釋出成功"
  1. 將git倉庫和正式應用的程式碼地址分離
  2. 更新git倉庫地址
  3. 下載程式依賴
  4. 將git倉庫更新後的程式碼複製到正式釋出目錄
  5. 將程式碼同步更新到負載均衡伺服器
  6. 重啟服務

資料庫同步

阿里 雲資料庫

文件地址
效能最高,有備份有容災,功能強大,但是收費

mysql

mysql遠端連線配置
配置相對簡單,資料庫會有效能瓶頸,免費

分散式資料庫

研究中

靜態資源同步

當用戶通過負載均衡,被定位到了不同的伺服器。這時候,上傳檔案時,將會把檔案上傳到不同的伺服器中。當用戶被分配到了其他伺服器時,就會找不到這個檔案了。所以我們需要同步負載均衡的伺服器的檔案。

方案一:自己實現統一檔案上傳管理系統,所有使用者檔案統一上傳到一個地方。
方案二:使用阿里雲的NAS檔案系統管理
方案三:使用NFS系統

阿里雲 NAS檔案系統管理

阿里雲檔案儲存(Network Attached Storage,簡稱 NAS)是面向阿里雲 ECS 例項、HPC 和 Docker 等計算節點的檔案儲存服務,提供標準的檔案訪問協議,您無需對現有應用做任何修改,即可使用具備無限容量及效能擴充套件、單一名稱空間、多共享、高可靠和高可用等特性的分散式檔案系統。

配置掛載

缺點

缺點:收費

優點
  1. 配置相對簡單
  2. 彈性伸縮,按量收費
  3. 阿里出品

NFS (Network FileSystem)

配置文件

缺點
  1. 配置相對複雜
  2. server宕機了所有客戶端都不能訪問
  3. 在高併發下NFS效率/效能有限
  4. 資料是通過明文傳送,安全性一般
  5. 對資料完整性不做驗證
  6. 多臺機器掛載NFS伺服器時,連線管理維護麻煩

優點

  1. 免費,免費的就是好
  2. 節省儲存空間
  3. 實現了多臺伺服器共享檔案

原文地址:
https://tianshengjie.cn/artic...

來源:https://segmentfault.com/a/1190000016904024