nginx做WebSocket负载均衡

背景知识

内容来源自:https://blog.csdn.net/crazymakercircle/article/details/124009218
Nginx的upstream目前支持以下几种方式的分配:
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
2、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
3、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
4、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

举例

http {
    upstream  www.test1.com {
          ip_hash;
          server   172.16.125.76:8066 weight=10;
          server   172.16.125.76:8077 down;
          server   172.16.0.18:8066 max_fails=3 fail_timeout=30s;
          server   172.16.0.18:8077 backup;
     }
}

案例分析

已知:

  1. 预计部署两个ws服务器,一个在192.168.0.10:8054,192.168.0.11:8054
  2. 对外使用wss://www.test.com访问ws
  3. 使用Nginx做负载均衡,用轮询模式

nginx的配置方式:

http {       
     upstream  test_com {
          server   192.168.0.10:8054;
          server   192.168.0.11:8054;         
     }

    
     server {
        listen       443;
        server_name  www.test.com;        
       
        location /{
            proxy_pass http://test_com;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header   Host    $host;
            proxy_set_header   X-Real-IP   $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            keepalive_timeout 120s;        #客户端链接超时时间。为0的时候禁用长连接。
            #在一个长连接上可以服务的最大请求数目。
            keepalive_requests 10000;    #当达到最大请求数目且所有已有请求结束后,连接被关闭。默认值为100

                                            
     }
}

关于反向代理的配置:
https://blog.51cto.com/lookingdream/2487955

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容