Centos7.3 RabbitMQ分布式集群搭建示例
时间:2019-04-15
本文章向大家介绍Centos7.3 RabbitMQ分布式集群搭建示例,主要包括Centos7.3 RabbitMQ分布式集群搭建示例使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
本文介绍了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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- nyoj------170网络的可靠性
- HDUOJ-------1052Tian Ji -- The Horse Racing(田忌赛马)
- 初学Java之Pattern与Matcher类
- 初学java之StringBuffer类的常用方法
- 初学java之大数处理
- hdu---1024Max Sum Plus Plus(动态规划)
- Go语言异步服务器框架原理和实现
- nyoj------布线问题(kruscal+求最小值)
- nyoj-----127星际之门(一)
- nyoj------20吝啬的国度
- HDUOJ-------2493Timer(数学 2008北京现场赛H题)
- go sync.Mutex 设计思想与演化过程 (一)
- HDUOJ--------A simple stone game(尼姆博弈扩展)(2008北京现场赛A题)
- HDUOJ----2485 Destroying the bus stations(2008北京现场赛A题)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 什么情况下不能使用最坏情况评估算法的复杂度?
- Python运算符
- kubeadm高可用集群意外删除一mater节点,重新加入失败
- Chevereto——简介及安装
- Typecho开启伪静态并隐藏index.php
- Prism代码高亮Pjax重载函数
- Qt示例-AnalogClock-自定义窗体-使用QPainter的转换和缩放特性简化绘图
- 2019-12-27-traefik
- 2019-12-05-eck-qustion
- 聊聊dubbo-go的ConsumerSignFilter
- Javascript错误处理
- 程序员说模型过拟合的时候,说的是什么?
- 分分钟教会你搭建企业级的 npm 私有仓库
- Golang语言之字符串操作
- Go语言ORM-gorm学习笔记(二)