官方提供的脚本(单节点部署)
#!/bin/sh
sudo apt-get install curl gnupg apt-transport-https -y
## Team RabbitMQ's signing key
curl -1sLf "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | sudo gpg --dearmor | sudo tee /usr/share/keyrings/com.rabbitmq.team.gpg > /dev/null
## Add apt repositories maintained by Team RabbitMQ
sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Modern Erlang/OTP releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/ubuntu/jammy jammy main
## Latest RabbitMQ releases
##
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/ubuntu/jammy jammy main
EOF
## Update package indices
sudo apt-get update -y
## Install Erlang packages
sudo apt-get install -y erlang-base \
erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
erlang-runtime-tools erlang-snmp erlang-ssl \
erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl
## Install rabbitmq-server and its dependencies
sudo apt-get install rabbitmq-server -y --fix-missing开启管理界面
rabbitmq-plugins enable rabbitmq_management
访问:http://IP:15672
创建管理员
rabbitmqctl add_user admin admin123
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"

rabbitmq-server的基础使用
启动
systemctl start rabbitmq-server
停止
systemctl stop rabbitmq-server
开机自启
systemctl enable --now rabbitmq-server
取消开机自启
systemctl disable rabbitmq-server
停止 RabbitMQ 应用(RabbitMQ进程还在,只是停止MQ服务)
rabbitmqctl stop_app
启动 RabbitMQ 应用
rabbitmqctl start_app
完全停止 RabbitMQ(关闭整个节点)
rabbitmqctl stop
查看节点状态
rabbitmqctl status
RabbitMQ 管理插件控制:
查看rabbitMQ所有插件
rabbitmq-plugins list
开启管理界面
rabbitmq-plugins enable rabbitmq_management
关闭管理界面
rabbitmq-plugins disable rabbitmq_management
RabbitMQ 用户管理:
查看用户:sudo rabbitmqctl list_users
创建用户:sudo rabbitmqctl add_user user1 password123
设置管理员:sudo rabbitmqctl set_user_tags user1 administrator
删除用户:sudo rabbitmqctl delete_user user1
修改密码:sudo rabbitmqctl change_password user1 newpassword
RabbitMQ 权限管理
RabbitMQ权限是 vhost级别,默认 vhost:/
sudo rabbitmqctl set_permissions -p / user1 ".*" ".*" ".*" #含义分别是configure、write、read
查看权限
sudo rabbitmqctl list_permissions
RabbitMQ 队列管理
查看所有队列:sudo rabbitmqctl list_queues
查看 exchange:sudo rabbitmqctl list_exchanges
查看绑定关系:sudo rabbitmqctl list_bindings
RabbitMQ 日志
日志路径:/var/log/rabbitmq/
常见的日志文件:
rabbit@hostname.log
rabbit@hostname_upgrade.log
RabbitMQ 网络端口
| 端口 | 用途 |
| ----- | ------ |
| 5672 | AMQP协议 |
| 15672 | Web管理 |
| 25672 | 集群通信 |
RabbitMQ 三个常见CLI工具区别
| 工具 | 作用 |
| -------------------- | ----------- |
| rabbitmqctl | 节点管理,本质是curl 封装 |
| rabbitmq-diagnostics | 故障诊断 |
| rabbitmqadmin | HTTP API 管理 |
测试rabbitMQ(部署成功了,但要怎么测试?)
确认 RabbitMQ 已经安装成功:rabbitmqctl status
安装 rabbitmqadmin:wget http://你服务器的IP地址:15672/cli/rabbitmqadmin
赋予执行权限:chmod +x rabbitmqadmin
移动到系统路径:sudo mv rabbitmqadmin /usr/local/bin/
测试:rabbitmqadmin -u admin -p admin123 list queues
创建队列:创建队列:rabbitmqadmin -u admin -p admin123 declare queue name=test durable=true
发送测试消息:rabbitmqadmin -u admin -p admin123 publish routing_key=test payload="hello"
查看队列消息:rabbitmqadmin -u admin -p admin123 get queue=test
官方集群部署方案
参考链接:https://www.rabbitmq.com/docs/clustering
将多个单节点部署成集群,官方明确说了RabbitMQ 节点的识别方式:节点名称
当前环境:
[root@test01 ~]# rabbitmqctl status
Status of node rabbit@test01 ...
Runtime
OS PID: 49791
OS: Linux
Uptime (seconds): 2734
Is under maintenance?: false
RabbitMQ version: 4.2.4
RabbitMQ release series support status: see https://www.rabbitmq.com/release-information
Node name: rabbit@test01
设置主机名(非常重要)
123节点:sudo hostnamectl set-hostname rabbit1
124节点:sudo hostnamectl set-hostname rabbit2
125节点:sudo hostnamectl set-hostname rabbit3
配置 hosts 解析
三台机器都写:
cat >> /etc/hosts <<EOF
10.0.0.123 rabbit1
10.0.0.124 rabbit2
10.0.0.125 rabbit3
EOF
测试一下:ping rabbit1
同步 Erlang Cookie(最关键)
实现RabbitMQ 节点之间认证靠:在 rabbit1查看:
cat /var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@10.0.0.124:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie root@10.0.0.125:/var/lib/rabbitmq/
修改权限:sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie
重启服务:systemctl restart rabbitmq-server
其它节点加入集群
在 rabbit2 执行:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
在 rabbit3 执行:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit1
rabbitmqctl start_app
查看集群状态:rabbitmqctl cluster_status
[root@test01 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@test01 ...
Basics
Cluster name: rabbit@test01
Total CPU cores available cluster-wide: 6
Cluster Tags
(none)
Disk Nodes
rabbit@test01
rabbit@test02
rabbit@test03
Running Nodes
rabbit@test01
rabbit@test02
rabbit@test03
Versions
rabbit@test01: RabbitMQ 4.2.4 on Erlang 27.3.4.6
rabbit@test02: RabbitMQ 4.2.4 on Erlang 27.3.4.6
rabbit@test03: RabbitMQ 4.2.4 on Erlang 27.3.4.6
CPU Cores
Node: rabbit@test01, available CPU cores: 2
Node: rabbit@test02, available CPU cores: 2
Node: rabbit@test03, available CPU cores: 2
Maintenance status
Node: rabbit@test01, status: not under maintenance
Node: rabbit@test02, status: not under maintenance
Node: rabbit@test03, status: not under maintenance
Web UI 也可以看到集群:http://ip:15672
其他节点没有启用 rabbitmq_management_agent 这个插件,就会出现: Node statistics not available
ubt 以 apt 部署方式(可能版本旧)
1 安装 Erlang
RabbitMQ必须依赖 Erlang。
Ubuntu:
apt update
apt install erlang -y
apt install curl gnupg apt-transport-https -y
curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/setup.deb.sh' | sudo -E bash
curl -1sLf 'https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/setup.deb.sh' | sudo -E bash
CentOS:
yum install erlang -y2 安装 RabbitMQ
Ubuntu:
apt install rabbitmq-server -y
systemctl enable rabbitmq-server
systemctl start rabbitmq-server
systemctl status rabbitmq-serverCentOS:
yum install rabbitmq-server -y启动:
systemctl enable rabbitmq-server
systemctl start rabbitmq-server3 开启管理界面
rabbitmq-plugins enable rabbitmq_management访问:
http://IP:15672默认账号:
guest / guest配置高可用队列
RabbitMQ默认:
队列只在一个节点需要配置:
镜像队列 / Quorum Queue
推荐:
Quorum Queue创建策略:
rabbitmqctl set_policy ha-all "^log." \
'{"ha-mode":"all"}'Logstash连接RabbitMQ
Logstash配置:
input {
rabbitmq {
host => "10.0.0.123"
queue => "logs"
user => "log"
password => "log123"
}
}Filebeat可以用:
output.rabbitmq生产环境建议
一定要做:
1 负载均衡
前面加:
HAProxy或
Nginx stream2 监控
建议:
Prometheus + Grafana3 磁盘
RabbitMQ是 磁盘IO敏感
建议:SSD合理架构
+--------------+
| Filebeat |
+--------------+
|
|
+--------------+
| RabbitMQ |
| Cluster |
|123 124 125 |
+--------------+
|
+---------------+
| Logstash x3 |
+---------------+
|
+---------------+
| Elasticsearch |
+---------------+
|
Kibana
评论交流
欢迎留下你的想法