欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-27 12:04:28
...

1、集群节点规划

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

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

以上列表五个主机做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

[aaa@qq.com 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)

[aaa@qq.com /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 aaa@qq.com 
server2:rabbitmqctl start_app
​
server3配置同上

6、查看集群的状态

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

[aaa@qq.com ~]# rabbitmqctl start_app
Starting node aaa@qq.com ...
 completed with 3 plugins.
[aaa@qq.com ~]# rabbitmqctl cluster_status
Cluster status of node aaa@qq.com ...
[{nodes,[{disc,[aaa@qq.com]},{ram,[aaa@qq.com,aaa@qq.com]}]},
 {running_nodes,[aaa@qq.com,aaa@qq.com,aaa@qq.com]},
 {cluster_name,<<"aaa@qq.com">>},
 {partitions,[]},
 {alarms,[{aaa@qq.com,[]},{aaa@qq.com,[]},{aaa@qq.com,[]}]}]

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

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

 8、设置镜像队列策略 

   主节点执行

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

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

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

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

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

 

11、总结

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

相关标签: rabbitMq 中间件