0
点赞
收藏
分享

微信扫一扫

RabbitMQ 普通集群配置_04


接上一篇:​​(企业级) 搭建集群 RabbitMQ SHELL脚本实战_03​​

文章目录

  • ​​RabbiMQ简介​​
  • ​​RabbiMQ模式​​
  • ​​RabbiMQ特点​​
  • ​​环境部署总览​​
  • ​​一、基础配置及RabbitMQ 安装​​
  • ​​1. 配置hosts文件​​
  • ​​2. 安装配置RabbitMQ​​
  • ​​3. 思路分析​​
  • ​​二、RabiitMQ 集群配置同步​​
  • ​​2.1. 拷贝erlang.cookie​​
  • ​​2.2. 同步.erlang.cookie​​
  • ​​2.3. 重新启动RabbitMQ服务​​
  • ​​2.4. 查看监听端口​​
  • ​​2.5. 将ly-02、ly-03作为内存节点加入ly-01节点集群中​​
  • ​​2.6. ly-02 加入集群操作记录​​
  • ​​2.7. ly-03 加入集群操作记录​​
  • ​​2.8. 查看集群状态​​
  • ​​三、登录rabbitmq web管理控制台​​
  • ​​3.1. 访问管控台​​
  • ​​3.2. 创建新的队列aa​​

RabbiMQ简介

RabbiMQ是用Erang开发的,集群非常方便,因为Erlang天生就是一门分布式语言,但其本身并不支持负载均衡。

RabbiMQ模式

RabbitMQ模式大概分为以下三种:

  • (1)单一模式。
  • (2)普通模式(默认的集群模式)。
  • (3) 镜像模式(把需要的队列做成镜像队列,存在于多个节点,属于RabbiMQ的HA方案,在对业务可靠性要求较高的场合中比较适用)。
    要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用。

RabbiMQ特点

RabbitMQ的集群节点包括内存节点、磁盘节点。RabbitMQ支持消息的持久化
也就是数据写在磁盘上,最合适的方案就是既有内存节点,又有磁盘节点。

环境部署总览

IP地址

主机名

防火墙和SELinux

用途

192.168.43.242

ly-01

关闭

磁盘节点

192.168.43.134

ly-02

关闭

内存节点

192.168.43.228

ly-03

关闭

内存节点

注意,这里三台服务器都连接上互联网,另外RabbitMQ集群节点必须在同一网段里,如果是跨广域网,效果会变差。

一、基础配置及RabbitMQ 安装

分别登录​​ly-01、ly-02、ly-03​​ 执行以下操作:

1. 配置hosts文件

更改三台MQ节点的计算机名分别为​​ly-01、ly-02 和、y-03​

#修改`hosts`配置文件
vim /etc/hosts
添加内容如下:
192.168.43.242 ly-01
192.168.43.134 ly-02
192.168.43.228 ly-03

2. 安装配置RabbitMQ

​​(企业级) CentOS7 安装 RabbitMQ最新版本 下载、安装、配置、运行、部署_01​​

3. 思路分析

上面就是需要在3台服务器上都要RabbitMQ下载、安装、配置、部署,那怎样才能
快速安装配置RabbitMQ呢?
​​​(企业级) 搭建集群RabbitMQ 快速下载、安装、配置、部署_02​​​​(企业级) 搭建集群RabbitMQ SHELL脚本实战_03​​

二、RabiitMQ 集群配置同步

  • 登录ly-01操作

2.1. 拷贝erlang.cookie

Rabbitmq的集群是依附于erlang的集群来工作的,所以必须先构建起erlang的集群景象。Erlang的集群中各节点是经由过程一个magic cookie来实现的,这个cookie存放在​​/var/lib/rabbitmq/.erlang.cookie​​中,文件是400的权限。所以必须保证各节点cookie一致,不然节点之间就无法通信。

  • 查看.erlang.cookie内容,每一天的内容是不一样的

[root@ly01 ~]# cat /var/lib/rabbitmq/.erlang.cookie 
XAHPZVPYUQDWWJIOHUPQ

2.2. 同步.erlang.cookie

  • 用scp的方式将mq01节点的.erlang.cookie的值复制到其他两个节点中。

scp /var/lib/rabbitmq/.erlang.cookie root@192.168.43.134:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@192.168.100.228:/var/lib/rabbitmq/.erlang.cookie

2.3. 重新启动RabbitMQ服务

#运行脚本
bash rabbitmq_guard_start.sh

