关于RabbitMQ集群的实现方法
1 集群
1.1 环境准备
- (1)克隆虚拟机
- 虚拟机管理界面,
右键虚拟机 -> 管理 -> 克隆
- (2)修改机器hostname
1
2# 修改两台机器hostname用于区分
vim /etc/hostname
- (3)保存主机地址
1
2
3
4
5# 将另外机器的ip地址保留,方便通讯
vim /ect/hosts
# 格式
ip地址 hostname
- (4)确保机器cookies文件一致
1
2# 确定好以一台主机为准,将该机器文件复制到其他机器上
scp /var/lib/rabbitmq/.erlang.cookie root@主机名:/var/lib/rabbitmq/.erlang.cookie
- (5)rabbitmq重启
1
rabbitmq-server -detached
1.2 集群
- (1)加入集群
1
2
3
4
5
6
7
8
9
10
11# 暂停rabbitmq_app
rabbitmqctl stop_app
# 重置
rabbitmqctk reset
# 集群加入到其他rabbitmq
rabbitmqctl join_cluster rabbit@主机名
# 启动rabbitmq_app
rabbitmqctl start_app
- (2)查看集群状态
1
rabbitmqctl cluster_status
- (3)集群设置用户
1
2
3
4
5
6
7
8# 创建账号
rabbitmqctl add_user 用户名 密码
# 设置用户角色
rabbitmqctl set_user_tags 用户名 角色(administrator)
# 设置用户权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
1.3 脱离集群
- (1)解除
1
2
3
4
5
6
7
8
9
10
11# 停止rabbitmq app
rabbitmqctl stop_app
# 重置
rabbitmqctl reset
# 开启rabbitmq app
rabbitmqctl start_app
# 解除集群(主集群机器运行)
rabbitmqctl forget_cluster_node rabbit@主机名
2 镜像队列
2.1 概念
- 镜像队列: 将主服务创建的队列,和消息备份到另一个从服务上,该从服务的队列就为镜像队列,避免主服务宕机,导致数据丢失以及服务不可用
2.2 实现方法
3 负载均衡
- 此为nginx的内容,故不多细说,有需去查看之前nginx文章
4 Federation
4.1 概念
- Federation: 翻译过来为“联合”,可以理解为同步。例:为了减少网络延迟,不同地区部署不同的rabbitmq,但需要这些不同地区的rabbitmq的数据进行同步,否则更改地区之后,数据不一致。
4.2 步骤
- (1)插件开启
1
2rabbitmq-plugins enable rabbitmq_federation
rabbitmq-plugins enable rabbitmq_federation_management
- (2)添加同步数据上游
- 上游数据会同步到下游
- (3)配置上游(连接)
- federation交换机或队列都可以(2者选其1)
5 Shovel
5.1 概念
- Shovel: 翻译为“铲子”。功能和federation一样,也是数据同步。只是操作步骤比federation简单明了,只需配置源和目的地,会自动将源的消息同步到目的地中
5.2 配置
- (1)插件开启
1
2rabbitmq-plugins enable rabbitmq_shovel
rabbitmq-plugins enable rabbitmq_shovel_management
- (2)配置源与目的地