• RabbitMQ快速入门


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

    1.1 安装 RabbitMQ

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

     apt-get install rabbitmq-server rabbitmq-plugins
    
    • 1

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

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

    yum install rabbitmq-server
    
    • 1

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

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

     zypper install rabbitmq-server
    
    • 1

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

    在 SLES 系统中:

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

    注意
    这些软件包都使用 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

    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
    
    • 1
    • 2

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

    chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
    chmod 400 /var/lib/rabbitmq/.erlang.cookie
    
    • 1
    • 2

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

    rabbitmqctl cluster_status
    Cluster status of node rabbit@NODE...
    [{nodes,[{disc,[rabbit@NODE]}]},
     {running_nodes,[rabbit@NODE]},
     {partitions,[]}]
    ...done.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

    rabbitmqctl stop_app
    Stopping node rabbit@NODE...
    ...done.
    
    rabbitmqctl join_cluster rabbit@rabbit1
    # rabbitmqctl start_app
    Starting node rabbit@NODE ...
    ...done.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    检查集群状态:

     rabbitmqctl cluster_status
    Cluster status of node rabbit@NODE...
    [{nodes,[{disc,[rabbit@rabbit1]},{ram,[rabbit@NODE]}]},{running_nodes,[rabbit@NODE,rabbit@rabbit1]}]
    
    • 1
    • 2
    • 3

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

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

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

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

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

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

    rabbit_durable_queues=false
    
    • 1

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

    rabbit_ha_queues=true
    
    • 1

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

    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl start_app
    
    • 1
    • 2
    • 3

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

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

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

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

  • 相关阅读:
    基于javaweb软件专业介绍管理系统
    平衡二叉搜索树(AVL)——【C++实现插入、删除等操作】
    第二篇 如何选择操作系统
    idea工具,debug模式小技巧,调试正确姿势。快进收藏夹。
    关于氮化镓的干蚀刻综述
    【C++】类和对象 从入门到超神 (上)
    【学懂数据结构】二叉树之舞之二叉树
    ps2023最新版免费滤镜插件Exposure安装下载教程
    postman连接数据库
    树形 DP 总结
  • 原文地址:https://blog.csdn.net/qq_52716296/article/details/126828507