背景:有同事反馈 mq的集群总是跑着,时间久了有些莫名其妙的问题,然后晚上上手重启了一下,一重启,还真的不能用了,没办法了,只能默默的填坑了,谁让是我来做重启呢,反正前期都没啥,就是到后面到各节点执行 rabbitmqctl stop_app 的时候报错了,报错如下图了,其实图上说的很清楚了,就是其他的节点和主节点的 .erlang.cookier 不一致,我是用脚本直接跑的,虽然每次都主节点推过去覆盖了,但是我被很多百度的垃圾文章骗了,因为他们只是单纯的说了拷过去,这里有个很坑的地方,就是在主节点产生了cookier文件后,所有的节点都要停止,然后再把 .erlang.cookier文件放过去覆盖,然后再启动所有节点的mq,掌握了这个顺序就没事了,最后是我的一键脚本,当然我只是拿来做个记录方便我自己使用了
一键重启rabbitmq集群:
#!/bin/bash
. /etc/init.d/functions
############################### ########################################################
time=`date +"%Y%M%d%T"`
SSHPASS="/root/restart_rabbitmq_all/bin/sshpass"
MNESIA_NODE1="/var/lib/rabbitmq"
MNESIA_NODE1="/var/lib/rabbitmq"
MNESIA_NODE1="/var/lib/rabbitmq"
NODE2_IP="10.104.120.159"
NODE3_IP="10.104.120.160"
######################### ###########################################
systemctl stop rabbitmq-server
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "systemctl stop rabbitmq-server"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "systemctl stop rabbitmq-server"
pid_node1=` ps -ef | grep rabbitmq | grep rabbit-node |grep -v grep |wc -l`
pid_node2=`$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "ps -ef | grep rabbitmq | grep rabbit-node |grep -v grep |wc -l"`
pid_node3=`$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "ps -ef | grep rabbitmq | grep rabbit-node |grep -v grep |wc -l"`
if [ ${pid_node1} -eq 0 ] && [ ${pid_node2} -eq 0 ] && [ ${pid_node3} -eq 0 ]
then
echo "mq cluster stopping ok!!!!!"
else
echo "stopping error !!!!!!"
fi
############################ ######################################
#cd ${MNESIA_NODE1} && rm -rf msg_stores && rm -rf quorum && rm -f *
rm -f /var/lib/rabbitmq/.erlang.cookie
rm -rf /var/lib/rabbitmq/mnesia
#$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "cd $MNESIA_NODE2; rm -rf msg_stores && rm -rf quorum && rm -f *"
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "rm -f /var/lib/rabbitmq/.erlang.cookie"
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "rm -rf /var/lib/rabbitmq/mnesia"
#$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "cd $MNESIA_NODE3; rm -rf msg_stores && rm -rf quorum && rm -f *"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "rm -f /var/lib/rabbitmq/.erlang.cookie"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "rm -rf /var/lib/rabbitmq/mnesia"
############################ #################################################
systemctl start rabbitmq-server
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "systemctl start rabbitmq-server"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "systemctl start rabbitmq-server"
pid_node1=` ps -ef | grep rabbitmq | grep rabbit-node |grep -v grep |wc -l`
pid_node2=`$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "ps -ef | grep rabbitmq | grep rabbit-node |grep -v grep |wc -l"`
pid_node3=`$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "ps -ef | grep rabbitmq | grep rabbit-node |grep -v grep |wc -l"`
if [ ${pid_node1} -eq 1 ] && [ ${pid_node2} -eq 1 ] && [ ${pid_node3} -eq 1 ]
then
echo "mq cluster starting ok!!!!!"
else
echo "starting error !!!!!!"
fi
systemctl stop rabbitmq-server
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "systemctl stop rabbitmq-server"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "systemctl stop rabbitmq-server"
############################
chmod 777 /var/lib/rabbitmq/.erlang.cookie
scp -rp /var/lib/rabbitmq/.erlang.cookie root@${NODE2_IP}:/var/lib/rabbitmq/
scp -rp /var/lib/rabbitmq/.erlang.cookie root@${NODE3_IP}:/var/lib/rabbitmq/
chmod 400 /var/lib/rabbitmq/.erlang.cookie
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "chmod 400 /var/lib/rabbitmq/.erlang.cookie"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "chmod 400 /var/lib/rabbitmq/.erlang.cookie"
echo "copy .erlang.cookie ok !!! "
systemctl start rabbitmq-server
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "systemctl start rabbitmq-server"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "systemctl start rabbitmq-server"
########################## ###############################
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "rabbitmqctl stop_app"
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "rabbitmqctl join_cluster rabbit@rabbit-node1"
$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no "rabbitmqctl start_app"
echo "mq node2 adding !!!"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "rabbitmqctl stop_app"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "rabbitmqctl join_cluster rabbit@rabbit-node1"
$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no "rabbitmqctl start_app"
echo "mq node3 adding !!!"
######################### ########################################
#### ########
rabbitmqctl status
rabbitmqctl add_user mqadmin mqadmin
rabbitmqctl set_user_tags mqadmin administrator
rabbitmqctl add_vhost /dev
rabbitmqctl set_permissions -p /dev mqadmin ".*" ".*" ".*"
rabbitmqctl set_permissions -p / mqadmin ".*" ".*" ".*"
##### ########
#$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no " rabbitmqctl status "
#$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no " rabbitmqctl add_user mqadmin mqadmin "
#$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no " rabbitmqctl set_user_tags mqadmin administrator "
#$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no " rabbitmqctl add_vhost /dev "
#$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no " rabbitmqctl set_permissions -p /dev mqadmin ".*" ".*" ".*" "
#$SSHPASS -p root ssh root@${NODE2_IP} -o StrictHostKeyChecking=no " rabbitmqctl set_permissions -p / mqadmin ".*" ".*" ".*" "
#
#
##### ########
#$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no " rabbitmqctl status "
#$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no " rabbitmqctl add_user mqadmin mqadmin "
#$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no " rabbitmqctl set_user_tags mqadmin administrator "
#$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no " rabbitmqctl add_vhost /dev "
#$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no " rabbitmqctl set_permissions -p /dev mqadmin ".*" ".*" ".*" "
#$SSHPASS -p root ssh root@${NODE3_IP} -o StrictHostKeyChecking=no " rabbitmqctl set_permissions -p / mqadmin ".*" ".*" ".*" "