centos6.9 搭建rabbitmq 3.6.8集群

一、概述

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

 

RabbiMQ模式

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

 

RabbiMQ特点

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

 

二、正式搭建

环境

操作系统 ip 主机名 配置
centos 6.9 192.168.31.7 mq_01 1核2g
centos 6.9 192.168.31.216 mq_02 1核2g
centos 6.9 192.168.31.214 mq_03 1核2g

 

 

 

 

 

 

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

 

配置hosts文件

修改主机名

更改三台MQ节点的计算机名分别为mq_01、mq_02 和mq_03,然后修改hosts配置文件

vim /etc/hostname

内容如下:

mq_01

其他两台操作相同,内容不一样。

 

增加hosts记录

vi /etc/hosts

内容如下:

192.168.31.7 mq_01
192.168.31.216 mq_02
192.168.31.214 mq_03

其他两台操作相同,内容也是一样。

为了让主机名永久生效,重启3台服务器。

reboot -f

 

配置yum源

3台服务器都安装一下

yum install -y epel-release

 

安装erlang

3台服务器都安装一下

wget https://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el6.x86_64.rpm
yum install -y socat
rpm -ivh erlang-19.0.4-1.el6.x86_64.rpm

 

安装rabbitmq-server

3台服务器都安装一下

wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.8/rabbitmq-server-3.6.8-1.el6.noarch.rpm
rpm -ivh rabbitmq-server-3.6.8-1.el6.noarch.rpm

 

创建目录

3台服务器都执行一下

mkdir -p /data/log/rabbitmq
mkdir -p /data/rabbitmq/mnesia
chown -R rabbitmq.rabbitmq -R /data/log/rabbitmq /data/rabbitmq/mnesia

 

创建配置文件

3台服务器都执行一下

vi /etc/rabbitmq/rabbitmq-env.conf

内容如下:

RABBITMQ_LOG_BASE=/data/log/rabbitmq
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia

 

 启动rabbit

3台服务器都执行一下

/etc/init.d/rabbitmq-server start

 

拷贝erlang.cookie

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

 

登录到mq_01节点,查看erlang.cookie

# cat /var/lib/rabbitmq/.erlang.cookie 
RUIRJRRZDNYEHCCWITRS

 

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

scp /var/lib/rabbitmq/.erlang.cookie root@192.168.31.216:/var/lib/rabbitmq/.erlang.cookie

scp /var/lib/rabbitmq/.erlang.cookie root@192.168.31.214:/var/lib/rabbitmq/.erlang.cookie

 

设置权限,另外2台都执行一下

chown -R rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie

 

安装插件

RabbitMQ提供了一个非常友好的图形化监控页面插件(rabbitmq_management),让我们可以一目了然看见Rabbit的状态或集群状态。

 

3台服务器都执行一下

rabbitmq-plugins enable rabbitmq_management

 

查看端口

netstat -napt|grep 5672

 

加入mq01节点集群中

将mq_02、mq_03作为内存节点加入mq01节点集群中

在mq_02、mq_03执行如下命令:

 

停掉rabbit应用

rabbitmqctl stop_app

 

加入到磁盘节点

rabbitmqctl join_cluster --ram rabbit@mq_01

 

启动rabbit应用

rabbitmqctl start_app

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

 

查看集群状态

3台节点,都执行一下

rabbitmqctl cluster_status

 

添加管理用户

3台节点,都执行一下

rabbitmqctl add_user admin 'admin123'
rabbitmqctl set_permissions -p / admin . . .
rabbitmqctl set_user_tags admin administrator

解释:

第一行命令表示,创建用户admin,密码为admin123

第二行命令表示,admin用户对virtual host为'/'所有资源,具有配置,写,读权限。注意:后面3个点表示这3个权限。

第三行命令表示,为admin用户分配管理员权限。

 

登录rabbitmq web管理控制台

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

用户名:admin,密码:admin123

登录后出现如图所示的界面。

 

 

 

本文参考链接:

https://www.cnblogs.com/shihaiming/p/11014257.html

 

posted @ 2020-02-11 18:26  肖祥  阅读(655)  评论(0编辑  收藏  举报