安装RabbitMQ Cluster 集群

 RabbitMQ是一套开源的消息队列服务软件,由erlang 写成,主要特点:可伸缩性,消息持久化.

从内存持久化到磁盘,在从硬盘加载到内存,更多信息自行百度了解

--------------------------------------------------------------------------------------------------------------------------------

下面开始进入rabbitmq安装:

三个节点环境:centos7.2虚拟机

1、每个节点都安装erlang rabbitmq-server

#yum install erlang rabbitmq-server -y

  1. 每个节点都启动rabbitmq及设置开机启动

#systemctl enable rabbitmq-server.service

#systemctl status  rabbitmq-server.service

#systemctl list-unit-files | grep rabbitmq-server.service

 

  1. 创建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

原文地址:https://www.cnblogs.com/lxqr/p/8694737.html