RabbitMQ之负载均衡-HAProxy

news2024/11/17 22:19:16
  • 将客户端的连接和操作的压力分散到集群中的不同节点,防止单个或几台服务器压力过大成为访问的瓶颈,甚至宕机。
  • HAProxy是一款开源免费,并提供高可用性、负载均衡以及基于TCP和HTTP协议的代理软件,可以支持四层、七层负载均衡,经过测试单节点可以支持10W左右并发连接。
  • LVS是工作在内核模式(IPVS),支持四层负载均衡,实测可以支撑百万并发连接。
  • Nginx支持七层的负载均衡(后期的版本也支持四层了),是一款高性能的反向代理软件和Web服务器,可以支持单机3W以上的并发连接。

        这里我们使用HAProxy来做RabbitMQ的负载均衡,通过暴露VIP给上游的应用程序直接连接,上游应用程序不感知底层的RabbitMQ的实例节点信息。

yum install gcc -y
tar -zxf haproxy-2.1.0.tar.gz
cd haproxy-2.1.0
make TARGET=linux-glibc
make install
mkdir /etc/haproxy


#赋权
groupadd -r -g 149 haproxy
# 添加用户
useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy


#创建haproxy配置文件
touch /etc/haproxy/haproxy.cfg

你过你觉得编译安装很麻烦,你可以简单的

yum -y install haproxy

        如何使用yum安装的,那么haproxy默认在/usr/sbin/haproxy,且会自动创建配置文件/etc/haproxy/haproxy.cfg

配置HAProxy

(1)修改

vim /etc/haproxy/haproxy.cfg

(2)配置文件都做了详细注释,如下:

global
    log 127.0.0.1 local0 info
    # 服务器最大并发连接数;如果请求的连接数高于此值,将其放入请求队列,等待其它连接被释放;
    maxconn 5120
    # chroot /tmp
    # 指定用户
    uid 149
    # 指定组
    gid 149

    # 让haproxy以守护进程的方式工作于后台,其等同于“-D”选项的功能
    # 当然,也可以在命令行中以“-db”选项将其禁用;
    daemon
    # debug参数
    quiet
    # 指定启动的haproxy进程的个数,只能用于守护进程模式的haproxy;
    # 默认只启动一个进程,
    # 鉴于调试困难等多方面的原因,在单进程仅能打开少数文件描述符的场景中才使用多进程模式;
    # nbproc 20
    nbproc 1
    pidfile /var/run/haproxy.pid


defaults
    log global
    # tcp:实例运行于纯TCP模式,第4层代理模式,在客户端和服务器端之间将建立一个全双工的连接,
    # 且不会对7层报文做任何类型的检查;
    # 通常用于SSL、SSH、SMTP等应用;
    mode tcp
    option tcplog
    option dontlognull
    retries 3
    option redispatch
    maxconn 2000
    # contimeout 5s
    timeout connect 5s
    # 客户端空闲超时时间为60秒则HA 发起重连机制
    timeout client 60000
    # 服务器端链接超时时间为15秒则HA 发起重连机制
    timeout server 15000

listen rabbitmq_cluster
    # VIP,反向代理到下面定义的三台Real Server
    bind 192.168.100.101:5672
    #配置TCP模式
    mode tcp
    #简单的轮询
    balance roundrobin
    # rabbitmq集群节点配置
    # inter 每隔五秒对mq集群做健康检查,2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制
    server rabbitmqNode1 192.168.100.102:5672 check inter 5000 rise 2 fall 2
    server rabbitmqNode2 192.168.100.103:5672 check inter 5000 rise 2 fall 2
    server rabbitmqNode3 192.168.100.104:5672 check inter 5000 rise 2 fall 2

#配置haproxy web监控,查看统计信息
listen stats
    bind 192.168.100.101:9000
    mode http
    option httplog
    # 启用基于程序编译时默认设置的统计报告
    stats enable
    #设置haproxy监控地址为http://node1:9000/rabbitmq-stats
    stats uri /rabbitmq-stats
    # 每5s刷新一次页面
    stats refresh 5s

启动HAProxy:

