操作系统: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是否漂移
########此文档不适用于阿里云服务器################