码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • (十四)引入负载均衡器


    负载均衡是什么

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

    在这里插入图片描述

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

    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 作为负载均衡的端口,它会将新连接轮询到两个服务端中。
    在这里插入图片描述

    在这里插入图片描述

    参考

    • 学习Nginx这一篇就够了_轻松的小希的博客-CSDN博客
    • nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全_冯insist的博客-CSDN博客
    • Unable to locate package pcre-devel_ChangYan.的博客-CSDN博客
  • 相关阅读:
    Android学习笔记 69. 文本和滚动视图
    注册Java 引用类型 (class、interface) 用法总结详解
    Vue2与Vue3区别
    R语言筛选时间序列数据的子集(subset time series data)、根据时间序列数据的索引位置筛选指定单个索引位置的时间序列值(单个)
    Vue的基础语法-常用v-on、v-if、v-bind等指令的细节(最详细)
    保研北京大学计算机研究生的同学,本科都是哪些大学?
    导数...
    spring LaTeX模板参考文献显示不了,怎么解决呀
    码蹄集 - MT3149 · AND - 数据不是很强,暴力剪枝就能骗AC
    vue <el-checkbox-group>多选框回显
  • 原文地址:https://blog.csdn.net/weixin_46272577/article/details/127093782
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号