haproxy -f /etc/haproxy/haproxy.cfg

关闭:

kill -9 <pid>

检查进程状态,还可以通过访问 http://vip:9000/rabbitmq-stats 查看状态

接下来,我们在之前的代码中直接测试,代码配置直接连接到HAProxy和监听端口上。 

集群的搭建就已经完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/55230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟列表渲染-前端性能优化

目录 1 使用场景 2 小插曲 3 虚拟列表渲染实现原理 4 代码实现 1 使用场景 在做EMBP项目时&#xff0c;有个模板新建的需求&#xff0c;需要点击获取子任务时获取所有的子任务&#xff0c;当时有的数据比较大&#xff0c;会有几百条的情况&#xff0c;此时接口请求变得很慢…

高可用网站架构云化

高可用网站架构云化 一、背景 早期互联网产品用户量少&#xff0c;并发量低&#xff0c;数据量小&#xff0c;多数只需要单个应用服务器可以满足需要&#xff0c;而数据库和文件服务部署在外部单个服务器上。随着业务在线化、互联网化的高速发展&#xff0c;企业对核心业务系统…

微信云开发AI短视频一键换脸小程序源码

简介&#xff1a; 微信云开发AI一键视频换脸小程序源码是由极客二改后发布的&#xff0c;小程序增加了广告控制&#xff0c; 插屏广告&#xff0c;激励广告和原生广告&#xff0c;由于采用了微信云开发没有后台&#xff0c; 所以不需要域名和服务器也可以正常搭建使用&#xf…

【论文精读6】MVSNet系列论文详解-CIDER

CIDER全名&#xff1a;Learning Inverse Depth Regression for Multi-View Stereo with Correlation Cost Volume,AAAI 2020(CCF A) 本文是MVSNet系列的第6篇&#xff0c;建议看过【论文精读1】MVSNet系列论文详解-MVSNet之后再看便于理解。 一、问题引入 针对问题&#xff1a…

理解 CNN

理解 CNN 注意&#xff1a;下面提到的图像指位图 目录理解 CNNCNN人类的视觉原理几个关键层卷积层(fliter、kernel)池化层 (pooling)激活层(activate)全连接层(Linear)pytorch实现TextCNN卷积传播图解不同视角看CNN参考CNN 卷积神经网络-CNN 最擅长的就是图片的处理。它受到人…

[附源码]JAVA毕业设计机房预约系统(系统+LW)

[附源码]JAVA毕业设计机房预约系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&…

Spring Data JPA 中的分页和排序

让我们学习如何使用 在 Spring 数据 JPA 中使用分页和排序有效地处理大量记录。 什么是分页和排序&#xff1f; 大多数情况下&#xff0c;来自数据库的结果集可能会让人不知所措。它可能会让人不知所措&#xff0c;以至于系统崩溃&#xff0c;因为它们无法在一次传递中处理那…

2019-10《信息资源管理 02378》真卷(独家文字版),圈定章节考点+统计真题分布

本系列博客合计 21 篇&#xff0c;每篇都将解析一张《信息资源管理》真卷&#xff0c;并附带答案解析与背诵技巧。 搜索 梦想橡皮擦&#xff0c;擦姐整理 全国 2019 年 10 月自学考试信息资源管理试题&#xff08;02378&#xff09; 单选题 1,信息技术是应用信息科学的原理和…

Linux基本工具——yum

Linux基本工具软件包管理器yum什么是软件包Linux的软件包yum的三板斧yum的扩展软件包管理器yum 工具的本质就是指令 什么是软件包 我们平时用手机与电脑的时候&#xff0c;如果想安装一个软件就需要去下载它的安装包&#xff08;软件包&#xff09;&#xff0c;下载安装包的…

前端怎么才能找到项目做?

前言 一般找项目最常用的就是在Github上&#xff0c;题主已经具备了html、css、js和vue的知识体系&#xff0c;那么在github或者找一些项目教程视频来实践是锻炼的最好途径&#xff0c;下面我整理了一些在github和B站上找了一些前端的经典项目&#xff0c;希望对你有所帮助~ …

