安装RabbitMQ Cluster 集群
RabbitMQ是一套开源的消息队列服务软件,由erlang 写成,主要特点:可伸缩性,消息持久化.
从内存持久化到磁盘,在从硬盘加载到内存,更多信息自行百度了解
--------------------------------------------------------------------------------------------------------------------------------
下面开始进入rabbitmq安装:
三个节点环境:centos7.2虚拟机
1、每个节点都安装erlang rabbitmq-server
#yum install erlang rabbitmq-server -y
- 每个节点都启动rabbitmq及设置开机启动
#systemctl enable rabbitmq-server.service
#systemctl status rabbitmq-server.service
#systemctl list-unit-files | grep rabbitmq-server.service
- 创建openstack 用户 , 注意将password 替换为自己的合适密码
# rabbitmqctl add_user openstack teamsun
5,将openstack用户赋予权限
#rabbitmqctl set_permissions openstack ".*" ".*" ".*"
6,看下监听端口,rabbitmq用的是5672端口
# netstat -ntlp | grep 5672
7,查看rabbitmq插件
#/usr/lib/rabbitmq/bin/rabbitmq-plugins list
8,每个节点都打开rabbitmq相关插件
#/usr/lib/rabbitmq/bin/rabbitmq-plugins enable rabbitmq_management mochiweb webmachine rabbitmq_web_dispatch amqp_client rabbitmq_management_agent
打开插件后,重启下rabbitmq服务
#systemctl restart rabbitmq-server.service
浏览器输入:http://ip:5672 默认用户名密码:guest/guest 通过这个界面能很直观地看到rabitmq的运行和负载情况
当然你也可以不用guest登录,然后自己创建一个用户,例如xxxxxxx
以下是创建一个mqadmin的用户
#rabbitmqctl add_user mqadmin mqadmin
# rabbitmqctl set_user_tags mqadmin administrator
#rabbitmqctl set_permissions -p / mqadmin ".*" ".*" ".*"
通过命令更换密码,比如把guest的密码换成password
#rabbitmqctl change_password guest password
9,查看rabbitmq的状态
#rabbitmqctl status
10,集群配置
在controller1上操作,把文件copy到其他两个节点
#scp /var/lib/rabbitmq/.erlang.cookie root@controller2:/var/lib/rabbitmq/.erlang.cookie
#scp /var/lib/rabbitmq/.erlang.cookie root@controller3:/var/lib/rabbitmq/.erlang.cookie
在controller2 controller3 上操作
#systemctl restart rabbitmq-server.service
#systemctl status rabbitmq-server.service
#rabbitmqctl stop_app
#rabbitmqctl join_cluster --ram rabbit@controller1
(rabbitmq 集群里面有两种模式RAM内存 和DISK 磁盘 ,就是消息队里存在内存里和存在硬盘上,集群里面必须要有一个disk模式)
#rabbitmqctl start_app
查看集群状态:
查看集群状态
#rabbitmqctl cluster_status
界面查看:
11,下面是关于RabbitMQ的一些优化
RabbitMQ集群优化:
(1)尽可能的把rabbitmq部署在单独的服务器中,这样让rabbitmq 服务享用全部的CPU资源。
(2)开启HIPE模式,开启hipe模式让erlang 预编译运行,能够提高20%-30%,网上有相关的测试结果可参考:http://github.com/binarin/rabbit-simple-benchmark/blob/master/report.md/
#vi /etc/rabbitmq/rabbitmq.config 打开hipe 选项 三个节点均修改:
再重启服务,注意重启时间会很长
#systemctl restart rabbitmq-server.service
(3)不要使用队列镜像
使用队列镜像会是集群消息吞吐量下降两倍,RPC消息生命周期变短,有可能消息丢失,导致某些正在进行的操作失败
(4)控制发送的指标数量和频率,减少不必要的消息在rabbitmq服务中堆积,这样让rabbitmq服务有更多的资源来处理重要的openstack服务队列
以下是三篇参考文档,有时间和兴趣可以去深入研究
https://www.mirantis.com/blog/best-practices-rabbitmq-openstack/
https://www.qcloud.com/community/article/135
http://www.rabbitmq.com/documentation.html