Linux系统的keepalived+RabbitMQ的高可用实现
本文是在上篇的基础上实现keepalived + RabbitMQ的高可用实现。
上篇文章链接:Linux系统的keepalived+tomcat+redis+other的高可用实现
1.使用镜像安装rabbitMQ
docker pull hub.c.163.com/library/rabbitmq:3-management
注意:标签为3-management
,使用默认最新的无法连接浏览器的可视化界面。
2.运行镜像,生成容器
docker run -d --name rabbitmq --publish 15672:15672 hub.c.163.com/library/rabbitmq:3-management
3.创建check_rabbitmq_port.sh脚本文件
文件位置为/etc/keepalived
:
#!/bin/bash
count=`nmap -p 15672 127.0.0.1|grep open|wc -l`
if [ $count != 0 ]
then
exit 0
else
exit 1
fi
rabbitmq的端口号为15672
。
4.配置keepalived.conf文件
(1)引入脚本
vrrp_script chk_http3_port {
script "/etc/keepalived/check_rabbitmq_port.sh"
interval 1
weight -20
}
(2)创建vrrp模块
vrrp_instance VI_3 {
state MASTER
interface eth0
virtual_router_id 53
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.50.224/24
}
track_script {
chk_http3_port
}
priority 90 ##主服务100 备服务90只要小于100就可以
}
(3)完整的keepalived.conf文件
包含上篇文章中,redis,tomcat,以及本篇文章rabbitmq的配置文件内容:
vrrp_script chk_http1_port {
script "/etc/keepalived/check_redis_port.sh"
interval 1
weight -20
}
vrrp_script chk_http2_port {
script "/etc/keepalived/check_tomcat_port.sh"
interval 1
weight -20
}
vrrp_script chk_http3_port {
script "/etc/keepalived/check_rabbitmq_port.sh"
interval 1
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.50.222/24
}
track_script {
chk_http1_port
}
priority 90 ##主服务100 备服务90只要小于100就可以
}
vrrp_instance VI_2 {
state MASTER
interface eth0
virtual_router_id 52
advert_int 1
authentication {
auth_type PA
auth_pass 123
}
virtual_ipaddress {
192.168.50.223/24
}
track_script {
chk_http2_port
}
priority 90 ##主服务100 备服务90只要小于100就可以
}
vrrp_instance VI_3 {
state MASTER
interface eth0
virtual_router_id 53
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.50.224/24
}
track_script {
chk_http3_port
}
priority 90 ##主服务100 备服务90只要小于100就可以
}
惯例:主机的priority属性为100,备机为90.
5.修改check_rabbitmq_port.sh脚本文件的权限
使用 ls -l
命令查看该脚本文件的权限。如果无执行权限,即执行以下命令,修改文件的权限至最高:
chmod 777 check_rabbitmq_port.sh
6.可视化界面
启动rabbitmq容器:docker restart rabbitmq容器id
.
浏览器使用本机ip:端口号
进入可视化界面,比如我的本机ip为192.168.50.34
,端口号默认都是15672
,所以浏览器访问192.168.50.34:15672
地址即可。
登录的账号密码,默认都为guest
7.测试
分别启动主备机的keepalived,分别启动主备机的rabbitmq,进入浏览器访问可视化界面。
启动命令:
主机ip一个界面,备机ip一个界面,keepalived虚拟ip一个界面。
登录界面:
可视化界面
根据文件名查看主备机切换
最开始时,虚拟ip访问的页面与主机访问页面的该文件名一致,然后停止主机的rabbitmq,刷新页面。
查看该地址是否切换到备机的地址。如果切换,配置成功。