Nginx負載均衡
如需轉載請標明出處:http://blog.csdn.net/itas109
QQ技術交流羣:129518033
相關問題:
1. Nginx
1.1 Nginx負載均衡簡介
負載平衡(load balancer)是一種用於優化資源利用率,最大化吞吐量,減少延遲和確保容錯配置的常用技術。
Nginx是一個非常有效的HTTP負載平衡器,可以將流量分配到多個應用程序服務器,改善Web應用程序的性能,可伸縮性和可靠性。
1.2 負載均衡策略
策略 | 說明 |
---|---|
round-robin | 輪詢(默認) |
weight | 權重(可結合round-robin、ip_hash、least-connected使用) |
ip_hash | 基於客戶端IP地ip_hash址的哈希選擇 |
least-connected | 最少連接,將下一個請求分配給活動鏈接數量最少的服務器 |
fair(第三方) | 響應時間 |
url_hash(第三方) | 依據URL分配 |
1.3 負載均衡配置
NGIX中的反向代理實現包括HTTP、HTTPS、FastCGI、uwsgi, SCGI, memcached和gRPC的負載均衡。
1.3.1 輪詢默認配置
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
1.3.2 權重配置
upstream myapp1 {
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}
1.3.3 會話保持配置
Ip_hash主要作用是會話保持
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
1.3.4 最少連接配置
upstream myapp1 {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
1.3.5 健康檢查配置
upstream dynamic {
zone upstream_dynamic 64k;
server backend1.example.com weight=5;
server backend2.example.com:8080 fail_timeout=5s slow_start=30s;
server 192.0.2.1 max_fails=3;
server backend3.example.com resolve;
server backend4.example.com service=http resolve;
server backup1.example.com:8080 backup;
server backup2.example.com:8080 backup;
}
server {
location / {
proxy_pass http://dynamic;
health_check;
}
}
1.4 注意事項
負載均衡websocket時不能合理的均分到每個服務上,極端情況下可能會將所有ws連接到分配到一個服務上,不能充分發揮負載均衡的作用。
2. PM2
PM2是帶有內置負載平衡的Node.js應用程序的生產過程管理工具,可以使應用程序永遠保持活動狀態,無需停機即可重新加載它們,並簡化常見的系統管理任務。
2.1 使用
$ npm install pm2 -g
$ pm2 start app.js
2.2 Nodejs負載均衡模式
$ pm2 start api.js -i <processes>
可以使 ‘max’, -1 (cpu總數減1) 或者自定義數字
2.3 進程看板
$ pm2 monit
2.4 日誌管理
$ pm2 logs
2.5 pm2-web網頁監控
$ npm install -g pm2-web
$ pm2-web
License
License under CC BY-NC-ND 4.0: 署名-非商業使用-禁止演繹
Reference:
1.蘇寧的Node.js實踐