解决socket负载均衡集群方案和代码实现

有一段时间,在考虑下socket 之间集群 可以在Nginx 下可以 但是不同服务器之间怎么通讯呢 后来自己也想可不可以用什么东西或者中间件来通讯 ,后来在百度之下 发现果然就是按照我所想的 ,在网上看了一个方案,架构如下:

 

说一下这个方案他们之间的作用

redis : 存取用户和服务器的关系,如果A想发一条数据,是发给B ,这时A发起一个mq订阅模式推送的数据 ,然后B收到数据处理好 ,在推送给用户就ok 

mq : 是了桥接A和B 的之间的通讯

这样A和B之间通讯就没有问题了

以下是搭建过程

首先配置好nginx ,可以百度下载和安装 ,我的路径是如下 打开配置nginx.conf   vim nginx.conf 配置如下

 

 

 map $http_upgrade $connection_upgrade {

      default upgrade;

      '' close;

    }

 

    upstream ws_name {

      server 127.0.0.1:12345 weight=1; ## weight 权重越大越大获取链接机会就越大

      server 127.0.0.1:12346 weight=1;

    }

    server {

        listen       9999;

        server_name  localhost;

        location / {

            proxy_pass   http://ws_name/;

            proxy_http_version 1.1;

            proxy_set_header Upgrade $http_upgrade;

            proxy_set_header Connection "Upgrade";

           ### 以下配置是为了解决在nginx 下 socket 短时间的断开 ,即使你配置长链接也没用 必须有如下的配置

            proxy_connect_timeout 4s;

            proxy_read_timeout 600s; #这个配置连接保持多长时间 这配置十分钟 ,然后可以自己心跳来保证长链接

            proxy_send_timeout 12s;

 

 

        }

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

以上是nginx的配置 然后启动就ok 启动 命令 :./nginx 

查看是否启动 命令  ps -ef |grep nginx

 然后 mq 我的mq是 activemq  这个可以百度看看怎么安装 ,因为这个安装比较简单所以就不说太多了 

接下来是代码的实现了 。

posted @ 2018-10-24 10:01  panchanggui  阅读(3538)  评论(0编辑  收藏  举报