RabbitMQ镜像集群搭建
- 前言
- 环境
- 服务器
- 程序包
- 一、修改主机名和host
- 二、安装RabbitMQ
- 三、集群配置
- 四、其他配置
- 五、登录查看
博主 默语带您 Go to New World.
✍ 个人主页—— 默语 的博客👦🏻
《java 面试题大全》
《java 专栏》
🍩惟余辈才疏学浅,临摹之作或有不妥之处,还请读者海涵指正。☕🍭
《MYSQL从入门到精通》数据库是开发者必会基础之一~
🪁 吾期望此文有资助于尔,即使粗浅难及深广,亦备添少许微薄之助。苟未尽善尽美,敬请批评指正,以资改进。!💻⌨
前言
集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的。并且实现集群非常的简单,一般互联网大厂都会构建这种镜像集群模式。它和普通集群最大的区别在于 Queue 数据和原数据不再是单独存储在一台机器上,而是同时存储在多台机器上。也就是说每个 RabbitMQ 实例都有一份镜像数据(副本数据)。每次写入消息的时候都会自动把数据同步到多台实例上去,这样一旦其中一台机器发生故障,其他机器还有一份副本数据可以继续提供服务,也就实现了高可用。
Mirror镜像队列,目的是为了保证rabbitmq数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是2-3个节点实现数据同步(对于100%数据可靠性解决方案一般是3节点,但是基于我们的环境以下使用2个节点为例)。
环境
服务器
本文以2个RabbitMQ搭建镜像集群为例,2个节点的IP信息如下:
IP | 主机名 | 类型 |
---|---|---|
192.168.0.43 | node1 | cluster |
192.168.0.44 | node2 | slave |
程序包
RabbitMQ安装包下载地址
- socat-1.7.3.2-2.el7.x86_64.rpm
- rabbitmq-server-3.8.3-1.el7.noarch.rpm
- erlang-23.1.5-1.el7.x86_64.rpm
一、修改主机名和host
两台主机都需要做如下的主机名相关配置。
1、修改 /etc/hosts 文件,添加以下主机 IP 配置
192.168.0.43 node1
192.168.0.44 node2
2、修改主机名:以 node1 的修改为例
hostnamectl set-hostname node1
修改完后要进行重启操作
3、重启生效
配置完hosts和主机名后需要进行重启才能生效
reboot
配置并重启完确保互相通过服务器名能ping通
二、安装RabbitMQ
1、将安装文件保存到服务器的/opt目录下并进入该目录
2、执行安装命令
在/opt目录下执行如下命令:
sudo rpm -i erlang-23.1.5-1.el7.x86_64.rpm
sudo rpm -i socat-1.7.3.2-2.el7.x86_64.rpm
sudo rpm -i rabbitmq-server-3.8.3-1.el7.noarch.rpm
3、启动RabbitMQ
安装完成后可使用如下命令启动RabbitMQ服务
service rabbitmq-server start
4、查看服务状态
service rabbitmq-server status
5、查看集群状态
rabbitmqctl status
6、关闭服务
为什么上面要启动这里再关闭呢?因为如果不启动的话就没有.erlang.cookie文件,后面建集群的时候要用到该文件。
service rabbitmq-server stop
注意:两台服务器都需要执行上面的所有操作!!!
三、集群配置
目前两台服务器的RabbitMQ都是处于关闭状态,执行后续操作进行集群配置。
1、复制cookie文件
将主节点(也就是node1服务器)的.erlang.cookie文件复制到slave节点覆盖原有文件,保持两个节点文件内容一致。并保持所有用户和组为 rabbitmq,仅所有者只读。
以下命令在node2(192.168.0.44)服务器执行,也就是slave服务器执行。
# 复制
scp root@192.168.0.43:/var/lib/rabbitmq/.erlang.cookie /var/lib/rabbitmq/
# 修改用户组
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
# 仅只有所有者可读
chmod 400 /var/lib/rabbitmq/.erlang.cookie
2、启动两个节点的RabbitMQ服务
service rabbitmq-server start
3、slave 设置 cluster 节点
在 slave服务器输入如下命令:
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app
4、查看集群状态
输入如下命令查看集群状态,可以看到三个节点信息。
rabbitmqctl cluster_status
5、添加集群同步策略
在任意一台服务器执行如下命令添加集群同步策略。
# 添加策略
sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
# 查看策略
sudo rabbitmqctl list_policies
- ha-mode: all,在集群中所有的节点上进行镜像
- ha-sync-mode: automatic,在集群节点宕机重新连接后自动同步
四、其他配置
1、安装管理插件
rabbitmq-plugins enable rabbitmq_management
查看管理端口有没有启动
lsof -i:15672
2、创建一个账户admin和密码
rabbitmqctl add_user admin root
3、账号设置权限
这里我们设置为登录最高权限
rabbitmqctl set_user_tags admin administrator
为设置用户分配操作权限
在rabbitmq中用户级别分为如下几个:
①.administrator:可以登录控制台,查看所有的信息,可以对rabbitmq进行管理
②.monitoring:监控者,登录控制台,指定策略
③.policymaker:策略制定者,登录控制台,指定策略
④.managment:普通管理员,登录控制台
4、角色添加权限
设置admin用户具有访问根目录的所有权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
5、其他命令
查看角色列表
rabbitmqctl list_users
权限列表
rabbitmqctl list_permissions
部分命令示例:
rabbitmqctl add_user 账号 密码
rabbitmqctl set_user_tags 账号 administrator 将账号赋予administrator账号类型
rabbitmqctl change_password Username Newpassword 修改密码
rabbitmqctl delete_user Username 删除用户
rabbitmqctl list_users 查看用户清单
rabbitmqctl.bat set_permissions -p / 用户名 ".*" ".*" ".*" 为用户设置administrator角色
rabbitmqctl.bat set_permissions -p / root ".*" ".*" ".*"
五、登录查看
后面补上
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥
如对本文内容有任何疑问、建议或意见,请联系作者,作者将尽力回复并改进📓;(联系微信:Solitudemind )
点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。