注如果不是root用户,请采用下面操作
#黑脚本赋予可执行权限
chmod u+x rabbitmq_guard_start.sh
#运行脚本
#格式 ./config_file.sh rabbitmq_server版本
./rabbitmq_guard_start.sh

#内容如下:
rabbitmq-server start &

2.4. 查看监听端口

(插件监控的端口是15672)

netstat -ntap | grep 5672
tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 8112/beam.smp
tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 8112/beam.smp
tcp6 0 0 :::5672 :::* LISTEN 8112/beam.smp
[root@ly-01 ~]#

RabbitMQ 普通集群配置_04_bash

2.5. 将ly-02、ly-03作为内存节点加入ly-01节点集群中

在ly-02、ly-03执行如下命令:

rabbitmqctl stop_app    //停掉rabbit应用
rabbitmqctl join_cluster --ram rabbit@mq01 //加入到磁盘节点
rabbitmqctl start_app //启动rabbit应用

或者启动脚本:

#运行脚本
#格式 bash join_cluster_node.sh 磁盘节点域名或者ip地址
#参考下面2个栗子,任选其一即可
bash join_cluster_node.sh ly-01
bash join_cluster_node.sh 192.168.43.242

注如果不是root用户,请采用下面操作
#给脚本赋予可执行权限
chmod u+x join_cluster_node.sh
#运行脚本
#格式 ./join_cluster_node.sh 磁盘节点域名或者ip地址
#例子如下:
./join_cluster_node.sh ly-01
./join_cluster_node.sh 192.168.43.242

#添加内容如下:
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@$1
rabbitmqctl start_app

2.6. ly-02 加入集群操作记录

[root@ly-02 app]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@ly-02 ...
[root@ly-02 app]# rabbitmqctl join_cluster --ram rabbit@ly-01
Clustering node rabbit@ly-02 with rabbit@ly-01
[root@ly-02 app]# rabbitmqctl start_app
Starting node rabbit@ly-02 ...

## ##
## ## RabbitMQ 3.7.24. Copyright (c) 2007-2020 Pivotal Software, Inc.
########## Licensed under the MPL. See https://www.rabbitmq.com/
###### ##
########## Logs: /var/log/rabbitmq/rabbit@ly-02.log
/var/log/rabbitmq/rabbit@ly-02_upgrade.log

Starting broker...
completed with 3 plugins.
[root@ly-02 app]#

2.7. ly-03 加入集群操作记录

[root@ly-03 app]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@ly-03 ...
[root@ly-03 app]# rabbitmqctl join_cluster --ram rabbit@ly-01
Clustering node rabbit@ly-03 with rabbit@ly-01
[root@ly-03 app]# rabbitmqctl start_app
Starting node rabbit@ly-03 ...

## ##
## ## RabbitMQ 3.7.24. Copyright (c) 2007-2020 Pivotal Software, Inc.
########## Licensed under the MPL. See https://www.rabbitmq.com/
###### ##
########## Logs: /var/log/rabbitmq/rabbit@ly-03.log
/var/log/rabbitmq/rabbit@ly-03_upgrade.log

Starting broker...
completed with 3 plugins.
[root@ly-03 app]#

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

2.8. 查看集群状态

[root@ly-01 ~]# rabbitmqctl cluster_status 
Cluster status of node rabbit@ly-01 ...
[{nodes,[{disc,['rabbit@ly-01']},{ram,['rabbit@ly-03','rabbit@ly-02']}]},
{running_nodes,['rabbit@ly-03','rabbit@ly-02','rabbit@ly-01']},
{cluster_name,<<"rabbit@ly-01">>},
{partitions,[]},
{alarms,[{'rabbit@ly-03',[]},{'rabbit@ly-02',[]},{'rabbit@ly-01',[]}]}]
[root@ly-01 ~]#

RabbitMQ 普通集群配置_04_集群安装部署_02

三、登录rabbitmq web管理控制台

3.1. 访问管控台

打开浏览器输入​​http://192.168.43.242:15672​​,

输入默认的​​Username:guest​​​,输入默认的​​Password:guest​​ ,登录后出现如图所示的界面

RabbitMQ 普通集群配置_04_erlang_03

3.2. 创建新的队列aa

根据界面提示创建一条队列

RabbitMQ 普通集群配置_04_集群安装部署_04


RabbitMQ 普通集群配置_04_erlang_05


在RabbitMQ集群集群中,必须至少有一个磁盘节点,否则队列元数据无法写入到集群中,当磁盘节点宕掉时,集群将无法写入新的队列元数据信息。

接下一篇:
​​​(企业级) RabbitMQ 镜像集群配置_05​​


举报

相关推荐

0 条评论