RabbitMQ 安装使用及集群架设

Ubuntu 系统安装 RabbitMQ 

写在前面 连接rabbitMQ官网 php教程。PHP-RabbitMQphp

1.关于RabbitMQ安装html

 因为rabbitMq须要erlang语言的支持,在安装rabbitMq以前须要安装erlang,执行命令:node

sudo apt-get install erlang-nox

 安装rabbitMQ数据库

sudo apt-get update
   sudo apt-get install rabbitmq-server

2.RabbitMQ基本操做服务器

启动:sudo rabbitmq-server start
   关闭: sudo rabbitmq-server stop
   重启: sudo rabbitmq-server restart
   查看状态:sudo rabbitmqctl status

3.RabbitMQ功能
1.路由
2.队列
3.持久性
4.广播
5.任务确认
6.负载均衡
参见官网手册 写的很是具体详细。cookie

4.RabbitMQ集群
 1.主机名解析
 RabbitMQ节点使用域名相互寻址,所以全部集群成员的主机名必须可以从全部集群节点解析,能够修改hosts文件或者使用DNS解析。 若是要使用节点名称的完整主机名(RabbitMQ默认为短名称),而且可使用DNS解析完整的主机名,则可能须要调查设置环境变量 RABBITMQ_USE_LONGNAME = trueapp

 2.集群节点
 RAM节点和disk节点
 disk持久化 ram非持久队列down掉后数据消失 RAM节点是一种特殊状况,可用于改善高排队,交换或绑定流失的性能集群。
变动当前节点类型须要关闭当前节点 rabbitmqctl stop_app
使用 rabbitmqctl change_cluster_node_type disc负载均衡

 3.集群节点验证
 RabbitMQ节点和CLI工具(例如rabbitmqctl)使用cookie来肯定它们是否被容许相互通讯,要使两个节点可以通讯,它们必须具备相同的共享密钥,称为Erlang Cookie.
Cookie只是一个字符串,最多能够有255个字符。它一般存储在本地文件中。该文件必须只能由全部者访问(400权限)。每一个集群节点必须具备相同的 cookie,文件位置/var/lib/rabbitmq/.erlang.cookie, 把rabbit二、rabbit3设置成和rabbit2同样的便可,权限是400工具

 4.正常方式启动全部节点性能

rabbitmq-server -detached
	rabbitmq-server -detached
	rabbitmq-server -detached

5.集群中MQ的操做
 1.查看集群状态

[root@rabbit1 ~]# rabbitmqctl cluster_status
				Cluster status of node rabbit@rabbit1 ...
				[{nodes,[{disc,[rabbit@rabbit1]}]},
				 {running_nodes,[rabbit@rabbit1]},
				 {cluster_name,<<"rabbit@rabbit1">>},
				 {partitions,[]},
				 {alarms,[{rabbit@rabbit1,[]}]}]

  2.加入一个集群
  1)中止要加入的mq应用程序 rabbitmqctl stop_app
  2)加入目标mq集群 rabbitmqctl join_cluster rabbit@rabbit1
  3)启动要加入的mq应用程序 rabbitmqctl start_app
注意:加入集群会隐式重置节点,从而删除此节点上之前存在的全部资源和数据
  加入后查看状态

[root@rabbit1 ~]# rabbitmqctl cluster_status
				Cluster status of node rabbit@rabbit1 ...
				[{nodes,[{disc,[rabbit@rabbit1,rabbit@rabbit2]}]},
				 {running_nodes,[rabbit@rabbit2,rabbit@rabbit1]},
				 {cluster_name,<<"rabbit@rabbit1">>},
				 {partitions,[]},
				 {alarms,[{rabbit@rabbit2,[]},{rabbit@rabbit1,[]}]}]

经过遵循上述步骤,咱们能够在集群正在运行的同时随时向集群添加新节点
已加入群集的节点可随时中止。他们也能够崩溃。在这两种状况下,群集的其他部分都会继续运行,而且节点在再次启动时会自动“跟上”(同步)其余群集节点。


*当整个集群关闭时,最后一个关闭的节点必须是第一个要联机的节点。
若是要脱机的最后一个节点没法恢复,可使用forget_cluster_node命令将其从群集中删除
若是全部集群节点同时中止而且不受控制(例如断电),则可能会留下全部节点都认为其余节点在其后中止的状况。在这种状况下,您能够在一个节点上使用force_boot命令使其再次可引导 *


 3.集群移除节点
  当节点再也不是节点的一部分时,须要从集群中明确地删除节点。咱们首先从集群中删除rabbit@rabbit3,并将其返回到独立操做
 1)咱们中止RabbitMQ应用程序 rabbitmqctl stop_app
 2)重置节点 rabbitmqctl reset
 3)从新启动RabbitMQ应用程序 rabbitmqctl start_app

 4.远程删除节点(处理节点无响应时)
 1)关闭要删除的节点 rabbitmqctl stop_app
 2)远程其余服务器使用 rabbitmqctl forget_cluster_node rabbit@rabbit1
请注意,rabbit1仍然认为它与rabbit2集群 ,并试图启动它将致使错误。咱们须要从新设置才能从新启动。
 3) 被删除的节点 rabbitmqctl reset #必需要重置
 4)被删除节点重启 单独使用 rabbitmqctl start_app

6.主机名更改

 RabbitMQ节点使用主机名相互通讯。所以,全部节点名称必须可以解析全部集群对等体的名称。对于像rabbitmqctl这样的工具也是如此。

 除此以外,默认状况下,RabbitMQ使用系统的当前主机名命名数据库目录。若是主机名更改,则会建立一个新的空数据库。为避免数据丢失,设置固定且可解析的主机名相当重要。每当主机名更改时,必须从新启动RabbitMQ节点。

 使用rabbit @ localhost 做为代理节点名称能够实现相似的效果。此解决方案的影响是群集不起做用,由于所选主机名不会从远程主机解析为可路由地址。从远程主机调用时,rabbitmqctl命令一样会失败。没有这种弱点的更复杂的解决方案是使用DNS,例如,若是在EC2上运行,则使用 Amazon Route 53。若是要使用nodename的完整主机名(RabbitMQ默认为短名称),而且可使用DNS解析该完整主机名,则可能须要调查设置环境变量 RABBITMQ_USE_LONGNAME = true。


集群手册连接RabbitMQ集群

相关文章
相关标签/搜索