企业私有云之rabbitmq高可用
默认openstack使用rabbitmq做信息队列,如果想是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文主要介绍如何使用rabbitmq做高可用。 高可用的方法为: 通过Erlang的分布式特性(通过magiccookie认证节点)进行RabbitMQ集群,各RabbitMQ服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。 这些节点通过RabbitMQHA队列(镜像队列)进行消息队列结构复制。本方案中搭建3个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ集群对外就能提供服务。 环境为: 系统centos 7.1 rabbitmq版本是3.6.2 主机信息 node110.10.33.163 node210.10.33.166 node310.10.33.167 /etc/hosts配置为 10.10.33.163ip-10-10-33-163 10.10.33.166ip-10-10-33-166 10.10.33.167ip-10-10-33-167 下面是开始安装 一、安装 安装第三方库与rabbitmq yuminstall-yepel-release yuminstallrabbitmq-server 启动服务 systemctlenablerabbitmq-server.service systemctlstartrabbitmq-server.service 二、配置 在node1里配置 将node1的/var/lib/rabbitmq/.erlang.cookie复制到node2与node3 修改权限(所有节点) chmod400/var/lib/rabbitmq/.erlang.cookie chown-Rrabbitmq:rabbitmq/var/lib/rabbitmq/.erlang.cookie 在node2里配置 [root@ip-10-10-33-166my.cnf.d]#rabbitmqctlstop_app Stoppingnode'rabbit@ip-10-10-33-166'... [root@ip-10-10-33-166my.cnf.d]#rabbitmqctljoin_clusterrabbit@ip-10-10-33-163 Clusteringnode'rabbit@ip-10-10-33-166'with'rabbit@ip-10-10-33-163'... Youhavenewmailin/var/spool/mail/root [root@ip-10-10-33-166my.cnf.d]#rabbitmqctlstart_app Startingnode'rabbit@ip-10-10-33-166'... 在node3里配置 [root@ip-10-10-33-167my.cnf.d]#rabbitmqctlstop_app Stoppingnode'rabbit@ip-10-10-33-167'... [root@ip-10-10-33-167my.cnf.d]#rabbitmqctljoin_clusterrabbit@ip-10-10-33-163 Clusteringnode'rabbit@ip-10-10-33-167'with'rabbit@ip-10-10-33-163'... [root@ip-10-10-33-167my.cnf.d]#rabbitmqctlstart_app Startingnode'rabbit@ip-10-10-33-167'... 查看集群状态 [root@ip-10-10-33-166my.cnf.d]#rabbitmqctlcluster_status Clusterstatusofnode'rabbit@ip-10-10-33-166'... [{nodes,[{disc,['rabbit@ip-10-10-33-163','rabbit@ip-10-10-33-166', 'rabbit@ip-10-10-33-167']}]}, {running_nodes,['rabbit@ip-10-10-33-163','rabbit@ip-10-10-33-167', 'rabbit@ip-10-10-33-166']}, {cluster_name,<<"rabbit@ip-10-10-33-163">>}, {partitions,[]}, {alarms,[{'rabbit@ip-10-10-33-163',[]}, {'rabbit@ip-10-10-33-167',[]}, {'rabbit@ip-10-10-33-166',[]}]}] 三、集群高可用配置 设计镜像队列策略 在任何一个节点执行 [root@ip-10-10-33-163~]#rabbitmqctlset_policyha-all'^(?!amq\.).*''{"ha-mode":"all"}' Settingpolicy"ha-all"forpattern"^(?!amq\\.).*"to"{\"ha-mode\":\"all\"}"withpriority"0"...