CentOS7环境RabbitMQ集群配置管理------------镜像队列集群

1、集群节点规划

ip地址用途主机名
192.168.16.24mq 主节点server1
192.168.16.46mq 从节点server2
192.168.16.59mq 从节点server3
192.168.16.61HAProxy KeepAliveserver4
192.168.16.78HAProxy KeepAliveserver5

注意 : 主机名称根据列表的主机名保持一致,因为我们后面的命令中会使用到所以需要提前设置好。

以上列表五个主机做1.1 ,  1.2调整

 1.1  CentOS7每个主机名调整

      命令:  hostnamectl set-hostname XXXX

 1.2  配置每个主机名的映射

        命令:vi /etc/hosts

                   192.168.16.24 server1

                   192.168.16.46 server2

                   192.168.16.59 server3

2、安装RabbitMQ

   分别 在  192.168.16.24、192.168.16.46、192.168.16.59  安装rabbitMQ 

  2.1  安装Socat ,在线安装依赖环境:
      yum install gcc

      yum install socat

  2.2  安装Erlang

     mkdir /program

     cd  /program

    # 上传 erlang-22.0.7-1.el7.x86_64.rpm 安装包上传

    # 安装
    rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm

[root@server1 program]# rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
警告:erlang-22.0.7-1.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID 6026dfca: NOKEY
错误:依赖检测失败:
libcrypto.so.10(OPENSSL_1.0.2)(64bit) 被 erlang-22.0.7-1.el7.x86_64 需要

   【解决方案】把升级OpenSSL 1.0.1到OpenSSL 1.0.2

       http://rpmfind.net/linux/rpm2html/search.php?query=libcrypto.so.10(OPENSSL_1.0.2)(64bit)&submit=Search+…      &system=&arch=

       在右下角找到并下载

| CentOS 7.7.1908 for x86_64 | openssl-libs-1.0.2k-19.el7.x86_64.rpm |

上传到服务器后,使用rpm进行升级,为了防止和已经有的版本冲突,强制安装(--force)

[root@ /home/kiosk/repod]# rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force
warning: openssl-libs-1.0.2k-16.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:openssl-libs-1:1.0.2k-16.el7 ################################# [100%]

2. 3  安装RabbitMQ

          # 上传 rabbitmq-server-3.7.17-1.el7.noarch.rpm 安装包

         # 安装
        rpm -ivh rabbitmq-server-3.7.17-1.el7.noarch.rpm

2.4  开启管理界面及配置 
      rabbitmq-plugins enable rabbitmq_management

 

3、复制主节点的.erlang.cookie文件到其他所有的从节点

#停止mq的运行  |  systemctl stop rabbitmq-server
/etc/init.d/rabbitmq-server stop
#机器之间通信借助于erlang进行消息传输,所以要求集群中所有节点必须有相同的erlang.cookie
#将主节点的文件同步到到192.168.16.46 和 192.168.16.59中
scp /var/lib/rabbitmq/.erlang.cookie 192.168.16.46:/var/lib/rabbitmq 
scp /var/lib/rabbitmq/.erlang.cookie 192.168.16.59:/var/lib/rabbitmq
​

然后去了46与59上修改权限:分别执行如下
chmod 400 /var/lib/rabbitmq/.erlang.cookie

4、停掉所有的MQ节点然后使用集群的方式启动

主节点:

#停止mq的运行,在启动mq的节点上执行
 
 #centos7   这样启动
 systemctl stop rabbitmq-server
 systemctl start rabbitmq-server

5、将从节点添加到主节点的集群中

# 如果每个节点还没有启动的  先启动 :  systemctl start rabbitmq-server
server2:rabbitmqctl stop_app
#server2节点添加到server1所在集群,--ram 指定消息以内存的方式存储,如果不指定默认为磁盘存储
server2:rabbitmqctl join_cluster --ram rabbit@server1 
server2:rabbitmqctl start_app
​
server3配置同上

6、查看集群的状态

    我这里创建完成之后,之前的用户无法使用了,重新添加用户,参考之前搭建单机版的命令

[root@server2 ~]# rabbitmqctl start_app
Starting node rabbit@server2 ...
 completed with 3 plugins.
[root@server2 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@server2 ...
[{nodes,[{disc,[rabbit@server1]},{ram,[rabbit@server3,rabbit@server2]}]},
 {running_nodes,[rabbit@server3,rabbit@server1,rabbit@server2]},
 {cluster_name,<<"rabbit@server2">>},
 {partitions,[]},
 {alarms,[{rabbit@server3,[]},{rabbit@server1,[]},{rabbit@server2,[]}]}]

7、访问集群中的任何一个节点的控制台查看集群情况

 8、设置镜像队列策略 

   主节点执行

# 将所有队列设置为镜像队列,即队列会被复制到各个节点:  主节点执行
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

9、在管控台创建一个队列然后发送一条消息查看其他节点是否接收到

10、修改集群信息【可选项】

#在任何一个节点上执行该命令修改集群的名字
rabbitmqctl set_cluster_name rabbitmq_cd_itcast 
#在非server2的节点上执行可以移除server2节点
rabbitmqctl forget_cluster_node rabbit@server2 
# 修改了信息以后可以查看修改是否成功
rabbitmqctl cluster_status

 

11、总结

       到此为止我们的镜像队列的集群就搭建完成了,主要注意.erlang.cookie文件的同步和集群命令的书写

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值