RabbitMQ快速入门

Posted 念舒_C.ying

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RabbitMQ快速入门相关的知识,希望对你有一定的参考价值。

个人名片:
因为云计算成为了监控工程师👨🏻‍💻
个人博客🏆:念舒_C.ying
CSDN主页✏️:念舒_C.ying

RabbitMQ快速入门

1.1 安装 RabbitMQ

对于 Ubuntu 和 Debian 发行版
RabbitMQ 已经有可用的软件安装包:

 apt-get install rabbitmq-server rabbitmq-plugins

注意
在 Ubuntu 和 Debian 发行版上安装 RabbitMQ 的官方文档

对于 Fedora 和 RHEL 发行版
RabbitMQ 已经有可用的软件安装包:

yum install rabbitmq-server

注意
在 Fedora 和 RHEL 发行版上安装 RabbitMQ 的官方文档

对 openSUSE 和 SLES 发行版.
在 openSUSE 系统中:

 zypper install rabbitmq-server

注意
在 openSUSE 发行版上安装 RabbitMQ 的官方文档

在 SLES 系统中:

zypper addrepo -f obs://Cloud:OpenStack:Juno/SLE_11_SP3 Juno

注意
这些软件包都使用 GPG 密钥 893A90DAD85F9316 进行了签名,在安装之前可以先验证签名。

Key ID: 893A90DAD85F9316
Key Name: Cloud:OpenStack OBS Project Cloud:OpenStack@build.opensuse.org
Key Fingerprint: 35B34E18ABC1076D66D5A86B893A90DAD85F9316
Key Created: Tue Oct 8 13:34:21 2013
Key Expires: Thu Dec 17 13:34:21 2015

zypper install rabbitmq-server

1.2 配置 RabbitMQ

将多个 RabbitMQ 节点组织成一个集群,构建一个 RabbitMQ broker 服务,即一个 Erlang 节点的逻辑集合。
单个节点服务器的故障不会导致消息的交换和绑定完全不可用,但是具体一个消息队列及其中的内容则相反。原因是消息队列和其中的内容只在其中一台节点上,该节点出现故障无法
工作时,整个消息队列就丢失了。
RabbitMQ 实现队列镜像更能提高整个集群的高可用性。
示例中会布署 2 台 RabbitMQ 服务器,rabbit1 和 rabbit2。要构建一个 RabbitMQ broker 服务,必须保证所有节点服务器的 Erlang cookie 文件完全相同。
因此,首先在所有节点服务器停止 RabbitMQ 服务,然后将第一台节点服务上的 cookis 文件复制到其它节点:

scp /var/lib/rabbitmq/.erlang.cookie \\
root@NODE:/var/lib/rabbitmq/.erlang.cookie

复制时注意确认 .erlang.cookie 文件的属主、属组以及文件权限。

chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie

在所有节点上重新启动 RabbitMQ 服务,确保在所有节点上都能正常启动。

rabbitmqctl cluster_status
Cluster status of node rabbit@NODE...
[nodes,[disc,[rabbit@NODE]],
 running_nodes,[rabbit@NODE],
 partitions,[]]
...done.

在除第一台节点之外的其它节点服务器上运行下面的命令。

rabbitmqctl stop_app
Stopping node rabbit@NODE...
...done.

rabbitmqctl join_cluster rabbit@rabbit1
# rabbitmqctl start_app
Starting node rabbit@NODE ...
...done.

检查集群状态:

 rabbitmqctl cluster_status
Cluster status of node rabbit@NODE...
[nodes,[disc,[rabbit@rabbit1],ram,[rabbit@NODE]],running_nodes,[rabbit@NODE,rabbit@rabbit1]]

如果集群运行正常,就可以开始为消息队列创建用户和密码。
为了保证除了自动生动的队列之外的其它队列能在所有节点上实现镜像,必须将 RabbitMQ策略配置项 ha-mode 设置为 all。在集群中任何一台节点服务器上执行下面的命令。

rabbitmqctl set_policy ha-all '^(?!amq\\.).*' '"ha-mode": "all"'

1.3 配置 OpenStack 各服务使用高可用的 RabbitMQ 服务

现在可以配置 OpenStack 其它组件使用高可用 RabbitMQ 集群(最少使用其中 2 台节点服务器)。
对所有使用 RabbitMQ 的组件进行配置:

  • RabbitMQ HA 集群服务地址及端口:
rabbit_hosts=rabbit1:5672,rabbit2:5672
  • 重新尝试连接 RabbitMQ 服务的时间间隔:
rabbit_retry_interval=1
  • 每次重新尝试连接 RabbitMQ 服务应后延多长时间:
rabbit_retry_backoff=2
  • 连接 RabbitMQ 服务时最大的重试次数(默认没有限制):
rabbit_max_retries=0

是否使用持久的消息队列:

rabbit_durable_queues=false

否使用 RabbitMMQ 的队列镜像特性( x-ha-policy: all ):

rabbit_ha_queues=true

注意
如果是直接#改没有启用队列镜像特性的 RabbitMQ 服务的配置,那么对服务作一次重置:

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app

注意
目前支持高可用 RabbitMQ 服务的 OpenStack 组件有:

  • OpenStack 计算服务
  • OpenStack 块设备存储服务
  • OpenStack 网络服务
  • Telemetry

期待下次的分享,别忘了三连支持博主呀~
我是 念舒_C.ying ,期待你的关注~💪💪💪

附专栏链接
【云原生 · Kubernetes】部署 kube-proxy 组件
【云原生 · Kubernetes】部署高可用kube-scheduler集群
【云原生 · Kubernetes】部署高可用 kube-controller-manager 集群
【云原生 · Kubernetes】runtime组件
【云原生 · Kubernetes】apiserver高可用

以上是关于RabbitMQ快速入门的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ快速入门

RabbitMQ学习笔记3:RabbitMQ快速入门消息模式

RabbitMQ学习笔记3:RabbitMQ快速入门消息模式

RabbitMQ消息中间件快速入门

RabbitMQ消息中间件快速入门

RabbitMQ快速入门