架构

Nginx配置
为了负载均衡时连接保证始终连到一个节点上,使用Nginx的ip_hash实现session sticky,让客户端始终连接到集群内一台节点上。
在Nginx的conf.d
目录下创建配置文件socket_io.conf
,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| 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的自动重连机制,上述架构还具备高可用的特性,即当某个节点宕机时,原先连接到该节点上的客户端会自动重连至其它节点上。