haproxy+keepalived负载均衡和高可用
概述
- 多个rabbitmq服务形成集群,由haproxy来做负载均衡,haproxy会暴露出来一个端口,客户端可以通过haproxy所在的服务器的ip+端口来进行对rabbitmq的使用。
- 但是如果是一个haproxy的话,当haproxy出现单点故障,那么整个rabbitmq就会出现不可用的场景,所以要对haproxy做主备,主主等操作来实现高可用
- 通过keepalived实现haproxy的主备关系,当其中一台haproxy出现故障宕机了,另一台haproxy可以继续支持我们服务的运行,从而达到高可用的效果
haproxy负载均衡
-
准备条件
- 三台已经集群的rabbitmq服务器
- 172.16.140.130:5672
- 172.16.140.131:5672
- 172.16.140.132:5672
- 安装haproxy的服务器172.16.140.130:5672
-
安装haproxy
yum install -y haproxy
-
创建配置文件
mkdir -p /usr/local/config/haproxy
cd /usr/local/config/haproxy
vim haproxy.cfg
-
添加配置内容
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
defaults
log global
mode tcp
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
timeout connect 5s
timeout client 120s
timeout server 120s
listen rabbitmq_cluster
bind 0.0.0.0:5671
mode tcp
balance roundrobin
server rabbitmq_node1 172.16.140.130:5672 check inter 5000 rise 2 fall 2
server rabbitmq_node2 172.16.140.131:5672 check inter 5000 rise 2 fall 2
server rabbitmq_node3 172.16.140.132:5672 check inter 5000 rise 2 fall 2
listen monitor
bind 0.0.0.0:8100
mode http
option httplog
stats enable
stats uri /stats
stats refresh 5s
-
启动haproxy
haproxy -f /usr/local/config/haproxy/haproxy.cfg
-
在代码中连接rabbitmq需要填写的地址为haproxy所在的地址,端口号为rabbitmq_cluster
中配置的地址
-
可以通过monitor中8100的端口查看当前服务的状态
keepalived高可用
在使用了haproxy之后,我们达成了负载均衡的目的,但是如果只是一个haproxy的话,那么当haproxy宕机,那么整个rabbitmq都会处于不可用状态,所以我们需要使用keepalived来实现主备模式
-
准备工作
- 三台已经集群的rabbitmq服务器
- 172.16.140.130:5672
- 172.16.140.131:5672
- 172.16.140.132:5672
- 两台安装haproxy的服务器
- 172.16.140.130:5672
- 172.16.140.131:5672
-
效果预期:对两台haproxy提供主备的模式
-
安装keepalived
yum install -y keepalived
-
安装完成后,在/etc/keepalived/
中有文件keepalived.conf
文件,将原有的备份,新建一份配置文件。
-
配置配置文件
global_defs {
router_id lb01
}
vrrp_instance VI_HAPROXY {
state MASTER
interface ens160
virtual_router_id 51
priority 150
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.140.167
}
}
-
启动keepalived
systemctl start keepalived
systemctl enable keepalived
-
备机上也需要操作上面步骤,不同的是配置文件
global_defs {
router_id lb02
}
vrrp_instance VI_1 {
state BACKUP
interface ens160
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.140.167
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)