基於node開發的web應用,負載均衡的簡單實踐
阿新 • • 發佈:2018-12-23
叢集(cluster)是一組相互獨立的、通過高速網路互聯的計算機,它們構成了一個組,並以單一系統的模式加以管理。一個客戶與叢集相互作用時,叢集像是一個獨立的伺服器。負載均衡(Load Balance),其意思就是分攤到多個操作單元上進行執行
阿里雲負載均衡
負載均衡好處
- 節省成本,一個伺服器效能再好也是有瓶頸的,而且效能越高的伺服器成本也越大。
- 極大的提高了併發量和響應速度。
實踐例子
學無止境網
該web應用,由兩個伺服器一起提供的服務
實現負載均衡遇到的問題
- nginx負載均衡策略
- 多臺伺服器程式碼同步
- 多臺伺服器資料庫同步
- node服務,程式碼更新後,服務重啟
- 源的程式碼更新問題和資料升級
- 使用者上傳的圖片等靜態資源同步
Nginx反向代理及負載均衡
- 輪詢
- 權重
- ip_hash
- url_hash
- 等等...
這裡使用最簡單的輪詢機制,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
- 自動監聽檔案變化,重啟node服務
- 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 "釋出成功"
- 將git倉庫和正式應用的程式碼地址分離
- 更新git倉庫地址
- 下載程式依賴
- 將git倉庫更新後的程式碼複製到正式釋出目錄
- 將程式碼同步更新到負載均衡伺服器
- 重啟服務
資料庫同步
阿里 雲資料庫
文件地址
效能最高,有備份有容災,功能強大,但是收費
mysql
mysql遠端連線配置
配置相對簡單,資料庫會有效能瓶頸,免費
分散式資料庫
研究中
靜態資源同步
當用戶通過負載均衡,被定位到了不同的伺服器。這時候,上傳檔案時,將會把檔案上傳到不同的伺服器中。當用戶被分配到了其他伺服器時,就會找不到這個檔案了。所以我們需要同步負載均衡的伺服器的檔案。
方案一:自己實現統一檔案上傳管理系統,所有使用者檔案統一上傳到一個地方。
方案二:使用阿里雲的NAS檔案系統管理
方案三:使用NFS系統
阿里雲 NAS檔案系統管理
阿里雲檔案儲存(Network Attached Storage,簡稱 NAS)是面向阿里雲 ECS 例項、HPC 和 Docker 等計算節點的檔案儲存服務,提供標準的檔案訪問協議,您無需對現有應用做任何修改,即可使用具備無限容量及效能擴充套件、單一名稱空間、多共享、高可靠和高可用等特性的分散式檔案系統。
缺點
缺點:收費
優點
- 配置相對簡單
- 彈性伸縮,按量收費
- 阿里出品
NFS (Network FileSystem)
缺點
- 配置相對複雜
- server宕機了所有客戶端都不能訪問
- 在高併發下NFS效率/效能有限
- 資料是通過明文傳送,安全性一般
- 對資料完整性不做驗證
- 多臺機器掛載NFS伺服器時,連線管理維護麻煩
優點
- 免費,免費的就是好
- 節省儲存空間
- 實現了多臺伺服器共享檔案
原文地址:
https://tianshengjie.cn/artic...
來源:https://segmentfault.com/a/1190000016904024