标签:管理 构建 stop 安全 erlang ram 工作 镜像 conf
默认openstack使用rabbitmq做信息队列,如果想要是云高可用,那么需要对每个涉及的组件都进行高可用配置,本文介绍如何使用rabbitmq
做高可用
高可用方法
通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送与接收。 这些节点通过 RabbitMQ HA 队列(镜像队列)进行消息队列结构复制。本方案中搭建 3 个节点,并且都是磁盘节点(所有节点状态保持一致,节点完全对等),只要有任何一个节点能够工作,RabbitMQ 集群对外就能提供服务。
主机服务器信息
node1 192.168.56.60 rabbitmq01 node2 192.168.56.61 rabbitmq02 node3 192.168.56.62 rabbitmq03
系统环境为
rabbitmq版本为3.3.5
# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # uname -r 3.10.0-327.el7.x86_64
主机解析配置
#cat /etc/hosts 192.168.56.60 rabbitmq01 192.168.56.61 rabbitmq02 192.168.56.62 rabbitmq03
NTP 三台都配置上 保持时间是一致的
一 软件安装
安装第三方库与rabbitmq
可以安装阿里云的epel
#yum install rabbitmq-server
启动服务
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
二 配置
在node1里配置
(1)设置每个节点Cookie
Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的集群环境。Erlang的集群中各节点是通过一个magic cookie来实现的,这个cookie存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是400的权限。所以必须保证各节点cookie保持一致,否则节点之间就无法通信
将node1的/var/lib/rabbitmq/.erlang.cookie复制到node2与node3
修改权限(所有节点)
chmod 400 /var/lib/rabbitmq/.erlang.cookie chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
在node2里面配置
[root@rabbitmq02 rabbitmq]# rabbitmqctl stop_app
Stopping node rabbit@rabbitmq02 ...
...done.
[root@rabbitmq02 rabbitmq]# rabbitmq join_cluster rabbit@rabbitmq01
[root@rabbitmq02 rabbitmq]# rabbitmqctl start_app
在node3里面配置
[root@rabbitmq03 rabbitmq]# rabbitmqctl stop_app
Stopping node rabbit@rabbitmq03 ...
...done.
[root@rabbitmq03 rabbitmq]# rabbitmq join_cluster rabbit@rabbitmq01
[root@rabbitmq03 rabbitmq]# rabbitmqctl start_app
此时 node2 与 node3 也会自动建立连接;如果要使用内存节点,则可以使用
查看集群状态
# rabbitmqctl cluster_status Cluster status of node rabbit@rabbitmq02 ... [{nodes,[{disc,[rabbit@rabbitmq01,rabbit@rabbitmq02,rabbit@rabbitmq03]}]}, {running_nodes,[rabbit@rabbitmq01,rabbit@rabbitmq03,rabbit@rabbitmq02]}, {cluster_name,<<"rabbit@rabbitmq01">>}, {partitions,[]}] ...done.
三 集群高可用配置
设计镜像队列策略
在任何一个节点配置
#rabbitmqctl set_policy ha-all ‘^(?!amq\.).*‘ ‘{"ha-mode": "all"}‘
四 远程添加账户登陆
如果要从远程登录怎么做呢?处于安全考虑,guest这个默认的用户只能通过http://localhost:15672来登录,其他的IP无法直接用这个guest帐号。这里我们可以通过配置文件来实现从远程登录管理界面,只要编辑/etc/rabbitmq/rabbitmq.config文件(没有就新增),添加以下配置就可以了。
[ {rabbit, [{tcp_listeners, [5672]}, {loopback_users, ["asdf"]}]} ].
现在添加了一个新授权用户asdf,可以远程使用这个用户名。记得要先用命令添加这个命令才行:
$ cd /usr/lib/rabbitmq/bin/ #用户名与密码 $ sudo rabbitmqctl add_user asdf 123456 #用户设置为administrator才能远程访问 $ sudo rabbitmqctl set_user_tags asdf administrator $ sudo rabbitmqctl set_permissions -p / asdf ".*" ".*" ".*"
标签:管理 构建 stop 安全 erlang ram 工作 镜像 conf
原文地址:http://www.cnblogs.com/yexiaochong/p/6164023.html