准备三台服务器案例使用三台腾讯云服务器
43.138.xxx.xxx node1
82.157.xxx.xxx node2
39.105.xxx.xxx node3
结构图
image-1660240572846
查看三台服务器的主机名称,并分别修改主机名为 node1/2/3vim /etc/hostname 修改主机名称修改HOST:注意:使用外网服务器时需要注意IP地址的填写在三台服务器分别执行当前命令 vim /etc/hosts 注意:如果是三台外网服务器则不能按照该写法 43.138.xxx.xxx node1 82.157.xxx.xxx node2 39.105.xxx.xxx node3例如 在node1节点中的中的hosts文件应该写为Node1的内网IP node1 82.157.xxx.xxx node2 39.105.xxx.xxx node3 查看内网IP : ifconfig -a
image-1660241049778
RabbitMQ集群需要在每个从节点上使用与主节点一样的ErLang Cookie,因此需要使用远程操作命令,将主节点的Cookies复制给从节点(从节点服务器有配置root用户需要输入对应密码)
在主节点中执行如下命令scp /var/lib/rabbitmq/.erlang.cookie root@node2:/var/lib/rabbitmq/.erlang.cookie scp /var/lib/rabbitmq/.erlang.cookie root@node3:/var/lib/rabbitmq/.erlang.cookie组成集群服务
为集群所有主机(node1/2/3)执行组成集群命令rabbitmq-server -detached
分别在Node2/3中执行如下命令1、停止MQ服务 rabbitmqctl stop_app
1、重置MQ
rabbitmqctl reset
3、加入主节点 rabbitmqctl join_cluster rabbit@node1
4、重启服务 rabbitmqctl start_app(只启动应用服务)
rabbitmqctl cluster_status
1、停止从节点服务并重置
rabbitmqctl stop_app
rabbitmqctl reset
2、主节点上移除从节点
rabbitmqctl forget_cluster_node rabbit@主机名称
例如:rabbitmqctl forget_cluster_node rabbit@node2 就是移除从节点node2
参数信息Name: policy的名称Pattern: queue的匹配模式(正则表达式)Definition: 镜像定义,包括三个部分 ha-mode,ha-params,ha-sync-mode ha-mode: 指明镜像队列的模式,有效值为 all/exactly/nodes all表示在集群所有的节点上进行镜像 exactly表示在指定个数的节点上进行镜像,节点的个数由ha-params指定,个数包含主机 nodes表示在指定的节点上进行镜像,节点名称通过ha-params指定 ha-params: ha-mode模式需要用到的参数 ha-sync-mode: 镜像队列中消息的同步方式,有效值为 automatic、manuallyPriority: 可选参数, policy的优先级
HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
1、安装依赖
yum install -y gcc wget
2、下载HaProxy
wget http://www.haproxy.org/download/1.6/src/haproxy-1.6.5.tar.gz
3、解压HaProxy
tar -zxvf haproxy-1.6.5.tar.gz -C /usr/local
4、安装HaProxy
cd /usr/local/haproxy-1.6.5
make TARGET=linux31 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
mkdir /etc/haproxy
5、赋权
groupadd -r -g 149 haproxy
useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy
6、创建配置文件
touch /etc/haproxy/haproxy.cfg
#logging options
global
log 127.0.0.1 local0 info
maxconn 5120
chroot /usr/local/haproxy
uid 99
gid 99
daemon
quiet
nbproc 20
pidfile /var/run/haproxy.pid
defaults
log global
#使用4层代理模式,”mode http”为7层代理模式
mode tcp
#if you set mode to tcp,then you nust change tcplog into httplog
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5s
##客户端空闲超时时间为 60秒 则HA 发起重连机制
clitimeout 60s
##服务器端链接超时时间为 15秒 则HA 发起重连机制
srvtimeout 15s
#front-end IP for consumers and producters
listen rabbitmq_cluster
# 代理的端口号
bind 0.0.0.0:5678
#配置TCP模式
mode tcp
#balance url_param userid
#balance url_param session_id check_post 64
#balance hdr(User-Agent)
#balance hdr(host)
#balance hdr(Host) use_domain_only
#balance rdp-cookie
#balance leastconn
#balance source //ip
#简单的轮询
balance roundrobin
#rabbitmq集群节点配置 #inter 每隔五秒对mq集群做健康检查, 2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制
server node1 43.138.xxx.xxx:5672 check inter 5000 rise 2 fall 2
server node2 82.157.xxx.xxx:5672 check inter 5000 rise 2 fall 2
server node3 43.142.xxx.xxx:5672 check inter 5000 rise 2 fall 2
#配置haproxy web监控,查看统计信息,152机器bind的就是192.168.226.152:8100
listen stats
bind 0.0.0.0:8100
mode http
option httplog
stats enable
#设置haproxy监控地址为http://localhost:8100/rabbitmq-state
stats uri /rabbitmq-state
stats refresh 5s
1、启动HaProxy
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
2、查看HaProxy状态
ps -ef | grep haproxy
3、访问Web控制台
http://43.138.xxx.xxx:8100/rabbitmq-state
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有