当前位置: 首页 > article >正文

CPP集群聊天服务器开发实践(五):nginx负载均衡配置

1 负载均衡器的原理与功能

单台Chatserver可以容纳大约两万台客户端同时在线聊天,为了提升并发量最直观的办法需要水平扩展服务器的数量,三台服务器可以容纳六万左右的客户端。

负载均衡器的作用:

  1. 把client的请求按照负载均衡算法分发到具体业务服务器chatserver上面:保证server与client的长连接,依据轮询算法/权重算法等将不同client连接到不同server上面,提升client的容量
  2. 能够和chatserver保持心跳机制,监测chatserver故障:nginx能够实时监测server是否由于网络故障无法为client提供服务,可以引入心跳计数器进行判断
  3. 能够发现新添加的chatserver设备,方便扩展服务器数量:能够在不关闭原有服务器的基础上平滑添加新的server供nginx调度分配

2 nginx的tcp负载均衡配置和功能验证

选择nginx的tcp负载均衡模块需要解决的问题:

  1. 如何进行nginx源码编译,包括tcp负载均衡模块
  2. nginx.conf配置文件中如何配置负载均衡
  3. nginx的平滑加载配置文件启动

配置参考:Nginx负载均衡实践-CSDN博客

安装好nginx之后位于usr/local/nginx之下:

配置文件位于conf文件夹下的nginx.conf,可执行文件位于sbin下。

nginx提供了应用层(http web)和传输层(tcp)的负载均衡,在nginx.conf中修改即可。

#nginx tcp loadbalance config
stream{
    upstream MyServer{
        /*
        weight:设置服务器权重,加权轮询算法中权重大的优先分配客户端
        max_fails:与server的心跳机制,超过3次未响应则认为故障
        fail_timeout:每次心跳监测的时长为30s
        添加新的服务器无需停止nginx服务,只需要修改此配置文件即可
        */
        server 127.0.0.1 6000 weight=1 max_fails=3 fail_timeout=30s;
        server 127.0.0.1 6002 weight=1 max_fails=3 fail_timeout=30s;
    }
    
    server{
        proxy_connect_timeout 1s;
        #proxy_timeout 3s;
        //客户端统一连接nginx的8000端口,由nginx进行负载均衡
        listen 8000;
        //反向代理对象为MyServer
        proxy_pass MyServer;
        tcp_nodelay on;
    }
}

./nginx -s reload:平滑重启配置文件

./nginx -s stop:停止nginx服务

结果测试:

(1)启动nginx

(2)测试连接

两台客户端访问8000端口的nginx分别被分配到了两台服务器。


http://www.kler.cn/a/549076.html

相关文章:

  • linux软件编程-IO
  • 论文阅读_用于低频隔振的高负刚度新型阵列磁性弹簧的分析与设计_3
  • 基于Yolo11的无人机小目标检测系统的设计与性能优化改进项目实现
  • mysql索引为什么用B+树,不用二叉树
  • JavaScript系列(68)--运行时优化技术详解
  • 用大模型学大模型03-数学基础 概率论 条件概率 全概率公式 贝叶斯定理
  • Java语言在微服务架构中的应用研究
  • Leetcode 712. Minimum ASCII Delete Sum for Two Strings
  • Jvascript网页设计案例:通过js实现一款密码强度检测,适用于等保测评整改
  • 卓越设计彰显品质:福特中国“烈马宇宙”项目展示高质量标准
  • AI大模型学习(一)
  • Windows环境安装部署minimind步骤
  • 民用无人驾驶航空器操控员考试
  • 连锁企业管理系统的五大核心功能
  • Linux-ubuntu系统移植之Uboot作用以及相关命令
  • 蓝桥杯 Java B 组 之队列的应用(BFS 入门)
  • ai时代我们面临的机遇和挑战是什么
  • 用C++实现点到三角形最小距离的计算
  • 基于Spring Boot的家电销售展示平台设计与实现(LW+源码+讲解)
  • CI/CD(二)docker-compose安装Jenkins