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 验证
- 在 Erlang 的版本定义里,
Emulator 11.x 对应的就是 Erlang/OTP 23.x
启动
1
| systemctl enable --now rabbitmq-server
|
三、搭建集群
需提前做好 hosts 解析。
3.1 准备工作
- Erlang 节点间通信需要完全一致的 Cookie 文件
1 2 3
| cat > /var/lib/rabbitmq/.erlang.cookie <<EOF VMBQVRFSQJJIUFJNHWQU EOF
|
1
| cat /var/lib/rabbitmq/.erlang.cookie
|
- 修正权限
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
| systemctl restart rabbitmq-server
|
3.2 加入集群
- 主节点
rabbit101 无须操作
- 从节点加入集群
注意:设置正确的主机名,并且不要多个从节点同时加入集群
停止 RabbitMQ 应用(但不停止 Erlang 虚拟机)
重置该节点数据(新装机器可选,若是旧机器必须执行以清除旧数据)
加入到 rabbitmq101,
1
| rabbitmqctl join_cluster rabbit@rabbitmq101
|
启动应用
- 其余从节点类似
1 2 3 4
| rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@rabbitmq101 rabbitmqctl start_app
|
- 验证集群状态
1
| rabbitmqctl cluster_status
|
3.3 使用
默认的 guest 用户只能在 localhost 登录。我们需要创建一个管理员账户。
- 启用插件
1
| rabbitmq-plugins enable rabbitmq_management
|
创建用户
用户 admin 密码 admin123 (请修改复杂密码)
1
| rabbitmqctl add_user admin admin123
|
设置为管理员标签
1
| rabbitmqctl set_user_tags admin administrator
|
设置权限 (所有 vhost,配置、写、读权限)
1
| rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
|
- 测试访问
http://192.168.10.101:15672
- 查看用户
四、高可用集群 HA
仅适用于 RabbitMQ 3,任意机器执行即可。
- 设置全量镜像策略
1
| rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
|
ha-all 这是策略的名称,可以随便起
"^" 这是匹配规则(正则表达式)。^ 代表匹配所有
'{"ha-mode":"all"}' 把匹配到的队列镜像到集群里的所有节点
- 列出策略
1
| rabbitmqctl list_policies
|