keepalived+rabbitmq镜像集群搭建
操作系统:centos7
为方便集群管理配置,需要对两台服务器进行hosts解析 vim /etc/hosts 添加如下: 192.168.3.65 A 192.168.2.164 B
一定不要加rabbit@ 并测试是否可以通过主机名ping通
安装erlang插件 rpm -Uvh http://www.rabbitmq.com/releases/erlang/erlang-18.1-1.el7.centos.x86_64.rpm
查看系统是否自带mq,如果没有则安装 yum list | grep rabbitmq wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm yum -y install rabbitmq-server-3.6.6-1.el7.noarch.rpm
测试rabbitmq是否可以正常启动,并查看状态 systemctl start rabbitmq-server systemctl status rabbitmq-server systemctl stop rabbitmq-server
修改配置文件 cd /etc/rabbitmq/ cp /usr/share/doc/rabbitmq-server-3.6.6/rabbitmq.config.example ./rabbitmq.config 根据具体需求进行参数修改
安装其他所需插件 cd /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.6/ wget https://dl.bintray.com/rabbitmq/community-plugins/rabbitmq_delayed_message_exchange-0.0.1.ez 设置开机自启动 rabbitmq-plugins enable rabbitmq_management systemctl enable rabbitmq-server rabbitmq-plugins enable rabbitmq_delayed_message_exchange 查看端口是否正常 netstat -tnlp 添加账户并设置管理员账户 rabbitmqctl add_user user 123456 rabbitmqctl set_user_tags user administrator
以下为集群配置: RabbitMQ的集群是依赖erlang集群,而erlang集群是通过这个cookie进行通信认证的,因此我们做集群的第一步就是统一cookie。 路径在$HOME中或者在/var/lib/rabbitmq中,文件名称为.erlang.cookie cat /var/lib/rabbitmq/.erlang.cookie 查看是否统一 scp /var/lib/rabbitmq/.erlang.cookie root@ip:/var/lib/rabbitmq/.erlang.cookie 使两台mq的cookie统一 设置权限为600 chmod 600 .erlang.cookie 查看集群状态 rabbitmqctl cluster_status 加入集群 rabbitmqctl stop_app rabbitmqctl join_cluster rabbit@B rabbitmqctl start_app 查看集群状态是否正常并打开网页管理页面查看nodes
设置为镜像模式 rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:“all”}’ 在另一台查看策略 [root@F ~]# rabbitmqctl list_policies Listing policies … / ha-all all ^ {“ha-mode”:“all”} 0
配置keepalived 安装 yum -y install keepalived ipvsadm nmap 配置keepalived配置文件 global_defs { notification_email { } notification_email_from root@local smtp_server localhost smtp_connect_timeout 30 }
vrrp_script chk_rabbitmq { script “/etc/keepalived/scripts/rabbitmq_check.sh” interval 2 weight 2 }
vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.3.88/24 dev eth0 } track_script { chk_rabbitmq }
} 从节点将state MASTER 改为 BACKUP 权重按实际情况修改
写检测脚本 #!/bin/bash k1=/usr/bin/nmap -sS 127.0.0.1 -p 6543 | grep 6543 | awk {printf $2} if [ “$k1” != “open” ]; then systemctl restart rabbitmq-server fi Q1=/usr/bin/nmap -sS 127.0.0.1 -p 6543 | grep 6543 | awk {printf $2} if [ “$Q1” != “open” ]; then systemctl stop keepalived fi
systemctl start keepalived 启动后停止主节点mq测试VIP是否漂移
########此文档不适用于阿里云服务器################
