Socket.IO 负载均衡
架构
Nginx 配置
为了负载均衡时连接保证始终连到一个节点上,使用 Nginx 的 ip_hash 实现 session sticky,让客户端始终连接到集群内一台节点上。
在 Nginx 的 conf.d 目录下创建配置文件 socket_io.conf,内容如下:
upstream nodejs_websocket {
ip_hash;
server 192.168.1.100:3000;
server 192.168.1.101:3000;
}
server {
listen 80;
server_name 127.0.0.1 localhost;
access_log off;
add_header Content-Type "text/html; charset=UTF-8";
location / {
proxy_pass http://nodejs_websocket;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
由于 Nginx 的反向代理机制和 Socket.IO 的自动重连机制,上述架构还具备高可用的特性,即当某个节点宕机时,原先连接到该节点上的客户端会自动重连至其它节点上。