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

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

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

阿里雲負載均衡

架構文檔node

負載均衡好處

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

實踐例子

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

實現負載均衡遇到的問題

  1. nginx負載均衡策略
  2. 多臺服務器代碼同步
  3. 多臺服務器數據庫同步
  4. node服務,代碼更新後,服務重啓
  5. 源的代碼更新問題和數據升級
  6. 用戶上傳的圖片等靜態資源同步

Nginx反向代理及負載均衡

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

這裏使用最簡單的輪詢機制,session存放在數據庫,解決了session服務器之間不一樣步的問題。nginx

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進程程序git

nodemon

  1. 自動監聽文件變化,重啓node服務
  2. exitcrash,當node服務奔潰後,重啓

代碼同步

使用shell腳本,自動更新代碼,一鍵同步更新web

#!/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. 重啓服務

數據庫同步

阿里 雲數據庫

文檔地址
性能最高,有備份有容災,功能強大,可是收費sql

mysql

mysql遠程鏈接配置
配置相對簡單,數據庫會有性能瓶頸,免費shell

分佈式數據庫

研究中數據庫

靜態資源同步

當用戶經過負載均衡,被定位到了不一樣的服務器。這時候,上傳文件時,將會把文件上傳到不一樣的服務器中。當用戶被分配到了其餘服務器時,就會找不到這個文件了。因此咱們須要同步負載均衡的服務器的文件。npm

方案一:本身實現統一文件上傳管理系統,全部用戶文件統一上傳到一個地方。
方案二:使用阿里雲的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...

相關文章
相關標籤/搜索