博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
RabbitMQ 安装使用及集群架设
阅读量:6242 次
发布时间:2019-06-22

本文共 3142 字,大约阅读时间需要 10 分钟。

hot3.png

Ubuntu 系统安装 RabbitMQ 

写在前面 链接rabbitMQ官网 php教程。

1.关于RabbitMQ安装

 由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlang,执行命令:

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.负载均衡
参见官网手册 写的非常具体详细。

4.RabbitMQ集群

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

 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, 把rabbit2、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。


集群手册链接

转载于:https://my.oschina.net/u/3501089/blog/1921468

你可能感兴趣的文章
java发送邮件问题
查看>>
myeclipse2013 安装 egit
查看>>
介绍几种常见的网站负载均衡技术
查看>>
httpd详解
查看>>
jquery获取复选框的值
查看>>
深入理解C语言的define
查看>>
安装Discuz
查看>>
zabbix问题集锦
查看>>
MYSQL EXPLAIN 中的KEY_LEN的说明
查看>>
Linux笔记(VIM)
查看>>
pyrhon脚本小练习(9*9乘法表)
查看>>
Python按行读取文件
查看>>
Linux Shell从一个文件去掉包含在另一个文件的内容
查看>>
Linux CentOS6.5下编译安装MySQL 5.6.16
查看>>
CentOS 7 上systemctl 的用法
查看>>
极验验证的滑动验证码破解
查看>>
【深入Linux块设备驱动层次之一】整体层次
查看>>
Linux登录安全及用户操作审计 ,linux下清理日志脚本
查看>>
一个JS文件中引入另一个JS文件
查看>>
Laravel中pluck的使用——返回指定的字段值信息列表
查看>>