第一:配置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  
已有 8 条评论
  1. fgedykjoag
    fgedykjoag :

    多语种文献的引用彰显学术包容性。

  2. jpuccyzhza
    jpuccyzhza :

    文章的叙述风格独特,用词精准,让人回味无穷。

  3. ulsqcsenvz
    ulsqcsenvz :

    独特的构思和新颖的观点,让这篇文章在众多作品中脱颖而出。

  4. shmfafnwde
    shmfafnwde :

    建议引入反面案例,增强辩证性。

  5. uvhlnsltsg
    uvhlnsltsg :

    作者的才华横溢,让这篇文章成为了一篇不可多得的艺术品。

  6. gmjzjcvyho
    gmjzjcvyho :

    作者的布局谋篇匠心独运,让读者在阅读中享受到了思维的乐趣。

  7. qlohixyzet
    qlohixyzet :

    作者的观点新颖且实用,让人在阅读中获得了新的思考和灵感。

  8. snuthkrpdu
    snuthkrpdu :

    情感真挚自然,字里行间传递出强烈的感染力。