1 負載均衡器的原理與功能
單臺Chatserver可以容納大約兩萬臺客戶端同時在線聊天,為了提升并發量最直觀的辦法需要水平擴展服務器的數量,三臺服務器可以容納六萬左右的客戶端。
負載均衡器的作用:
- 把client的請求按照負載均衡算法分發到具體業務服務器chatserver上面:保證server與client的長連接,依據輪詢算法/權重算法等將不同client連接到不同server上面,提升client的容量
- 能夠和chatserver保持心跳機制,監測chatserver故障:nginx能夠實時監測server是否由于網絡故障無法為client提供服務,可以引入心跳計數器進行判斷
- 能夠發現新添加的chatserver設備,方便擴展服務器數量:能夠在不關閉原有服務器的基礎上平滑添加新的server供nginx調度分配
2 nginx的tcp負載均衡配置和功能驗證
選擇nginx的tcp負載均衡模塊需要解決的問題:
- 如何進行nginx源碼編譯,包括tcp負載均衡模塊
- nginx.conf配置文件中如何配置負載均衡
- nginx的平滑加載配置文件啟動
配置參考:Nginx負載均衡實踐-CSDN博客
安裝好nginx之后位于usr/local/nginx之下:
配置文件位于conf文件夾下的nginx.conf,可執行文件位于sbin下。
nginx提供了應用層(http web)和傳輸層(tcp)的負載均衡,在nginx.conf中修改即可。
#nginx tcp loadbalance config
stream{upstream MyServer{/*weight:設置服務器權重,加權輪詢算法中權重大的優先分配客戶端max_fails:與server的心跳機制,超過3次未響應則認為故障fail_timeout:每次心跳監測的時長為30s添加新的服務器無需停止nginx服務,只需要修改此配置文件即可*/server 127.0.0.1 6000 weight=1 max_fails=3 fail_timeout=30s;server 127.0.0.1 6002 weight=1 max_fails=3 fail_timeout=30s;}server{proxy_connect_timeout 1s;#proxy_timeout 3s;//客戶端統一連接nginx的8000端口,由nginx進行負載均衡listen 8000;//反向代理對象為MyServerproxy_pass MyServer;tcp_nodelay on;}
}
./nginx -s reload:平滑重啟配置文件
./nginx -s stop:停止nginx服務
結果測試:
(1)啟動nginx
(2)測試連接
兩臺客戶端訪問8000端口的nginx分別被分配到了兩臺服務器。