RabbitMQ是什么?
MQ(Mesee Qucue消息队列)是种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,
而无需专用链接来连接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用
通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。
RabbitMQ是目前流行的开源消息队列系统,用Erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。
实验环境
IP地址 | 主机名 | 用途 |
---|---|---|
192.168.10.157 | mq1 | 磁盘节点 |
192.168.10.178 | mq2 | 内存节点 |
192.168.10.163 | mq3 | 内存节点 |
RabbitMQ集群配置
实现步骤
1、配置三个节点的hosts文件,将如下内容分别加入到三台服务器上
vim /etc/hosts
192.168.10.157 mq1
192.168.10.178 mq2
192.168.10.163 mq3
#修改完需重启:init 6
2、三个节点配置yum软件源,安装rabbitmq软件
yum install epel-release -y //安装源
yum install -y rabbitmq-server //安装服务
3、分别查看三个节点并添加管理任务,最后启动rabbitmq服务
/usr/lib/rabbitmq/bin/rabbitmq-plugins list //查看有哪些服务,插件安装情况
/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management //启动管理服务
systemctl start rabbitmq-server.service //开启rabbitmq服务
netstat -ntap | grep 5672 //查看端口,其中15672和55672都是rabbitmq的管理端口,5672则是和生产者、消费者通信的端口
ln -s /usr/lib/rabbitmq/bin/* /usr/bin/ //方便管理,建立软链接
4、查看rabbitmq状态,测试能否连接
rabbitmqctl cluster-status //测试能否连接上
5、修改.erlang.cookie文件
Rabbitmq的集群是依赖于Erlang的集群来工作的,所以必须先构建起Erlang的集群环境。在Erlang的集群中,各节点是通过一个magic cookie来实现的,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信
cd /var/lib/rabbitmq/
vim .erlang.cookie
#.erlang.cookie是隐藏文件,使用ls -a查看,复制mq1的cookie,修改mq2,mq3与之相同
6、重启rabbitmq服务,关闭防火墙
systemctl restart rabbitmq-server.service //重启
systemctl stop firewalld.service
setenforce 0 //关闭防火墙和安全功能
7、将mq2、mq3作为内存节点与mq1磁盘节点连接起来,在mq2、mq3上执行如下命令
rabbitmqctl stop_app //停止rabbitmq应用
rabbitmqctl join_cluster --ram rabbit@mq1 //调用cluster命令,将mq2连接到mq1,-ram以内存节点形式添加
rabbitmqctl start_app //开启rabbitmq应用
8、在mq1上查看状态
#mq1查看已连接
rabbitmqctl cluster_status
Cluster status of node rabbit@mq1 ...
[{nodes,[{disc,[rabbit@mq1]},{ram,[rabbit@mq3,rabbit@mq2]}]},
{running_nodes,[rabbit@mq3,rabbit@mq2,rabbit@mq1]},
{cluster_name,<<"rabbit@mq1">>},
{partitions,[]}]
...done.
以上便完成了配置RabbitMQ默认集群模式