Centos7.3 RabbitMQ分布式集群搭建

注意事项

centos 7.x 关闭firewall

三台机器:

172.17.250.97           rabbiMQ01
172.17.250.98           rabbiMQ03
172.17.250.99           rabbiMQ02

配置 hosts

172.17.250.97 fz-rabbitMQ01
172.17.250.99 fz-rabbitMQ02
172.17.250.98 fz-rabbitMQ03
$ systemctl stop firewalld.service # 停止firewall

不想关闭防火墙,就开放15672端口,设置之后可以通过网页方式管理MQ

安装安装iptables防火墙

yum install iptables-services

添加配置

iptables -I INPUT -p tcp --dport 5672 -j ACCEPT
iptables -I INPUT -p tcp --dport 15672 -j ACCEPT

保存配置

service iptables save

重启

systemctl restart iptables.service

设置开机自启动

systemctl enable iptables.service

安装

安装 Erlang

RabbitMQ 安装需要依赖 Erlang 环境

$ cd /usr/local/src
$ wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm

$ yum install erlang-19.0.4-1.el7.centos.x86_64.rpm -y
安装 RabbitMQ
$ cd /usr/local/src
$ wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.10/rabbitmq-server-3.6.10-1.el7.noarch.rpm
$ yum install rabbitmq-server-3.6.10-1.el7.noarch.rpm -y

仅仅 rabbitMQ01 运行:

rabbitmq-server -detached

之后运行

rabbitmqctl status

查看rabbitmq是否正常启动。

创建集群:

首先搞个密钥认证:

[root@fz-rabbitMQ01 src]# ssh-keygen

[root@fz-rabbitMQ01 src]# ssh-copy-id -pXXXXX -i ~/.ssh/id_rsa.pub [email protected]

[root@fz-rabbitMQ01 src]# ssh-copy-id -pXXXXX -i ~/.ssh/id_rsa.pub [email protected]

读取rabbitMQ01节点的cookie, 并复制到其他节点(节点之间通过cookie确定相互是否可通信)。 cookie存放在/var/lib/rabbitmq/.erlang.cookie或者$HOME/.erlang.cookie中。

[root@fz-rabbitMQ01 src]# scp -PXXXXX /var/lib/rabbitmq/.erlang.cookie 172.17.250.99:/var/lib/rabbitmq
/etc/bashrc:行94: soruce: 未找到命令
.erlang.cookie                                                                                                                               100%   20     0.0KB/s   00:00    
[root@fz-rabbitMQ01 src]# scp -PXXXXX /var/lib/rabbitmq/.erlang.cookie 172.17.250.98:/var/lib/rabbitmq
/etc/bashrc:行94: soruce: 未找到命令
.erlang.cookie         

逐个启动节点

rabbitmq-server -detached

建立集群

分别在 rabbitMQ02 和 rabbitMQ03 上面执行即可

rabbitmqctl stop_app 

rabbitmqctl reset 

rabbitmqctl join_cluster rabbit@fz-rabbitMQ01 

rabbitmqctl start_app 

最后通过rabbitmqctl cluster_status查看集群的状态信息:

[root@fz-rabbitMQ01 src]# rabbitmqctl cluster_status
Cluster status of node 'rabbit@fz-rabbitMQ01'
[{nodes,[{disc,['rabbit@fz-rabbitMQ01','rabbit@fz-rabbitMQ02',
                'rabbit@fz-rabbitMQ03']}]},
 {running_nodes,['rabbit@fz-rabbitMQ03','rabbit@fz-rabbitMQ02',
                 'rabbit@fz-rabbitMQ01']},
 {cluster_name,<<"[email protected]">>},
 {partitions,[]},
 {alarms,[{'rabbit@fz-rabbitMQ03',[]},
          {'rabbit@fz-rabbitMQ02',[]},
          {'rabbit@fz-rabbitMQ01',[]}]}]

在访问web(http://xxx.xxx.xxx.xxx:15672)时, 如果在Overview中的Nodes部分看到“Node statistics not available”的信息,说明在该节点上web管理插件还未启用。

3个节点都需要运行:

[root@fz-rabbitMQ01 src]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
  amqp_client
  cowlib
  cowboy
  rabbitmq_web_dispatch
  rabbitmq_management_agent
  rabbitmq_management

Applying plugin configuration to rabbit@fz-rabbitMQ01... started 6 plugins.

遇到的问题

Error: unable to connect to node '[email protected]': nodedown

解决方案:执行如下两条命令:

# /sbin/service rabbitmq-server stop

# /sbin/service rabbitmq-server start

然后再次执行:即可

rabbitmqctl stop_app 

rabbitmqctl reset 

rabbitmqctl join_cluster rabbit@fz-rabbitMQ01 

rabbitmqctl start_app 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术碎碎念

curl命令踩的坑

使用curl命令执行get请求,带多个参数: 1 curl localhost:8080/user/binding/query?userId=123456&wr...

4039
来自专栏酷玩时刻

基于 CentOS Mysql 5.7.19 安装与主从同步配置详解

1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操作,降低主服务器的访问压力 3.可以在从服务器上执行备份,以避免备...

1242
来自专栏Core Net

Visual Studio 2017 15.7 下的.NET Core

4478
来自专栏杨建荣的学习笔记

MySQL级联复制的同步问题(一) (r9笔记第71天)

今天碰到一个有些奇怪的问题,有一套环境,在主从复制的时候有一些问题。 大体的流程设计如下: 三个节点位于三个不同的区域,因为节点1和节点3之间的网络存在问题,...

3244
来自专栏别先生

org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.

1、启动hive的过程中,[hadoop@slaver1 soft]$ hive --service metastore & 错误如下所示: 原因:之前启动hi...

4035
来自专栏cmazxiaoma的架构师之路

MySQL主从复制

MySQL复制功能提供分担读负载。 基于二进制日志的复制是异步的,那么复制有什么好处? 1.实现在不同服务器上的数据分布,利用二进制日志增量进行,不需要太多...

1972
来自专栏酷玩时刻

MySql 5.7.18 数据库主从(Master/Slave)同步安装与配置详解

MySql复制的优点: 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操作,降低主服务器的访问压力 3.可以在从...

1013
来自专栏iMySQL的专栏

MySQL FAQ 系列 — MySQL 复制中 slave 延迟监控

在MySQL复制环境中,我们通常只根据 Seconds_Behind_Master 的值来判断SLAVE的延迟。这么做大部分情况下尚可接受,但并不够准确,而应该...

3180
来自专栏杨建荣的学习笔记

Linux下配置MySQL主从复制(r5笔记第13天)

MySQL的主从复制是自己一直想学习的一个实战经历,因为Oracle中的主从复制也是需要不少的配置选项,相比来说感觉重量级一些(数据量也重量级). 今天试了一下...

3616
来自专栏散尽浮华

mysql主从同步(4)-Slave延迟状态监控

之前部署了mysql主从同步环境(Mysql主从同步(1)-主从/主主环境部署梳理),针对主从同步过程中slave延迟状态的监控梳理如下: 在mysql日常维护...

4147

扫码关注云+社区

领取腾讯云代金券