Nginx負載均衡

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實踐

發佈了225 篇原創文章 · 獲贊 220 · 訪問量 84萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章