CentOS7安装RabbitMQ

一、介绍及规划

1.1 介绍

RabbitMQ 是由 erlang 语言开发,基于 AMQP 协议实现的消息队列,它是一种应用程序之间的通信方法,

1.2 规划

主机名 ip 系统1 Erl 版本 RabbitMQ 版本
rabbitmq101 192.168.10.101 centos7 23.3.4.1 3.9.16-1
rabbitmq102 192.168.10.102 centos7 23.3.4.1 3.9.16-1
rabbitmq103 192.168.10.103 centos7 23.3.4.1 3.9.16-1
1
2
3
4
5
cat >> /etc/hosts <<EOF
192.168.10.101 rabbitmq101
192.168.10.102 rabbitmq102
192.168.10.103 rabbitmq103
EOF
1
hostnamectl set-hostname rabbitmq101
1
hostnamectl set-hostname rabbitmq102
1
hostnamectl set-hostname rabbitmq103

二、安装

2.1 下载

  • 3.9.16-1 是最后一个支持 el7 版本的 RabbitMQ
  • 23.3.4.1 是兼容性比较不错的版本
  • 版本依赖

下载地址

1
2
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.16/rabbitmq-server-3.9.16-1.el7.noarch.rpm
wget https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.1/erlang-23.3.4.1-1.el7.x86_64.rpm

加速下载

1
2
wget https://g.bravexist.cn/https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.9.16/rabbitmq-server-3.9.16-1.el7.noarch.rpm
wget https://g.bravexist.cn/https://github.com/rabbitmq/erlang-rpm/releases/download/v23.3.4.1/erlang-23.3.4.1-1.el7.x86_64.rpm

2.2 安装

1
rpm -ivh erlang-23.3.4.1-1.el7.x86_64.rpm
1
rpm -ivh rabbitmq-server-3.9.16-1.el7.noarch.rpm

2.3 验证

1
erl -version
1
rabbitmqctl version
  • 在 Erlang 的版本定义里,Emulator 11.x 对应的就是 Erlang/OTP 23.x

启动

1
systemctl enable --now rabbitmq-server

三、搭建集群

需提前做好 hosts 解析。

3.1 准备工作

  1. Erlang 节点间通信需要完全一致的 Cookie 文件
1
2
3
cat > /var/lib/rabbitmq/.erlang.cookie <<EOF
VMBQVRFSQJJIUFJNHWQU
EOF
1
cat /var/lib/rabbitmq/.erlang.cookie
  1. 修正权限
1
2
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
chmod 400 /var/lib/rabbitmq/.erlang.cookie
1
ls -l /var/lib/rabbitmq/.erlang.cookie
  1. 重启
1
systemctl restart rabbitmq-server

3.2 加入集群

  1. 主节点 rabbit101 无须操作
  • rabbitmq101
  1. 从节点加入集群

注意:设置正确的主机名,并且不要多个从节点同时加入集群

  • rabbitmq102

​ 停止 RabbitMQ 应用(但不停止 Erlang 虚拟机)

1
rabbitmqctl stop_app

​ 重置该节点数据(新装机器可选,若是旧机器必须执行以清除旧数据)

1
rabbitmqctl reset

​ 加入到 rabbitmq101

1
rabbitmqctl join_cluster rabbit@rabbitmq101

​ 启动应用

1
rabbitmqctl start_app
  1. 其余从节点类似
  • rabbitmq103
1
2
3
4
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq101
rabbitmqctl start_app
  1. 验证集群状态
  • 任意节点
1
rabbitmqctl cluster_status

3.3 使用

默认的 guest 用户只能在 localhost 登录。我们需要创建一个管理员账户。

  1. 启用插件
1
rabbitmq-plugins enable rabbitmq_management
  1. 创建用户

    • 任意一台机器操作即可。

    用户 admin 密码 admin123 (请修改复杂密码)

1
rabbitmqctl add_user admin admin123

​ 设置为管理员标签

1
rabbitmqctl set_user_tags admin administrator

​ 设置权限 (所有 vhost,配置、写、读权限)

1
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
  1. 测试访问

http://192.168.10.101:15672

  1. 查看用户
1
rabbitmqctl list_users

四、高可用集群 HA

仅适用于 RabbitMQ 3,任意机器执行即可。

  1. 设置全量镜像策略
1
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
  • ha-all 这是策略的名称,可以随便起
  • "^" 这是匹配规则(正则表达式)。^ 代表匹配所有
  • '{"ha-mode":"all"}' 把匹配到的队列镜像到集群里的所有节点
  1. 列出策略
1
rabbitmqctl list_policies