Kotlin 开发Android app(十六):ContentProvider的使用

android的四大组件&#xff0c;已经介绍了两个&#xff0c;这一节介绍ContentProvider。前面的广播可以进行 app内的通讯&#xff0c;如果需要进行app之间的通讯&#xff0c;在android 中使用的是ContentProvider。ContentProvider 也分为三种&#xff0c;一&#xff0c;作为数…

物通博联持续参与京东方(BOE)工厂数字化项目

创新引领 数字驱动 京东方科技集团股份有限公司&#xff08;BOE&#xff09;创立于1993年&#xff0c;是全球领先的半导体显示技术、产品与服务提供商&#xff0c;核心业务包括显示器件、智慧系统和健康服务。产品广泛应用于手机、平板电脑、笔记本电脑、显示器、电视、车载、…

php万年历源代码!源代码![上一年、上一月、下一月、下一年、附加当天日期加背景颜色]-私聊源码

//当前年 $year isset($_GET[year])?$_GET[year]:date(Y); //echo $year; //制作当前月的变量 $monthisset($_GET[month])?$_GET[month]:date(n); //本月有多少天 $day date(t,mktime(0,0,0,$month,1,$year)); //本月从1号开始是星期几 $w date(w,mktime(0,0,0,$month,1…

python处理csv文件

如何使用python处理csv文件 素材准备 ​ csv⽂件其实就是⽂本⽂件&#xff0c;遵循了⼀定的格式&#xff0c;常⻅的csv⽂件⼀般是⽤逗号来隔开列&#xff0c;⽤换⾏符隔开不同的⾏&#xff0c;注意这⾥的符号都是英⽂符号。我们可以直接⽤open函数来打开csv⽂件&#xff1b; …

.net----数据库的访问ADO.NET、DataAdapter和DataSet

数据库的访问前言ADO.NET的概述ADO.NET数据源访问处理数据类库的两个组件&#xff1a;引用System.Data.dll和System.Xml.dll使用ADO.NET连接和操作数据库使用数据提供程序访问数据库操作的典型步骤&#xff1a;&#xff08;1&#xff09;建立数据库连接&#xff08;2&#xff0…

艾美捷曲妥珠单抗Trastuzumab参数和相关研究

曲妥珠单抗是一种重组人源化单克隆抗体&#xff0c;特异性地作用于人表皮生长因子受体-2(HER2)的细胞外部位。此抗体含人IgG1 框架&#xff0c;互补决定区源自鼠抗p185 HER2 抗体&#xff0c;能够与HER2 绑定。 HER2 原癌基因或C-erbB2 编码一个单一的受体样跨膜蛋白&#xff0…

Tyramide Cy5.5,Cyanine5.5 Tyramide,花青素Cy5.5酪酰胺远红色近红外发射染料

​一、理论分析&#xff1a; 中文名&#xff1a;花青素Cy5.5 酪酰胺 英文名&#xff1a;Cyanine5.5 Tyramide&#xff0c;Cy5.5 Tyramide&#xff0c;Tyramide Cy5.5 CAS号&#xff1a;N/A 化学式&#xff1a;C48H52CIN3O2 分子量&#xff1a;738.4 二、产品详情&#xff1a; 外…

【D3.js】1.20-给 D3 元素添加工具提示

title: 【D3.js】1.20-给 D3 元素添加工具提示 date: 2022-12-02 15:04 tags: [JavaScript,CSS,HTML,D3.js,SVG] 继续增强交互性&#xff1a;给元素添加悬停提示。 一、学习目标 如何给元素添加悬停提示&#xff1f; 通过title元素&#xff1a;增加title元素&#xff0c;通过.…

HTML+CSS+JS网页设计期末课程大作业——海贼王(8个页面)动漫网页设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐&#x1f4…

vector类的常用接口说明

目录 一、(constructor)构造函数声明 二、vector的迭代器 三、vector的增删改查 四、insert和erase&#xff0c;以及查找find&#xff08;find不属于vector&#xff0c;是stl提供的算法&#xff09; 五、三种遍历方式 六、源代码 vector是可变大小数组的序列容器 一、(c…