集群聊天服务器(12)nginx负载均衡器

目录

负载均衡器

目前最多只能支持2w台客户机进行同时聊天

所以要引入集群,多服务器。

但是客户连哪一台服务器呢?客户并不知道哪一台服务器更加繁忙

选择nginx的tcp负载均衡器,能够支持至少3w并发量,最大5w-6w之间

使用nginx的负载均衡器+3台服务器,能够支持15W并发量

nginx负载均衡器优势

提高并发量

nginx可以平滑加载配置文件,不像有些公司在凌晨重启服务器。在扩展服务器上比较方便

心跳机制,监测chatserver故障

如何解决集群聊天服务器跨服务器通信问题?

集群部署的服务器之间进行通信,最好的方式就是引入中间件消息队列,解耦各个服务器,使整个系统松耦合,提高服务器的响应能力,节省服务器的带宽资源。

采用基于发布-订阅的redis消息队列

消息队列相当于一个观察者,会把监听者感兴趣的推送给监听者。而监听者需要先订阅。这就是观察者模式的一个应用场景。

nginx的TCP负载均衡配置

nginx从1.9版本之后支持tcp的长连接负载均衡,但是默认没有编译tcp负载均衡模块,编写时需要加入-with-stream参数来激活这个模块。

nginx配置

先解压

./configure --with-stream

如果报错:./configure: error: the HTTP rewrite module requires the PCRE library.:

sudo apt-get install libpcre3 libpcre3-dev

然后make && make install

安装到了其他目录



在8000这个端口号上进行监听。

weight是权重的意思,权重都为1,那就是轮询,给两台服务器发送。如果上面1,下面是2,那么就是来3个请求下面拿到两个。服务器硬件性能高一点的可以权重大一点。max_fails是心跳机制,等待服务器回消息,等待时间30s,如果心跳超过3次都失败,那么就判定该服务器挂了。

如果要添加服务器,那就是在这里面继续往后写。

转到sbin目录下

先启动./nginx

然后nginx -s reload平滑启动

然后给chatserver的main.cpp加了参数

同时开启两个服务器

两个客户端先连接8000端口

服务器通过轮询一边连接了一个

在其中一个客户端登录,一个服务器响应了

相关推荐
云宏信息5 小时前
超融合和存算分离怎么选?从性能、可靠性、扩展、成本四个维度讲述如何精准匹配架构选型 | 附企业降本轻量云方案
运维·服务器·架构·云计算
咸鱼梦想家π6 小时前
Linux开发工具(下)
linux·运维·服务器
云飞云共享云桌面7 小时前
机械制造研发部门:一台SolidWorks云主机替代 10 台传统图形工作站
运维·服务器·网络·3d·自动化·制造
j7~7 小时前
【ProtoBuf】(篇一)初识 ProtoBuf
运维·服务器·序列化·protobuf·protobuf的适用特点
丰锋ff7 小时前
用户管理命令
linux·运维·服务器
BcoreOS7 小时前
‌新手必看:Debian 13 虚拟机 SSH 连不上?我是怎么一步步调试成功的
服务器
迪菲赫尔曼7 小时前
【基础篇 08】让VS Code连接服务器:界面在本地,文件保存到远端
运维·服务器·vscode·yolo·论文·教程·ultralyt
东方佑8 小时前
去魅:工具调用、Agent 调用、A2A、MCP、Harness 到底都是什么
服务器·网络·数据库
H.莓飛8 小时前
【数据结构】排序总结与规模实测
linux·服务器·开发语言·数据结构·visual studio·1024程序员节
Dxy12393102169 小时前
Linux 压缩解压相关命令介绍
linux·运维·服务器