centos6.9 搭建rabbitmq 3.6.8集群

2020-03-26 12:29:05 浏览数 (1)

一、概述

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配置文件

代码语言:javascript复制
vim /etc/hostname

内容如下:

代码语言:javascript复制
mq_01

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

增加hosts记录

代码语言:javascript复制
vi /etc/hosts

内容如下:

代码语言:javascript复制
192.168.31.7 mq_01
192.168.31.216 mq_02
192.168.31.214 mq_03

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

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

代码语言:javascript复制
reboot -f

配置yum源

3台服务器都安装一下

代码语言:javascript复制
yum install -y epel-release

安装erlang

3台服务器都安装一下

代码语言:javascript复制
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台服务器都安装一下

代码语言:javascript复制
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台服务器都执行一下

代码语言:javascript复制
mkdir -p /data/log/rabbitmq
mkdir -p /data/rabbitmq/mnesia
chown -R rabbitmq.rabbitmq -R /data/log/rabbitmq /data/rabbitmq/mnesia

创建配置文件

3台服务器都执行一下

代码语言:javascript复制
vi /etc/rabbitmq/rabbitmq-env.conf

内容如下:

代码语言:javascript复制
RABBITMQ_LOG_BASE=/data/log/rabbitmq
RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia

 启动rabbit

3台服务器都执行一下

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

代码语言:javascript复制
# cat /var/lib/rabbitmq/.erlang.cookie 
RUIRJRRZDNYEHCCWITRS

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

代码语言:javascript复制
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台都执行一下

代码语言:javascript复制
chown -R rabbitmq.rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie

安装插件

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

3台服务器都执行一下

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

查看端口

代码语言:javascript复制
netstat -napt|grep 5672

加入mq01节点集群中

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

在mq_02、mq_03执行如下命令:

停掉rabbit应用

代码语言:javascript复制
rabbitmqctl stop_app

加入到磁盘节点

代码语言:javascript复制
rabbitmqctl join_cluster --ram rabbit@mq_01

启动rabbit应用

代码语言:javascript复制
rabbitmqctl start_app

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

查看集群状态

3台节点,都执行一下

代码语言:javascript复制
rabbitmqctl cluster_status

添加管理用户

3台节点,都执行一下

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

0 人点赞