一、简介

本文示例运行环境:

  1. 操作系统:CentOS Linux release 7
  2. RabbitMQ Server : 3.10.0
  3. Erlang : 24.3.4

二、更换 Centos yum 源

阿里 CentOS 镜像

操作系统维护周期

CentOS Linux 7 EOL: 2024-06-30

CentOS 7已于2024年06月30日停止维护

  1. 备份

    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    
  2. 下载新的阿里镜像源 CentOS-Base.repo 到 /etc/yum.repos.d/

    wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    

    或者

    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    
  3. 运行 yum makecache 生成缓存

三、安装依赖包

yum install -y  unixODBC

四、下载安装 erlang 和 rabbitmq-server

wget 'https://packages.erlang-solutions.com/erlang/rpm/centos/7/x86_64/esl-erlang_24.3.4.1-1~centos~7_amd64.rpm'
# 或者
# wget 'https://inapp.oss-cn-qingdao.aliyuncs.com/static/esl-erlang_24.3.4.1-1%7Ecentos%7E7_amd64.rpm'
rpm -Uvh esl-erlang_24.3.4.1-1~centos~7_amd64.rpm

wget 'https://inapp.oss-cn-qingdao.aliyuncs.com/static/rabbitmq-server-3.10.0-1.el7.noarch.rpm'
rpm -Uvh rabbitmq-server-3.10.0-1.el7.noarch.rpm

五、启动 RabbitMQ , 并设置开机自启

systemctl start rabbitmq-server
systemctl enable rabbitmq-server

六、使用指南

# 启用 web 管理页面,端口默认为 15672 
rabbitmq-plugins enable rabbitmq_management

# 添加账号
rabbitmqctl add_user user1 password
# 设置账号为管理员,并添加权限
rabbitmqctl set_user_tags user1 administrator
rabbitmqctl set_user_tags user1 management
rabbitmqctl set_permissions user1 '.*' '.*' '.*'
# 添加 vhost
rabbitmqctl add_vhost /vhost1
# 为 user1 用户添加 vhost 的权限
rabbitmqctl set_permissions -p /vhost1 user1 ".*" ".*" ".*"

七、安装插件

安装 延迟消息插件

# 查看插件路径
rabbitmq-plugins directories -s

# 下载插件
wget 'https://inapp.oss-cn-qingdao.aliyuncs.com/static/rabbitmq_delayed_message_exchange-3.10.0.ez'
mv rabbitmq_delayed_message_exchange-3.10.0.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.10.0/plugins

# 启用插件
rabbitmq-plugins enable rabbitmq_delayed_message_exchange

八、配置 RabbitMQ 集群模式

  1. 设置好主机名和 hosts

    # Server n1
    hostnamectl set-hostname n1.srv.world
    echo -ne '172.16.0.101  n1.srv.world n1\n172.16.0.102  n2.srv.world n2' >> /etc/hosts
    
    # Server n2
    hostnamectl set-hostname n2.srv.world
    echo -ne '172.16.0.101  n1.srv.world n1\n172.16.0.102  n2.srv.world n2' >> /etc/hosts
    
  2. 同步 .erlang.cookie 文件,将 Server n1 机器的 /var/lib/rabbitmq/.erlang.cookie 文件内容复制到 Server n2

  3. 将 Server n2 加入的 Server n1 集群

    # 在 Server n2 上执行
    rabbitmqctl stop_app
    rabbitmqctl reset
    rabbitmqctl join_cluster rabbit@n1
    rabbitmqctl start_app
    
  4. 设置镜像队列

    rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
    
  5. 官方集群搭建文档

    参考文档