搭建RabbitMQ集群

节点规划:
可以参照下图来规划自己的节点

一、修改主机名,添加映射,关闭防火墙
每一个节点根据自己的主机名规划配置
我的节点与主机名

10.30.59.188 rabbitmq1
10.30.59.219 rabbitmq2
10.30.59.248 rabbitmq3

rabbitmq1节点:

[root@localhost ~]# hostnamectl set-hostname rabbitmq1
[root@localhost ~]# bash
[root@rabbitmq1 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.30.59.188 rabbitmq1
10.30.59.219 rabbitmq2
10.30.59.248 rabbitmq3
~
~
~
"/etc/hosts" 5L, 227C written
[root@rabbitmq1 ~]#

rabbitmq2节点:

[root@master1 opt]# hostnamectl set-hostname rabbitmq2
[root@master1 opt]# bash
[root@rabbitmq2 opt]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.30.59.188 rabbitmq1
10.30.59.219 rabbitmq2
10.30.59.248 rabbitmq3
~
~
~
"/etc/hosts" 5L, 227C written

rabbitmq3节点:

[root@localhost ~]# hostnamectl set-hostname rabbitmq3
[root@localhost ~]# bash
[root@rabbitmq3 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.30.59.188 rabbitmq1
10.30.59.219 rabbitmq2
10.30.59.248 rabbitmq3
~
~
~
"/etc/hosts" 5L, 227C written

三个节点都执行的:

systemctl stop firewalld && systemctl disable  firewalld
setenforce 0

二、配置yum源

三个节点均使用提供的rabbitmq-repo.tar.gz的压缩包,上传至虚拟机的/root目录下,解压并放在/opt目录下,进入/etc/yum.repos.d目录下,将原来的repo文件移除,新建local.repo文件并编辑内容。可以使用ftp
rabbitmq1节点:
1、先配好yum源

[root@localhost ~]# ls
anaconda-ks.cfg                                  rabbitmq-repo.tar.gz
[root@localhost ~]# tar -zxvf rabbitmq-repo.tar.gz  -C /opt/
#此处省略
[root@localhost ~]# cd /opt/
[root@localhost opt]# ls
centos rabbitmq-repo
[root@localhost opt]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1[rabbit]
name=rabbit
baseurl=file:///opt/rabbitmq-repo
gpgcheck=0
enabled=1
~
~
"/etc/yum.repos.d/local.repo" 17L, 224C written
[root@localhost opt]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: centos mariadb rabbit
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@localhost opt]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
centos                                                                                                | 3.6 kB  00:00:00
mariadb                                                                                               | 2.9 kB  00:00:00
rabbit                                                                                                | 2.9 kB  00:00:00
(1/4): centos/group_gz                                                                                | 155 kB  00:00:00
(2/4): centos/primary_db                                                                              | 2.8 MB  00:00:00
(3/4): rabbit/primary_db                                                                              |  35 kB  00:00:00
(4/4): mariadb/primary_db                                                                             |  66 kB  00:00:00
repo id                                                    repo name                                                   status
centos                                                     centos                                                      3,723
mariadb                                                    mariadb                                                        91
rabbit                                                     rabbit                                                         26
repolist: 3,840
[root@localhost opt]#
[root@localhost opt]#
[root@localhost opt]# cd
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                    repo name                                                   status
centos                                                     centos                                                      3,723
rabbit                                                     rabbit                                                         26
repolist: 3,749
[root@localhost ~]#

然后ftp安装将yum源共享给另两个节点

[root@localhost ~]# yum install vsftpd  -y
[root@localhost ~]# echo anon_root=/opt >> /etc/vsftpd/vsftpd.conf
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl enable  vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.

rabbitmq2节点和rabbitm3节点:

[root@rabbitmq2 ~]# mv /etc/yum.repos.d/C* /media/
[root@rabbitmq2 ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=ftp://10.30.59.188/centos
gpgcheck=0
enabled=1[mariadb]
name=mariadb
baseurl=ftp://10.30.59.188/mariadb-repo
gpgcheck=0
enabled=1[rabbit]
name=rabbit
baseurl=ftp://10.30.59.188/rabbitmq-repo
gpgcheck=0
enabled=1[root@rabbitmq2 ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: centos mariadb rabbit
Cleaning up list of fastest mirrors
Other repos take up 102 M of disk space (use --verbose for details)
[root@rabbitmq2 ~]# yum repolist
Loaded plugins: fastestmirror
Determining fastest mirrors
centos                                                                                                | 3.6 kB  00:00:00
mariadb                                                                                               | 2.9 kB  00:00:00
rabbit                                                                                                | 2.9 kB  00:00:00
(1/4): centos/group_gz                                                                                | 155 kB  00:00:00
(2/4): rabbit/primary_db                                                                              |  35 kB  00:00:00
(3/4): centos/primary_db                                                                              | 2.8 MB  00:00:00
(4/4): mariadb/primary_db                                                                             |  66 kB  00:00:00
repo id                                                    repo name                                                   status
centos                                                     centos                                                      3,723
rabbit                                                     rabbit                                                         26
repolist: 3,749

三、安装RabbitMQ服务并启动
三个节点都要安装:

# yum install -y rabbitmq-server
# systemctl start rabbitmq-server
#systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ brokerLoaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)Active: active (running) since Tue 2020-10-20 05:48:17 UTC; 1h 7min agoProcess: 13641 ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl stop (code=exited, status=0/SUCCESS)Main PID: 13685 (beam)CGroup: /system.slice/rabbitmq-server.service├─13685 /usr/lib64/erlang/erts-5.10.4/bin/beam -W w -K true -A30 -P 1048576 -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/ra...├─13757 inet_gethost 4└─13758 inet_gethost 4Oct 20 05:48:14 rabbitmq1 systemd[1]: Starting RabbitMQ broker...

四、配置界面访问
RabbitMQ提供了一个非常友好的图形化监控页面插件(rabbitmq_management),让我们可以一目了然看见Rabbit的状态或集群状态。启用图形化页面插件的具体命令如下:

[root@rabbitmq1 ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:mochiwebwebmachinerabbitmq_web_dispatchamqp_clientrabbitmq_management_agentrabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.

启用图形化界面后,需要重启RabbitMQ服务,命令如下:

[root@rabbitmq1 ~]# service rabbitmq-server restart
Redirecting to /bin/systemctl restart rabbitmq-server.service

开启了图形化监控页面后,能通过网页访问,访问端口为15672,输入rabbitmq1节点的ip加端口15672(http://172.30.11.12:15672)访问RabbitMQ监控界面,使用用户名:密码guest:guset登录。
例如:

这是加入了其他主机后的,也就是配置集群后的

五、配置RabbitMQ集群服务
配置节点间的通信的原理:
Rabbitmq的集群是依附于erlang集群来工作的,所以必须先构建起一个erlang集群。erlang集群中各节点是由magic cookie来实现的,每个节点上要保持相同的.erlang.cookie文件,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的权限。必须保证各节点cookie一致,不然节点之间就无法通信。

1、 在这之前要配置好rabbitmq2节点和rabbitmq3节点的RAM界面访问,即启用监控管理器
在rabbitmq2和rabbitmq3节点上启用rabbitmq_management,命令如下:
rabbitmq2节点:

[root@rabbitmq2 rabbitmq]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:mochiwebwebmachinerabbitmq_web_dispatchamqp_clientrabbitmq_management_agentrabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@rabbitmq2 rabbitmq]# service rabbitmq-server restart
Redirecting to /bin/systemctl restart rabbitmq-server.service

rabbitmq3节点:

[root@rabbitmq3 rabbitmq]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:mochiwebwebmachinerabbitmq_web_dispatchamqp_clientrabbitmq_management_agentrabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@rabbitmq3 rabbitmq]# service rabbitmq-server restart
Redirecting to /bin/systemctl restart rabbitmq-server.service

2、配置cookie一致

[root@rabbitmq1 ~]# cat /var/lib/rabbitmq/.erlang.cookie
EZYGPUJOTSESXPAUFMWO
[root@rabbitmq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmq2:/var/lib/rabbitmq/
[root@rabbitmq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie root@rabbitmq3:/var/lib/rabbitmq/

将.erlang.cookie文件传至rabbitmq2和rabbitmq3节点后,需要修改该文件的用户与用户组,命令如下:

[root@rabbitmq2 rabbitmq]# chown rabbitmq:rabbitmq .erlang.cookie
[root@rabbitmq3 rabbitmq]# chown rabbitmq:rabbitmq .erlang.cookie

3、配置节点加入集群
在rabbitmq2、rabbitmq3节点执行如下命令,将这两个节点作为RAM节点加入到RabbitMQ集群中,具体命令如下:
rabbitmq2节点:

[root@rabbitmq2 rabbitmq]# rabbitmqctl stop_app
Stopping node rabbit@rabbitmq2 ...
...done.
[root@rabbitmq2 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@rabbitmq1
Clustering node rabbit@rabbitmq2 with rabbit@rabbitmq1 ...
...done.
[root@rabbitmq2 rabbitmq]# rabbitmqctl start_app
Starting node rabbit@rabbitmq2 ...
...done.

rabbitmq3节点:

[root@rabbitmq3 rabbitmq]# rabbitmqctl stop_app
Stopping node rabbit@rabbitmq3 ...
...done.
[root@rabbitmq3 rabbitmq]# rabbitmqctl join_cluster --ram rabbit@rabbitmq1
Clustering node rabbit@rabbitmq3 with rabbit@rabbitmq1 ...
...done.
[root@rabbitmq3 rabbitmq]# rabbitmqctl start_app
Starting node rabbit@rabbitmq3 ...
...done.

默认rabbitmq启动后是磁盘节点,在这个cluster命令下,rabbitmq2和rabbitmq3是内存节点,rabbitmq1是磁盘节点。
如果要使rabbitmq2、rabbitmq3都是磁盘节点,去掉–ram参数即可。
如果想要更改节点类型,可以使用命令rabbitmqctl change_cluster_node_type disc(ram),前提是必须停掉rabbit应用。

启用rabbitmq2节点和rabbitmq3节点的监控界面后,登录http://172.30.11.12:15672,查看监控界面,如下图所示:

可以看到rabbitmq1节点为数据节点,rabbitmq2和rabbitmq3节点为RAM内存节点。

六、rabbitMQ集群的常用命令
1、查看插件打开情况

[root@rabbitmq1 ~]# rabbitmq-plugins list
[e] amqp_client                       3.3.5
[ ] cowboy                            0.5.0-rmq3.3.5-git4b93c2d
[ ] eldap                             3.3.5-gite309de4
[e] mochiweb                          2.7.0-rmq3.3.5-git680dba8
[ ] rabbitmq_amqp1_0                  3.3.5
[ ] rabbitmq_auth_backend_ldap        3.3.5
[ ] rabbitmq_auth_mechanism_ssl       3.3.5
[ ] rabbitmq_consistent_hash_exchange 3.3.5
[ ] rabbitmq_federation               3.3.5
[ ] rabbitmq_federation_management    3.3.5
[E] rabbitmq_management               3.3.5
[e] rabbitmq_management_agent         3.3.5
[ ] rabbitmq_management_visualiser    3.3.5
[ ] rabbitmq_mqtt                     3.3.5
[ ] rabbitmq_shovel                   3.3.5
[ ] rabbitmq_shovel_management        3.3.5
[ ] rabbitmq_stomp                    3.3.5
[ ] rabbitmq_test                     3.3.5
[ ] rabbitmq_tracing                  3.3.5
[e] rabbitmq_web_dispatch             3.3.5
[ ] rabbitmq_web_stomp                3.3.5
[ ] rabbitmq_web_stomp_examples       3.3.5
[ ] sockjs                            0.3.4-rmq3.3.5-git3132eb9
[e] webmachine                        1.10.3-rmq3.3.5-gite9359c7

2、启用监控管理器的命令

[root@rabbitmq2 ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:mochiwebwebmachinerabbitmq_web_dispatchamqp_clientrabbitmq_management_agentrabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.

3、关闭监控管理器命令:

# rabbitmq-plugins disable rabbitmq_management

4、查看所有的队列

[root@rabbitmq2 ~]# rabbitmqctl list_queues
Listing queues ...
...done.
[root@rabbitmq2 ~]#

5、清除所有的队列

# rabbitmqctl reset

6、查看状态
查看集群状态,在RabbitMQ集群的任一节点上,可以查看RabbitMQ集群的状态,命令如下

[root@rabbitmq2 ~]# rabbitmqctl list_queues
Listing queues ...
...done.
[root@rabbitmq2 ~]# rabbitmqctl status
Status of node rabbit@rabbitmq2 ...
[{pid,19134},{running_applications,[{rabbitmq_management,"RabbitMQ Management Console","3.3.5"},{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.3.5"},{webmachine,"webmachine","1.10.3-rmq3.3.5-gite9359c7"},{mochiweb,"MochiMedia Web Server","2.7.0-rmq3.3.5-git680dba8"},{rabbitmq_management_agent,"RabbitMQ Management Agent","3.3.5"},{rabbit,"RabbitMQ","3.3.5"},{os_mon,"CPO  CXC 138 46","2.2.14"},{mnesia,"MNESIA  CXC 138 12","4.11"},{amqp_client,"RabbitMQ AMQP Client","3.3.5"},{inets,"INETS  CXC 138 49","5.9.8"},{xmerl,"XML parser","1.3.6"},{sasl,"SASL  CXC 138 11","2.3.4"},{stdlib,"ERTS  CXC 138 10","1.19.4"},{kernel,"ERTS  CXC 138 10","2.16.4"}]},{os,{unix,linux}},{erlang_version,"Erlang R16B03-1 (erts-5.10.4) [source] [64-bit] [smp:2:2] [async-threads:30] [hipe] [kernel-poll:true]\n"},{memory,[{total,39613672},{connection_procs,5600},{queue_procs,5600},{plugins,127960},{other_proc,13460392},{mnesia,63664},{mgmt_db,12224},{msg_index,34528},{other_ets,1078952},{binary,20648},{code,19754683},{atom,703377},{other_system,4346044}]},{alarms,[]},{listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},{vm_memory_high_watermark,0.4},{vm_memory_limit,1589456076},{disk_free_limit,50000000},{disk_free,19906449408},{file_descriptors,[{total_limit,924},{total_used,3},{sockets_limit,829},{sockets_used,1}]},{processes,[{limit,1048576},{used,178}]},{run_queue,0},{uptime,9227}]
...done.
[root@rabbitmq2 ~]#

可以查看到rabbitmq1节点为disc磁盘节点,rabbitmq2节点和rabbitmq3节点为RAM内存节点。

7、新增用户admin,并设置密码为admin

[root@rabbitmq2 ~]# rabbitmqctl add_user admin admin
Creating user "admin" ...
...done.

修改用户密码为admin23

[root@rabbitmq2 ~]# rabbitmqctl change_password admin admin123
Changing password for user "admin" ...
...done.

删除用户

[root@rabbitmq2 ~]# rabbitmqctl delete_user admin
Deleting user "admin" ...
...done.

8、设置角色命令

[root@rabbitmq2 ~]# rabbitmqctl set_user_tags admin adminstrator monitoring policymaker management
Setting tags for user "admin" to [adminstrator,monitoring,policymaker,management] ...
...done.

9、设置用户权限命令
指定的vhost必须有,所以我们需要创建一个

[root@rabbitmq2 ~]# rabbitmqctl add_vhost VHostPath
Creating vhost "VHostPath" ...
...done.
[root@rabbitmq2 ~]#  rabbitmqctl set_permissions -p VHostPath admin ConfP WriteP ReadP
Setting permissions for user "admin" in vhost "VHostPath" ...
...done.

10、查询所有权限命令:

# rabbitmqctl list_permissions [-p  VHostPath]
[root@rabbitmq2 ~]#  rabbitmqctl list_permissions -p  VHostPath
Listing permissions in vhost "VHostPath" ...
admin   ConfP   WriteP  ReadP
...done.

11、指定用户权限命令:

# rabbitmqctl list_user_permissions admin
[root@rabbitmq2 ~]# rabbitmqctl list_user_permissions admin
Listing permissions for user "admin" ...
VHostPath       ConfP   WriteP  ReadP
...done.

12、清除用户权限命令:

# rabbitmqctl clear_permissions [-p VHostPath] admin
[root@rabbitmq2 ~]# rabbitmqctl clear_permissions -p VHostPath admin
Clearing permissions for user "admin" in vhost "VHostPath" ...
...done.

RabbitMQ集群的学习相关推荐

  1. RabbitMQ 学习(九)-- RabbitMQ 集群

    RabbitMQ 集群 最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求.如果 RabbitMQ 服务器遇到内存崩溃.机器掉电或者主板故障等情况, ...

  2. Rabbitmq集群高可用部署详细

    清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使然,我回到啦公司,敲起啦键盘,撸起啦代码,程序狗的世界一片黯然,一片黯然,愿天下所有努 ...

  3. RabbitMQ集群搭建(七)

    先来介绍一下RabbitMQ集群 RabbitMQ集群有两种模式,一种是普通模式,即默认的集群模式,另外一种为镜像模式,可以把队列做成镜像队列 我们在学习两种模式之前,先来了解下一些关于RabbitM ...

  4. RabbitMQ集群部署

    一般来说,RabbitMQ部署分布式集群架构有如下三种: 1.Cluster 2.Federation 3.Shovel 其中最常用的就是cluster模式(集群),它可以动态增加节点或减少,但只支持 ...

  5. RabbitMQ集群方案

    目录 1.集群方案的原理 2.单机多实例部署 3.RabbitMQ镜像集群配置 4.负载均衡-HAProxy 4.1 安装HAProxy 4.2 配置HAProxy 实际生产应用中都会采用消息队列的集 ...

  6. RabbitMQ集群搭建

    目录 RabbitMQ集群搭建 集群方案的原理 单机多实例部署 停止rabbitmq服务 结束命令: rabbit2操作为从节点: 查看集群状态: web监控: 总结 RabbitMQ集群搭建 摘要: ...

  7. RabbitMQ 集群篇

    RabbitMQ 集群篇 00.集群架构原理 前面我们有介绍到 RabbitMQ 内部有各种基础构件,包括队列.交换器.绑定.虚拟主机等,他们组成了 AMQP 协议消息通信的基础,而这些构件以元数据的 ...

  8. RabbitMQ 集群高可用部署详细介绍

    链接:cnblogs.com/knowledgesea/p/6535766.html 清风万里的季节,周末本该和亲人朋友一起消遣这烂漫的花花草草,或是懒洋洋的晒个太阳听听风声鸟鸣.无奈工作使然,理想使 ...

  9. hbase1.1.1 连接集群_除了HAProxy,RabbitMQ集群还可以这样用

    全网最简单的安装手册 // 安装erlang wget https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm. ...

最新文章

  1. [HDU 6157]The Karting(DP)
  2. Linux下构建自己的C++共享库并配合pkg-config生成链接选项
  3. java random产生随机数_Random随机数
  4. error C2664: “StrCmpW”: 不能将参数 2 从“const char [12]”转换为“PCWSTR”
  5. 网络安全:系统进程的基本概述
  6. 【JavaSE8 高级编程 多线程】多线程入门级解析 2019_7_27
  7. 数据统计分析(SPSS)【2】
  8. 操作系统习题(有一个具有两道作业的批处理系统)
  9. 易基因 | 学科前沿:靶向甲基化测序揭示维生素C可防止孕期吸烟引发的后代DNA甲基化改变
  10. 【原创】VBA学习笔记(300)VBA 很多工作表函数都只对1维数组有用,用2维数组上经常报错!
  11. 内容非常全面,细节爆炸
  12. Unity接入ChatGPT基于Python.Runtime的实现
  13. 如何通过 AirPlay 镜像您的 Mac 显示器
  14. 【网络知识】千兆网传输速度125MB/s、百兆网12.5MB/s,码率、比特率、带宽、文件大小M就是MB
  15. 三步下载有3D封装的Altium designer官方库
  16. AD转换汇编语言模数转换实验
  17. 功能点(FP)分析详细解释
  18. Java实现抓取百度识图结果的实现和思路-2-Json的处理
  19. 在线视频教育课程网站搭建模板
  20. 在家赚钱的工作,这五种比较适合在家操作!

热门文章

  1. 【Debug】UserWarning: size_average and reduce args will be deprecated, please use reduction=‘sum‘
  2. android 高德地图SDK报 KEY鉴权失败
  3. 语言中的历史——汉语和突厥语的纠缠
  4. 总结下利用python赚钱的方法,在闲余时间月赚2k-5k
  5. 记一次Linux 下磁盘分配和扩容操作
  6. 基于单片机的超市储物柜设计_基于单片机的自动存储柜的设计
  7. 常用的几种集合(Map另写)
  8. 用路由器实现不同vlan之间的通信
  9. 项目提示JDK版本问题或者语言级别问题时的解决办法
  10. Ubuntu顶栏显示网速和硬件信息