# Rabbitmq 集群部署
# 一、环境配置
# 1.1 关闭防火墙、Selinux
| systemctl disable --now firewalld |
| setenforce 0 |
| sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux |
| sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config |
# 1.2 配置 yum 源
| |
| sed -e 's|^mirrorlist=|#mirrorlist=|g' \ |
| -e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \ |
| -i.bak \ |
| /etc/yum.repos.d/rocky-*.repo |
| yum clean all && yum makecache |
| mkdir /soft /data /scripts /backup |
# 1.3 安装 ntpdate
| sudo dnf install epel-release -y |
| sudo dnf config-manager --set-enabled epel |
| sudo dnf install ntpsec |
# 1.4 配置时间同步
| ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
| echo 'Asia/Shanghai' >/etc/timezone |
| ntpdate time2.aliyun.com |
| |
| crontab -e |
| */5 * * * * /usr/sbin/ntpdate time2.aliyun.com |
# 1.5 配置文件描述符
| ulimit -SHn 65535 |
| vim /etc/security/limits.conf |
| |
| * soft nofile 65536 |
| * hard nofile 131072 |
| * soft nproc 65535 |
| * hard nproc 655350 |
| * soft memlock unlimited |
| * hard memlock unlimited |
# 1.6 系统内核参数调优
| cat >>/etc/sysctl.conf<<EOF |
| vm.max_map_count = 262144 |
| vm.swappiness=1 |
| |
| net.ipv4.tcp_fin_timeout=2 |
| net.ipv4.tcp_tw_reuse=1 |
| #net.ipv4.tcp_tw_recycle=1 |
| net.ipv4.tcp_syncookies=1 |
| net.ipv4.tcp_keepalive_time=600 |
| net.ipv4.ip_local_port_range=4000 65000 |
| net.ipv4.tcp_max_syn_backlog=16384 |
| net.ipv4.route.gc_timeout=100 |
| net.ipv4.tcp_max_tw_buckets= 5000 |
| |
| net.ipv4.tcp_syn_retries=1 |
| net.ipv4.tcp_synack_retries=1 |
| net.core.somaxconn=16384 |
| net.core.netdev_max_backlog=16384 |
| net.ipv4.tcp_max_orphans=16384 |
| |
| # 设置最大内存共享段大小bytes |
| kernel.shmmax=15461882265 |
| kernel.shmall=3774873 |
| # 修改消息队列长度 |
| kernel.msgmax=65535 |
| kernel.msgmnb=65535 |
| EOF |
# 1.7 修改默认资源限制
| cat >>/etc/systemd/system.conf<< EOF |
| DefaultLimitNOFILE=65536 |
| DefaultLimitNPROC=32000 |
| DefaultLimitMEMLOCK=infinity |
| EOF |
# 1.8 执行命令生效状态
# 1.9 安装基础软件包
| yum install wget jq psmisc vim unzip net-tools telnet tree yum-utils device-mapper-persistent-data \ |
| lvm2 git nfs-utils iotop httpd-tools dos2unix lrzsz -y |
# 1.10 升级系统
| yum update -y --exclude=kernel* && reboot |
# 二、Rabbitmq 集群部署
# 2.1 环境准备
192.168.40.101 | 192.168.40.102 | 192.168.40.103 |
---|
master | slave1 | slave2 |
# 2.2 修改 hosts
| vim /etc/hosts |
| 192.168.40.101 rabbitmq-01 |
| 192.168.40.102 rabbitmq-02 |
| 192.168.40.103 rabbitmq-03 |
# 2.3 配置 hosts
| hostnamectl set-hostname rabbitmq-01 |
| hostnamectl set-hostname rabbitmq-02 |
| hostnamectl set-hostname rabbitmq-03 |
# 2.4 安装包下载
| wget https://github.com/rabbitmq/erlang-rpm/releases/download/v27.3.1/erlang-27.3.1-1.el8.x86_64.rpm |
| wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm |
| wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v4.1.0/rabbitmq-server-4.1.0-1.el8.noarch.rpm |
# 2.5 安装 rabbitmq
| yum localinstall erlang-27.3.1-1.el8.x86_64.rpm -y |
| yum localinstall socat-1.7.3.2-5.el7.lux.x86_64.rpm -y |
| yum localinstall rabbitmq-server-4.1.0-1.el8.noarch.rpm -y |
# 2.6 配置 rabbitmq
所有节点创建自定义数据和日志目录
| mkdir -p /data/rabbitmq/data /data/rabbitmq/log |
所有节点编辑配置文件
| vim /etc/rabbitmq/rabbitmq-env.conf |
| RABBITMQ_MNESIA_BASE=/data/rabbitmq/data |
| RABBITMQ_LOG_BASE=/data/rabbitmq/log |
| RABBITMQ_ERLANG_COOKIE=/data/rabbitmq/.erlang.cookie |
所有节点赋予.erlang.cookie 文件权限(其他 2 台从节点 cookie 值要保持一致,权限为 owner 只读),RabbitMQ 的集群是依赖 erlang 集群,而 erlang 集群是通过这个 cookie 进行通信认证的。
| vim /data/rabbitmq/.erlang.cookie |
| KAIJQVKJHAGMUCWXZGVG |
| |
| chmod -R 400 /data/rabbitmq/.erlang.cookie |
| chown -R rabbitmq.rabbitmq /data/rabbitmq/ |
# 2.7 rabbitmq 启动
所有节点启动 web 管理插件和分片插件
| rabbitmq-plugins enable rabbitmq_management |
| rabbitmq-plugins enable rabbitmq_sharding |
所有节点设置开机自启
| systemctl enable rabbitmq-server |
| systemctl restart rabbitmq-server |
| systemctl status rabbitmq-server |
# 2.8 加入集群
创建集群,在 node2 和 node3 上执行加入集群命令(主节点无需执行如下操作):
| |
| rabbitmqctl stop_app |
| |
| |
| rabbitmqctl join_cluster rabbit@rabbitmq-01 |
| |
| |
| rabbitmqctl start_app |
| |
| |
| rabbitmqctl cluster_status |
![Snipaste_2025-05-29_20-40-27.jpg]()
# 2.9 配置 rabbitmq 权限
rabbitmq 有一个默认的账号密码 guest,但该情况仅限于本机 localhost 进行访问,所以需要添加一个远程登录的用户。
角色有四种:
- administrator:可以登录控制台、查看所有信息、并对 rabbitmq 进行管理
- monToring:监控者;登录控制台,查看所有信息
- policymaker:策略制定者;登录控制台指定策略
- managment:普通管理员;登录控制
| |
| rabbitmqctl add_user admin 123456 |
| |
| |
| rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*" |
| |
| |
| rabbitmqctl set_user_tags admin administrator |
这里创建用户 xuyong,密码 123456,设置 adminstator 角色,赋予所有权限
| |
| rabbitmqctl add_user xuyong 123456 |
| |
| |
| rabbitmqctl set_permissions -p "/" xuyong ".*" ".*" ".*" |
| |
| |
| rabbitmqctl add_vhost /xuyong |
| |
| |
| |
| rabbitmqctl set_permissions -p "/xuyong" xuyong ".*" ".*" ".*" |
| |
| |
| rabbitmqctl list_permissions -p /xuyong |
| |
| |
| rabbitmqctl set_user_tags xuyong administrator |
| |
| |
| rabbitmqctl delete_user guest |
在其他节点检查,账户是否已同步
# 2.10 访问 rabbitmq
浏览器访问:http://192.168.40.101:15672/
用户名: admin
密码:123456
![Snipaste_2025-05-29_20-29-59.jpg]()