首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RabbitMQ镜像集群搭建

RabbitMQ镜像集群搭建

作者头像
默 语
发布2024-11-20 16:37:50
发布2024-11-20 16:37:50
7670
举报
文章被收录于专栏:JAVAJAVA

前言

代码语言:javascript
复制
集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的。并且实现集群非常的简单,一般互联网大厂都会构建这种镜像集群模式。它和普通集群最大的区别在于 Queue 数据和原数据不再是单独存储在一台机器上,而是同时存储在多台机器上。也就是说每个 RabbitMQ 实例都有一份镜像数据(副本数据)。每次写入消息的时候都会自动把数据同步到多台实例上去,这样一旦其中一台机器发生故障,其他机器还有一份副本数据可以继续提供服务,也就实现了高可用。

Mirror镜像队列,目的是为了保证rabbitmq数据的高可靠性解决方案,主要就是实现数据的同步,一般来讲是2-3个节点实现数据同步(对于100%数据可靠性解决方案一般是3节点,但是基于我们的环境以下使用2个节点为例)。

image.png
image.png

环境

服务器

本文以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 配置

代码语言:javascript
复制
192.168.0.43 node1
192.168.0.44 node2
image.png
image.png

2、修改主机名:以 node1 的修改为例

代码语言:javascript
复制
hostnamectl set-hostname node1

修改完后要进行重启操作

image.png
image.png

3、重启生效 配置完hosts和主机名后需要进行重启才能生效

代码语言:javascript
复制
reboot

配置并重启完确保互相通过服务器名能ping通

image.png
image.png

二、安装RabbitMQ

1、将安装文件保存到服务器的/opt目录下并进入该目录

image.png
image.png

2、执行安装命令 在/opt目录下执行如下命令:

代码语言:javascript
复制
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服务

代码语言:javascript
复制
service rabbitmq-server start

4、查看服务状态

代码语言:javascript
复制
service rabbitmq-server status
image.png
image.png

5、查看集群状态

代码语言:javascript
复制
rabbitmqctl status
image.png
image.png

6、关闭服务 为什么上面要启动这里再关闭呢?因为如果不启动的话就没有.erlang.cookie文件,后面建集群的时候要用到该文件。

代码语言:javascript
复制
service rabbitmq-server stop

注意:两台服务器都需要执行上面的所有操作!!!

三、集群配置

目前两台服务器的RabbitMQ都是处于关闭状态,执行后续操作进行集群配置。 1、复制cookie文件 将主节点(也就是node1服务器)的.erlang.cookie文件复制到slave节点覆盖原有文件,保持两个节点文件内容一致。并保持所有用户和组为 rabbitmq,仅所有者只读。 以下命令在node2(192.168.0.44)服务器执行,也就是slave服务器执行。

代码语言:javascript
复制
# 复制
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服务

代码语言:javascript
复制
service rabbitmq-server start

3、slave 设置 cluster 节点 在 slave服务器输入如下命令:

代码语言:javascript
复制
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@node1
rabbitmqctl start_app

4、查看集群状态 输入如下命令查看集群状态,可以看到三个节点信息。

代码语言:javascript
复制
rabbitmqctl cluster_status
image.png
image.png

5、添加集群同步策略 在任意一台服务器执行如下命令添加集群同步策略。

代码语言:javascript
复制
   # 添加策略
   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、安装管理插件

代码语言:javascript
复制
rabbitmq-plugins enable rabbitmq_management

查看管理端口有没有启动

代码语言:javascript
复制
lsof -i:15672

2、创建一个账户admin和密码

代码语言:javascript
复制
rabbitmqctl add_user admin root

3、账号设置权限 这里我们设置为登录最高权限

代码语言:javascript
复制
rabbitmqctl set_user_tags admin administrator

为设置用户分配操作权限

代码语言:javascript
复制
在rabbitmq中用户级别分为如下几个:
①.administrator:可以登录控制台,查看所有的信息,可以对rabbitmq进行管理
②.monitoring:监控者,登录控制台,指定策略
③.policymaker:策略制定者,登录控制台,指定策略
④.managment:普通管理员,登录控制台

4、角色添加权限 设置admin用户具有访问根目录的所有权限

代码语言:javascript
复制
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
image.png
image.png

5、其他命令 查看角色列表

代码语言:javascript
复制
rabbitmqctl list_users

权限列表

代码语言:javascript
复制
rabbitmqctl list_permissions

部分命令示例:

代码语言:javascript
复制
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 ".*" ".*" ".*"

五、登录查看

后面补上

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 环境
  • 一、修改主机名和host
  • 二、安装RabbitMQ
  • 三、集群配置
  • 四、其他配置
  • 五、登录查看
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档