• (十四)引入负载均衡器


    负载均衡是什么

    假设一台机器支持两万的并发量,现在我们需要保证八万的并发量。首先想到的是升级服务器的配置,比如提高 CPU 执行频率,加大内存等提高机器的物理性能来解决此问题。但是单台机器的性能毕竟是有限的,而且也有着摩尔定律也日已失效。
    这个时候我们就可以增加服务器的数量,将用户请求分发到不同的服务器上分担压力,这就是负载均衡。那我们就需要有一个第三方组件充当负载均衡器,由它负责将不同的请求分发到不同的服务器上。而本项目,我们选择Nginx的负载均衡功能。

    在这里插入图片描述

    选择Nginxtcp负载均衡模块的原因:

    1. client的请求按照负载算法分发到具体的业务服务器ChatServer
    2. 能够ChantServer保持心跳机制,检测ChatServer故障
    3. 能够发现新添加的ChatServer设备,方便扩展服务器数量

    在这里插入图片描述

    Nginx下载安装

    下载

    wget http://nginx.org/download/nginx-1.18.0.tar.gz
    

    解压

    tar -zxvf nginx-1.18.0.tar.gz
    

    安装

    [root@caochenlei ~]# cd nginx-1.18.0
    [root@caochenlei nginx-1.18.0]# ./configure
    [root@caochenlei nginx-1.18.0]# make && make install
    

    这里我看要加上指示才能编译自己想要的模块,于是使用了./configure --with-stream,没想到出现了问题。

    ./configure --with-stream
    

    在这里插入图片描述

    可以看到缺少了某些依赖文件,直接安装 PCRE 即可。网上搜到的都是 centos 的安装方法,结果试了一下发现 Ubuntu 根本没用这个包。yum -y install pcre-devel

    在这里插入图片描述

    后来找到了 Ubuntu 的安装方法,最后安装成功。

    sudo apt-get install libpcre3-dev
    
    ./configure --with-stream
    

    注意:安装完成后的路径为:/usr/local/nginx

    开放防火墙

    [root@caochenlei ~]# /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
    [root@caochenlei ~]# /etc/rc.d/init.d/iptables save
    iptables:将防火墙规则保存到 /etc/sysconfig/iptables:[确定]
    

    Nginx命令

    普通启动服务:/usr/local/nginx/sbin/nginx
    配置文件启动:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    暴力停止服务:/usr/local/nginx/sbin/nginx -s stop
    优雅停止服务:/usr/local/nginx/sbin/nginx -s quit
    检查配置文件:/usr/local/nginx/sbin/nginx -t
    重新加载配置:/usr/local/nginx/sbin/nginx -s reload
    查看相关进程:ps -ef | grep nginx
    

    使用普通启动服务命令后/usr/local/nginx/sbin/nginx,在浏览器端访问情况:

    在这里插入图片描述

    输入重新加载配置命令/usr/local/nginx/sbin/nginx -s reload出错:

    nginx: [error] open() “/usr/local/nginx/logs/nginx.pid” failed (2: No such file or directory)
    

    在这里插入图片描述

    去掉#pid logs/nginx.pid;的注释。

    配置负载均衡

    在这里插入图片描述

    配置好后,重新加载配置文件启动。

    /usr/local/nginx/sbin/nginx -s reload
    

    负载均衡测试

    我们服务端分别监听两个端口,6000``6002
    然后客户端向8000端口发起连接,这个是 Nginx 作为负载均衡的端口,它会将新连接轮询到两个服务端中。
    在这里插入图片描述

    在这里插入图片描述

    参考

  • 相关阅读:
    RocketMQ为什么要保证订阅关系一致
    利用反射对修饰符为final的成员变量进行修改
    AD常用操作(最全-不断添加更新中)
    Java项目的程序里为什么老用注解?注解有哪些作用
    C++ 合并K个升序链表
    JDK JRE JVM 的区别
    C++:哈希,unordered_map和unordered_set
    Vue极简教程,初识Vue前端框架
    GPT-4o有点坑
    3dsmax模型烘焙光照贴图并导入unity流程详解
  • 原文地址:https://blog.csdn.net/weixin_46272577/article/details/127093782