第一:配置hosts
172.20.201.141 APP_MQ_141
172.20.201.142 APP_MQ_142
第二:激活管理功能
[rabbit@APP_MQ_141 sbin]$ rabbitmq-plugins enable rabbitmq_management
[rabbit@APP_MQ_142 sbin]$ rabbitmq-plugins enable rabbitmq_management
第三:启动第一个节点
[rabbit@APP_MQ_141 sbin]$ RABBITMQ_NODE_PORT=5672 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15672}]" RABBITMQ_NODENAME=APP_MQ1 rabbitmq-server -detached
第四:同步集群cookie到另一个节点
scp /home/rabbit/.erlang.cookie root@172.20.201.142:/home/rabbit/
第五:启动第二个节点
[rabbit@APP_MQ_142 sbin]$ RABBITMQ_NODE_PORT=5672 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15672}]" RABBITMQ_NODENAME=APP_MQ1 rabbitmq-server -detached
第六:停止第一个节点,添加集群节点
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 stop_app
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 join_cluster APP_MQ1@APP_MQ_142
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 start_app
第七:设置镜像队列策略
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 set_policy ha-all "^" '{"ha-mode":"all"}'
第八:添加用户相关
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 add_user root g7AK28v59XRx81140aiHsm5J
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 set_user_tags root administrator
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 add_user add_user sto_dev R5zMVaP0$^3yzGUo2F6=v2U7
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 set_user_tags sto_dev management
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 set_permissions -p / root "." "." "."
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 set_permissions -p / sto_dev "." "." "."
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ1 delete_user guest
至此第一个MQ集群搭建完成。
参考第一个集群步骤搭建第二个MQ集群
第二个集群只需要修改以下 “端口/集群节点名称” (5682/15682/APP_MQ2)
RABBITMQ_NODE_PORT=5682 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15682}]" RABBITMQ_NODENAME=APP_MQ2 rabbitmq-server -detached
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ2 add_user root g7AK28v59XRx81140aiHsm5J
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ2 set_user_tags root administrator
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ2 add_user add_user sto_dev R5zMVaP0$^3yzGUo2F6=v2U7
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ2 set_user_tags sto_dev management
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ2 set_permissions -p / root "." "." "."
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ2 set_permissions -p / sto_dev "." "." "."
[rabbit@APP_MQ_141 sbin]$ rabbitmqctl -n APP_MQ2 delete_user guest
添加启动/停止/重启脚本
vim /etc/init.d/APP_MQ1
#!/bin/bash
# Name: start / stop APP_MQ
# Version Number: 1.0.0
# Type: Shell
# Language: bash shell
# Date: 2018-08-02
# Author: STO
# Email: xx12306@163.com
################################################################################################
# SysV Init Information
# chkconfig: - 58 74
# description: APP_MQ is the APP_MQ1 daemon.
### BEGIN INIT INFO
# Provides: APP_MQ
# Required-Start: $network $local_fs $remote_fs
# Required-Stop: $network $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Should-Start: $syslog $named
# Should-Stop: $syslog $named
# Short-Description: start and stop APP_MQ
# Description: APP_MQ daemon
SEXEC=/app/rabbitmq/sbin/rabbitmq-server
CEXEC=/app/rabbitmq/sbin/rabbitmqctl
PIDFILE=/app/rabbitmq/data/APP_MQ1.pid
CPORT="5672"
MPORT="15672"
NODENAME="APP_MQ1"
case "$1" in
start)
if [ -f $PIDFILE ];then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting $NODENAME server..."
RABBITMQ_NODE_PORT=$CPORT RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,$MPORT}]" RABBITMQ_NODENAME=$NODENAME $SEXEC -detached
ps aux | grep $NODENAME | grep -v grep | grep -v bash | gawk '{print $2}' >$PIDFILE
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$NODENAME is not Running ..."
else
PID=$(lsof -ti:$MPORT)
echo "Stopping ..."
$CEXEC -n $NODENAME stop_app
kill $PID && sleep 1
while [ -x /proc/${PID} ]
do
echo "Waiting for $NODENAME to shutdown ..."
sleep 1
done
echo "$NODENAME stopped"
rm -f $PIDFILE
fi
;;
status)
if [ -f $PIDFILE ];then
PID=$(cat $PIDFILE)
echo "$NODENAME is running ($PID)";
else
echo "$NODENAME is not running"
fi
;;
restart)
$0 stop
sleep 3
$0 start
;;
*)
echo "Please use start, stop, restart or status as first argument"
;;
esac
添加执行权限以及切换到 rabbit 普通用户启动
chmod +x /etc/init.d/APP_MQ1
[rabbit@APP_MQ_141 sbin]$ /etc/init.d/APP_MQ1 start
多语种文献的引用彰显学术包容性。
文章的叙述风格独特,用词精准,让人回味无穷。
独特的构思和新颖的观点,让这篇文章在众多作品中脱颖而出。
建议引入反面案例,增强辩证性。
作者的才华横溢,让这篇文章成为了一篇不可多得的艺术品。
作者的布局谋篇匠心独运,让读者在阅读中享受到了思维的乐趣。
作者的观点新颖且实用,让人在阅读中获得了新的思考和灵感。
情感真挚自然,字里行间传递出强烈的感染力。