基於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腳本,自動更新代碼,一鍵同步更新

#!/bin/bash
cd git倉庫
git pull;
yarn install --production;
rsync -av --exclude-from=/opt/ssh/blog_exclude.list git倉庫 代碼發佈地址
rsync -avz -e ssh /var/www/blog/ root@負載均衡服務器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...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章