CentOS 7上设置RabbitMQ集群
1.最近一直在忙于项目的事情,很少写博客了,一个朋友突然让我写一篇rabbitMq的集群的文章
第1步-设置主机文件
1.我们将在所有服务器上编辑“ / etc / hosts”文件,并将每个服务器IP地址映射为主机名。
vim /etc/hosts
现在,在其中粘贴以下配置。
10.0.15.21 node01
10.0.15.22 node02
10.0.15.22 node03
把之前的主机名隐藏掉
vim /etc/hostname 改成对于的主机名 reboot重启一下 服务器
第2步-安装RabbitMQ服务器
1.将EPEL存储库添加到CentOS 7系统。
sudo yum -y install epel-release
2.现在,使用下面的yum命令将RabbitMQ Server安装到所有节点“ node01”,“ node02”和“ node03”。
sudo yum -y install rabbitmq-server
3.并且在安装完成后,启动RabbitMQ服务,并使它每次在系统引导时启动。
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
如果在这过程中启动报错 可以看一下启动的日记 systemctl status rabbitmq-server.service
如果是链接不是其他几点 可以把上面的ip先切换成内网的ip 一般不会出现问题
第3步-启用RabbitMQ管理插件
在此步骤中,我们将启用RabbitMQ管理插件。这个界面允许您从Web浏览器监视和处理RabbitMQ服务器,该服务器在默认的TCP端口“ 15672”上运行。
通过运行以下命令来启用RabbitMQ管理插件。
sudo rabbitmq-plugins enable rabbitmq_management
确保没有错误,然后重新启动RabbitMQ服务。
sudo systemctl restart rabbitmq-server
并且RabbitMQ管理已启用。查看一下是否启动
ps -ef|grep rabbit
第4步-配置CentOS Firewalld
我们将打开使用RabbitMQ服务器'5672'的端口,用于RabbitMQ管理的端口'15672'和用于RabbitMQ集群的端口'4369,25672'
1.前提服务器的防火墙已经启动了
sudo firewall-cmd --add-port=15672/tcp --permanent
sudo firewall-cmd --add-port=5672/tcp --permanent
sudo firewall-cmd --add-port={4369/tcp,25672/tcp} --permanent
2.现在重新加载firewalld,并检查列表中所有打开的端口。
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
3.自己去后台安全组把对于的端口开起来。CentOS防火墙配置已完成,我们已经准备好设置RabbitMQ集群。
第5步-设置RabbitMQ集群
1.为了设置RabbitMQ集群,我们需要确保所有节点上的'.erlang.cookie'文件都相同。
如果你的ip是外网 使用来自“ node01”的scp命令复制“ .erlang.cookie”文件。
scp /var/lib/rabbitmq/.erlang.cookie root@node02:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@node03:/var/lib/rabbitmq/
如果你使用的ip的内网 自己去node01下面把.erlang.cookie”文件的值复制到
node02,
node03对于的文件下面 文件是隐藏文件 自己 ls -a 去看一下
确保两台服务器上都没有错误。
接下来,我们需要设置“ node02”和“ node03”以加入集群“ node01”。
在“ node02”和“ node03”服务器上运行以下所有命令。
1.重新启动RabbitMQ服务并停止该应用程序。
sudo systemctl restart rabbitmq-server
sudo rabbitmqctl stop_app
如果这个地方重启报错 可能是权限的问题 走一下这命令
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
2.现在,让两个节点上的RabbitMQ服务器加入“ node01”上的集群,然后启动应用程序。
sudo rabbitmqctl join_cluster rabbit@node01
sudo rabbitmqctl start_app
3.完成后,检查RabbitMQ集群状态。
sudo rabbitmqctl cluster_status
其他节点上也 可以运行一下 已创建RabbitMQ群集,其中node01,node02和node03为成员。
第6步-创建新的管理员用户
我们将为RabbitMQ服务器创建一个新的admin用户,并删除默认的“ guest”用户。我们将从“ node01”创建一个新用户,并将其自动复制到集群中的所有节点
1.添加一个名为“ hakase”的新用户,其密码为“ aqwe 123 @ ”。
sudo rabbitmqctl add_user hakase aqwe123@
2.将“ hakase”用户设置为管理员
sudo rabbitmqctl set_user_tags hakase administrator
3.并授予“ hakase”用户修改,写入和读取所有虚拟主机的权限。
sudo rabbitmqctl set_permissions -p / hakase ".*" ".*" ".*"
4.现在删除默认的“ guest”用户。
sudo rabbitmqctl delete_user guest
5.并检查所有可用的用户
sudo rabbitmqctl list_users
步骤7-RabbitMQ设置队列镜像
必须进行此设置,我们需要配置“ ha策略”集群以进行队列镜像和复制到所有集群节点。如果承载队列主服务器的节点发生故障,则只要同步,则最早的镜像将升级为新的主服务器,具体取决于“ ha-mode”和“ ha-params”策略。
1.设置名为“ ha-all”的ha策略,该策略将RabbitMQ集群上的所有队列镜像到集群上的所有节点。
sudo rabbitmqctl set_policy ha-all ".*" '{"ha-mode":"all"}'
2.设置名为“ ha-nodes”的ha策略,该策略的所有队列名称均以“ nodes”开头。将镜像到群集上的两个特定节点“ node02”和“ node03”。
sudo rabbitmqctl set_policy ha-nodes "^nodes\." \
'{"ha-mode":"nodes","ha-params":["rabbit@node02", "rabbit@node03"]}'
3.检查所有可用策略。
sudo rabbitmqctl list_policies;
4.如果要删除该策略,请使用以下命令。
sudo rabbitmqctl clear_policy ha-two
步骤8-测试 打开Web浏览器,然后键入端口为“ 15672”的节点的IP地址。
到此集群已经搭建完,可以打开ip+端口 输入用户名和密码 可以看到各个节点的情况
如果后期要增加集群的设备,只要增加每个集群的hosts里面的配置 把集群的策略删了 从新配置一下就行