CentOS 7 下 RabbitMQ 集群搭建
环境
10.0.0.20 node1
10.0.0.21 node2
10.0.0.22 node3
搭建(在所有节点执行)
添加EPEL源
[root@node1 ~]# rpm -Uvh https://dl.Fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
添加Erlang
[root@node1 ~]# rpm -Uvh http://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
安装RabbitMQ
[root@node1 ~]# wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
[root@node1 ~]# rpm --import https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
[root@node1 ~]# yum install -y rabbitmq-server-3.6.-.el7.noarch.rpm
启动服务
[root@node1 ~]# systemctl enable rabbitmq-server.service
[root@node1 ~]# systemctl start rabbitmq-server.service
查看端口监听状态 5672为集群间通信端口,15672为web端管理端口
[root@node1 ~]# netstat -atn |grep
启用RabbitMQ监控插件
[root@node1 ~]# rabbitmq-plugins enable rabbitmq_management
RabbitMQ用户管理
添加用户为:root ,密码为:admin)
[root@node1 ~]# rabbitmqctl add_user admin admin
设置用户角色(设置admin用户为管理员角色)
[root@node1 ~]# rabbitmqctl set_user_tags admin administrator
设置用户权限(设置admin用户配置、写、读的权限)
[root@node1 ~]# rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
删除用户(删除guest用户)
[root@node1 ~]# rabbitmqctl delete_user guest
RabbitMQ集群配置
设置hosts解析,所有节点配置相同
[root@node1 ~]# vim /etc/hosts
10.0.0.20 node1
10.0.0.21 node2
10.0.0.22 node3
设置节点间的认证 (Erlang Cookie)
将node3 的cookie发送到 node1和node2 上
[root@node1 ~]# chmod /var/lib/rabbitmq/.erlang.cookie
[root@node2 ~]# chmod /var/lib/rabbitmq/.erlang.cookie
[root@node3 ~]# scp /var/lib/rabbitmq/.erlang.cookie 10.0.0.20:/var/lib/rabbitmq/.erlang.cookie
[root@node3 ~]# scp /var/lib/rabbitmq/.erlang.cookie 10.0.0.:/var/lib/rabbitmq/.erlang.cookie
[root@node1 ~]# chmod /var/lib/rabbitmq/.erlang.cookie
[root@node2 ~]# chmod /var/lib/rabbitmq/.erlang.cookie
分别启动独立的单机版rabbitmq broker节点
[root@node1 ~]# systemctl start rabbitmq-server.service
[root@node1 ~]# rabbitmq-server -detached
[root@node2 ~]# systemctl start rabbitmq-server.service
[root@node2 ~]# rabbitmq-server -detached
[root@node3 ~]# systemctl start rabbitmq-server.service
[root@node3 ~]# rabbitmq-server -detached
查看broker的状态
[root@node1 ~]# rabbitmqctl status
Status of node rabbit@node1 ...
[{pid,},
{running_applications,
[{rabbitmq_management,"RabbitMQ Management Console","3.6.6"},
{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.6.6"},
查看broker的集群状态
root@node1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node1 ...
[{nodes,[{disc,[rabbit@node1]}]},
{running_nodes,[rabbit@node1]},
{cluster_name,<<"rabbit@node2">>},
{partitions,[]}]
配置防火墙(如果开启)
[root@node1 ~]# firewall-cmd --permanent --add-port={/tcp,/tcp}
[root@node1 ~]# firewall-cmd --reload
配置集群
默认是磁盘节点,如果是内存节点的话,需要加--ram参数
将node1节点加入node3作为RAM类型节点
[root@node1 ~]#rabbitmqctl stop_app
[root@node1 ~]#rabbitmqctl reset
[root@node1 ~]#rabbitmqctl join_cluster root@node3 --ram
[root@node1 ~]#rabbitmqctl start_app
[root@node1 ~]# rabbitmqctl cluster_status
将node2节点加入node3 作为RAM类型节点
[root@node2 ~]#rabbitmq stop_app
[root@node2 ~]#rabbitmqctl reset
[root@node2 ~]#rabbitmqctl join_cluster root@node3 --rm
[root@node2 ~]#rabbitmqctl start_app
[root@node2 ~]# rabbitmqctl cluster_status
(rabbitmq集群节点有disc 和ram两种类型,一个集群中至少要有一个disc类型的节点,不指定默认加入为disc)
修改集群的名字
[root@node1 ~]# rabbitmqctl set_cluster_name rabbitMQ
Setting cluster name to rabbitMQ ...
[root@node1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@node1 ...
[{nodes,[{disc,[rabbit@node1,rabbit@node3]},{ram,[rabbit@node2]}]},
{running_nodes,[rabbit@node2,rabbit@node3,rabbit@node1]},
{cluster_name,<<"rabbitMQ">>},
{partitions,[]},
{alarms,[{rabbit@node2,[]},{rabbit@node3,[]},{rabbit@node1,[]}]}]
重要信息
(1)、当整个集群down掉时,最后一个down机的节点必须第一个启动到在线状态,如果不是这样,节点会等待30s等最后的磁盘节点恢复状态,然后失败。如果最后下线的节点不能上线,可以通过forget_cluster_node 指令来踢出集群
(2)、如果所有的节点不受控制的同时宕机,比如掉电,会进入所有的节点都会认为其他节点比自己宕机的要晚,即自己先宕机,这种情况下可以使用force_boot指令来启动一个节点
打破集群
当一个节点不属于这个集群的时候,我们需要显式的踢出,可以通过本地或者远程的方式
[root@node1 ~]# rabbitmqctl stop_app
[root@node1 ~]# rabbitmqctl reset
[root@node1 ~]# rabbitmqctl start_app
[root@node1 ~]# rabbitmqctl cluster_status
设置镜像队列策略
设置policy,以ha.开头的队列将会被镜像到集群其他所有节点,一个节点挂掉然后重启后会自动同步队列消息(我们生产环境采用这个方式)
[root@node1 ~]# rabbitmqctl set_policy ha-all-queue "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
查看状态
查看应用状态
[root@node3 ~]# rabbitmqctl status
查看集群信息
[root@node3 ~]# rabbitmqctl cluster_status
访问任意管理端界面查看
http://ip:15672
HAproxy+Keepalived 高可用
消息队列作为公司的关键基础服务,为给客户端提供稳定、透明的rabbitmq服务,现通过Haproxy+keepalived构建高可用的rabbitmq统一入口,及基本的负载均衡服务
安装
[root@node4 ~]# yum install haproxy keepalived -y
设置开机启动
CentOS 7 下 RabbitMQ 集群搭建的更多相关文章
- CentOS 7下ElasticSearch集群搭建案例
最近在网上看到很多ElasticSearch集群的搭建方法,本人在这人使用Elasticsearch5.0.1版本,介绍如何搭建ElasticSearch集群并安装head插件和其他插件安装方法. 一 ...
- RabbitMQ集群搭建和使用
一.环境准备 1.选择RabbitMQ的版本 http://www.rabbitmq.com/changelog.html 注: 不同版本的Linux选择的RabbitMQ版本也不同,参照 http: ...
- Centos6.9下RabbitMQ集群部署记录
之前简单介绍了CentOS下单机部署RabbltMQ环境的操作记录,下面详细说下RabbitMQ集群知识,RabbitMQ是用erlang开发的,集群非常方便,因为erlang天生就是一门分布式语言, ...
- Linux环境下Hadoop集群搭建
Linux环境下Hadoop集群搭建 前言: 最近来到了武汉大学,在这里开始了我的研究生生涯.昨天通过学长们的耐心培训,了解了Hadoop,Hdfs,Hive,Hbase,MangoDB等等相关的知识 ...
- [Kubernetes]CentOS7下Etcd集群搭建
Etcd简要介绍 Etcd是Kubernetes集群中的一个十分重要的组件,用于保存集群所有的网络配置和对象的状态信息 Etcd构建自身高可用集群主要有三种形式: ①静态发现: 预先已知 Etcd 集 ...
- Linux下zookeeper集群搭建
Linux下zookeeper集群搭建 部署前准备 下载zookeeper的安装包 http://zookeeper.apache.org/releases.html 我下载的版本是zookeeper ...
- windows下Nacos集群搭建与nginx集成
前言: nacos集群至少需要三个(一般为奇数个)nacos实 例,其前面顶nginx,外界入口从nginx入 一.windows下Nacos集群搭建 将Nacos的解压包复制分成3份,分别是: na ...
- rabbitmq集群搭建方法简介(测试机linux centos)【转】
本文将介绍四台机器搭建rabbitmq集群: rabbitmq IP和主机名(每台机器已安装RabbitMQ 3.5.6, Erlang 18.1) 192.168.87.73 localhost73 ...
- centos7 rabbitmq集群搭建+高可用
环境 [root@node1 ~]# cat /etc/redhat-release CentOS Linux release (Core) [root@node1 ~]# uname -r -.el ...
随机推荐
- js里的回调函数
function a(callback) // 定义一个函数 ,需要传入的参数是callback 然后callback的类型为一个函数{console.log("callback还表示传 ...
- Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列
Oracle把逗号分割的字符串转换为可放入in的条件语句的字符数列 前台传来的字符串:'589,321' SELECT*FROM TAB_A T1 WHERE T1.CODE IN ( SEL ...
- grep基础用法
功能:全面搜索正则表达式并把行打印出来,是一种强大的文本搜索工具. grep yuan filename :在文件中搜索yuan 这个字符串,并把含有此字符串的行打印出来,也可以多文件搜索. g ...
- PNG,JPEG,BMP,JIF图片格式详解及其对比
原文地址:http://blog.csdn.net/u012611878/article/details/52215985 图片格式详解 不知道大家有没有注意过网页里,手机里,平板里的图片,事实上,图 ...
- mysql删除数据库文件ibdata1后引发的故障
进行性能测试是发现大量报错: Duplicate entry主键重复 可以看到mysql数据库中已经没有innodb引擎启动信息了 之前发现ibdata1占用了大量硬盘,为了省出空间删除了数据库ibd ...
- Day4--------------对文件的权限管理
一.文件权限 ls -l 显示当前文件详细信息 例: -rw-r--rwx.1 root root 1415 11月 9 20:21 anaconda-ks.cfg 依次顺序为:权限信 ...
- 服务发现之consul的介绍、部署和使用
什么是服务发现 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是我们的重点.我们看下面的一幅图片: 图中 ...
- 使用console进行 性能测试 和 计算代码运行时间
原文:http://www.tuicool.com/articles/JrARVjv 对于前端开发人员,在开发过程中经常需要监控某些表达式或变量的值,如果使用用 debugger 会显得过于笨重,最常 ...
- java中一个Map要找到值Value最小的那个元素的方法
import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.Map ...
- BN(Batch Normalization)
Batch Nornalization Question? 1.是什么? 2.有什么用? 3.怎么用? paper:<Batch Normalization: Accelerating Deep ...