RabbitMQ负载均衡(2)——HAProxy
欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
欢迎跳转到本文的原文链接:https://honeypps.com/mq/rabbitmq-load-balance-2-haproxy/
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在内的多家知名互联网公司在使用。HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。
安装HAProxy
首先需要去HAProxy的官网下载HAProxy的安装文件,目前最新的版本为:haproxy-1.7.8.tar.gz。下载地址为http://www.haproxy.org/#down,相关文档地址为http://www.haproxy.org/#doc1.7。
将haproxy-1.7.8.tar.gz拷贝至/opt目录下,与RabbitMQ存放在同一个目录中。之后解压缩:
[root@node1 opt]# tar zxvf haproxy-1.7.8.tar.gz
将源码解压之后,需要运行make来将HAProxy编译为可执行程序。在执行make之前需要先选择目标平台,通常对于UNIX系的操作系统可以选择TARGET=generic。下面是详细操作:
[root@node1 opt]# cd haproxy-1.7.8
[root@node1 haproxy-1.7.8]# make TARGET=generic
gcc -Iinclude -Iebtree -Wall -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv
-DTPROXY -DENABLE_POLL
-DCONFIG_HAPROXY_VERSION=\"1.7.8\"
-DCONFIG_HAPROXY_DATE=\"2017/07/07\" \-DBUILD_TARGET='"generic"' \-DBUILD_ARCH='""' \-DBUILD_CPU='"generic"' \-DBUILD_CC='"gcc"' \-DBUILD_CFLAGS='"-O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv"' \-DBUILD_OPTIONS='""' \-c -o src/haproxy.o src/haproxy.c
gcc -Iinclude -Iebtree -Wall -O2 -g -fno-strict-aliasing -Wdeclaration-after-statement -fwrapv...
...
gcc -g -o haproxy src/haproxy.o src/base64.o src/protocol.o src/uri_auth.o ...
编译完目录下有名为“haproxy”的可执行文件。之后再/etc/profile中加入haproxy的路径,内容如下:
export PATH=$PATH:/opt/haproxy-1.7.8/haproxy
最后执行source /etc/profile让此环境变量生效。
配置HAProxy
HAProxy使用单一配置文件来定义所有属性,包括从前端IP到后端服务器。下面展示了用于3个RabbitMQ节点组成集群的负载均衡配置。这3个节点的IP地址分别为192.168.02、192.168.0.3、192.168.0.4,HAProxy运行在192.168.0.9这台机器上。
#全局配置
global#日志输出配置,所有日志都记录在本机,通过local0输出log 127.0.0.1 local0 info#最大连接数maxconn 4096#改变当前的工作目录chroot /opt/haproxy-1.7.8#以指定的UID运行haproxy进程uid 99#以指定的GID运行haproxy进程gid 99#以守护进程方式运行haproxy #debug #quietdaemon#debug#当前进程pid文件pidfile /opt/haproxy-1.7.8/haproxy.pid#默认配置
defaults#应用全局的日志配置log global#默认的模式mode{tcp|http|health}#tcp是4层,http是7层,health只返回OKmode tcp#日志类别tcplogoption tcplog#不记录健康检查日志信息option dontlognull#3次失败则认为服务不可用retries 3#每个进程可用的最大连接数maxconn 2000#连接超时timeout connect 5s#客户端超时timeout client 120s#服务端超时timeout server 120s#绑定配置
listen rabbitmq_cluster 5671#配置TCP模式mode tcp#简单的轮询balance roundrobin#RabbitMQ集群节点配置server rmq_node1 192.168.0.2:5672 check inter 5000 rise 2 fall 3 weight 1server rmq_node2 192.168.0.3:5672 check inter 5000 rise 2 fall 3 weight 1server rmq_node3 192.168.0.4:5672 check inter 5000 rise 2 fall 3 weight 1#haproxy监控页面地址
listen monitor :8100mode httpoption httplogstats enablestats uri /statsstats refresh 5s
在上面的配置中“listen rabbitmq_cluster bind 192.168.0.9.5671”这里定义了客户端连接IP地址和端口号。这里配置的负载均衡算法是roundrobin,注意这里的roundrobin是加权轮询。和RabbitMQ最相关的是“ server rmq_node1 192.168.0.2:5672 check inter 5000 rise 2 fall 3 weight 1”这种,它定义了RabbitMQ服务,每个RabbitMQ服务定义指令包含6个部分:
server <name>:定义RabbitMQ服务的内部标示,注意这里的“rmq_node”是指包含有含义的字符串名称,不是指RabbitMQ的节点名称。
<ip>:<port>:定义RabbitMQ服务的连接的IP地址和端口号。
check inter <value>:定义了每隔多少毫秒检查RabbitMQ服务是否可用。
rise <value>:定义了RabbitMQ服务在发生故障之后,需要多少次健康检查才能被再次确认可用。
fall <value>:定义需要经历多少次失败的健康检查之后,HAProxy才会停止使用此RabbitMQ服务。
weight <value>:定义了当前RabbitMQ服务的权重。
最后一段配置定义的是HAProxy的数据统计页面。数据统计页面包含各个服务节点的状态、连接、负载等信息。在调用:
[root@node1 haproxy-1.7.8]# haproxy -f haproxy.cfg
运行HAProxy之后可以在浏览器上输入http://192.168.0.9:8100/stats来加载相关的页面,如下图所示:
欢迎跳转到本文的原文链接:https://honeypps.com/mq/rabbitmq-load-balance-2-haproxy/
欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。
RabbitMQ负载均衡(2)——HAProxy相关推荐
- 负载均衡之HAProxy——种种
HAProxy原理和配置 目录 1.HAProxy简介 2.haproxy安装和配置说明 proxies配置参数 bind配置 Balance配置 基于cookie的会话绑定 统计接口启用相关的参数 ...
- RabbitMQ负载均衡(3)——Keepalived+HAProxy实现高可用的负载均衡
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- rabbitmq配置文件_RabbitMQ 负载均衡 ( 2 ) — HAProxy
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案,包括Twitter,Reddit,StackOverflow,GitHub在 ...
- RabbitMQ负载均衡(4)——LVS
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- RabbitMQ负载均衡(1)
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- 负载均衡工具 haproxy剖析
haproxy 进阶 应用场景 只是作为负载均衡的工具,至于是什么应用集群都可以,例如:上面的RabbitMQ集群 下面那redis集群再给大家举个例子: 创建+配置haproxy配置文件 #创建ha ...
- 负载均衡工具 haproxy 集群安装部署完整流程
负载均衡是系统设计最常见的一种方式,Nginx.HAProxy.LVS.F5用得比较普遍,不过Nginx只能在HTTP层负载,而HAProxy即可以在7层做负载,也可以在4层做负载,LVS配置有点太麻 ...
- 负载均衡工具 haproxy 单机安装部署完整流程
负载均衡是系统设计最常见的一种方式,Nginx.HAProxy.LVS.F5用得比较普遍,不过Nginx只能在HTTP层负载,而HAProxy即可以在7层做负载,也可以在4层做负载,LVS配置有点太麻 ...
- RabbitMQ负载均衡
面对大量业务访问.高并发请求可以使用高性能的服务器来提升RabbitMQ服务的负载能力.当单机容量达到极限时,我们可以采取集群的策略来对负载能力做进一步的提升,但是这里还存在一个负载不均衡的问题.试想 ...
最新文章
- 5 个流行的用于远程工作和在线会议的开源视频会议工具
- ans_rproxy 说明
- java处理oom_java处理OOM和SOF
- uboot更改gpio电平_ECBM系列教程4:单片机的手和脚——GPIO
- openshift安装部署_OpenShift 4 HOL (1) - 多种方法部署容器化应用
- 联想x250为什么这么贵_外媒:联想笔记本thinkpadX250如何联想thinkpadX250价格及评价...
- 【吐槽】VS2012的安装项目只能用InstallShield Limited Edition
- 数据结构之遍历二叉树
- centos搭建NFS服务器
- Office文档在线预览接口服务器
- Java Date Time 教程-System.currentTimeMillis()
- 如何高效工作,享受品质生活?看看少数派的经验总结吧
- 通过INI文件实现HYDRA各插件间对象共享
- 清除电脑多余垃圾--清除垃圾.bat文件 附保姆级操作步骤
- 【python初学者日记】读入正整数n,判断它是质数还是合数,显示所有的因数(包括1和它自身)
- 使用word完成海报制作说明书
- C64X EDMA优先级及优先级队列
- POJ1608 Banal Tickets
- 关于python程序格式框架以下选项中描述错误的是_关于Python程序格式框架的描述,以下选项中错误的是...
- 如何自己动手为家庭做一套安防监控系统
热门文章
- 利用python进行数据分析第二版pdf百度云_参考《利用Python进行数据分析(第二版)》高清中文PDF+高清英文PDF+源代码...
- Win8Metro(C#)数字图像处理--2.33图像非线性变换
- Hinton神经网络公开课编程练习3 Optimization and generalization
- 基于接缝裁剪的图像压缩 算法导论
- Discovering versions from the identity service failed when creating the password plugin.
- 洛谷 - P3899 [湖南集训]谈笑风生(dfs序+主席树/二维数点)
- CodeForces - 1494E A-Z Graph(构造+思维)
- CodeForces - 487B Strip(线段树+dp+二分)
- POJ - 3614 Sunscreen(贪心/二分图最大匹配-多重匹配/网络流-最大流)
- CodeForces - 353E Antichain(贪心+思维)