rabbitmq高可用集群

目录

环境:

1. 对系统做一个简单的初始化

2. 安装软件包

3. 配置RabbitMQ集群

3.1 启动其中一台,并将erlang.cookie的文件复制到其他节点 (其中一台执行即可)

3.2 将剩余俩节点加入集群

3.3 查看集群状态

3.4 将集群配置为高可用状态

3.5 查、增、授权、删 用户

4. 扩展

4.1 将节点类型由【disc修改为ram类型】

4.2 开启web管理

4.3 从集群拆除节点

4.4 查看rabbit可以打开的文件数


环境:

系统:Centos7.9

主机名:rabbitmq-21    IP: 192.168.100.21

主机名:rabbitmq-22    IP: 192.168.100.22

主机名:rabbitmq-23    IP: 192.168.100.23

1. 对系统做一个简单的初始化

# 1. 关闭selinux、firewalld
#
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
setenforce 0
systemctl disable firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service

# 2. 添加hosts,并修改主机名
# 变量
# 相关IP前3字符
Host_Net_Ip="192.168.100"

cat > /etc/hosts << EOF
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.100.21    rabbitmq-21
192.168.100.22    rabbitmq-22
192.168.100.23    rabbitmq-23
EOF

# 配置主机名
oneself_ip=`ip a | grep ${Host_Net_Ip} | awk '{print $2}' | awk -F/ '{print $1}'`
grep -w "$oneself_ip" /etc/hosts | awk '{print $2}' | xargs hostnamectl set-hostname && bash

# 3. 修改系统打开的文件数
grep -w "^* soft nofile.*" /etc/security/limits.conf || echo "* soft nofile 61440" >> /etc/security/limits.conf
grep -w "^* hard nofile.*" /etc/security/limits.conf || echo "* hard nofile 61440" >> /etc/security/limits.conf

grep -w "^DefaultLimitNOFILE.*" /etc/systemd/system.conf || echo "DefaultLimitNOFILE=61440" >> /etc/systemd/system.conf
grep -w "^DefaultLimitNPROC.*" /etc/systemd/system.conf || echo "DefaultLimitNPROC=61440" >> /etc/systemd/system.conf
#【不重启生效】
ulimit -Hn 61440    # 【改大后,不可改小,直到重启恢复默认】
ulimit -Sn 61440

# 4. 配置ntp
yum -y install ntp
sed -i s/centos.pool.ntp.org/cn.pool.ntp.org/g /etc/ntp.conf
ntpdate -u 0.cn.pool.ntp.org
systemctl enable ntpd.service
systemctl restart ntpd.service
systemctl status ntpd.service
ntpdate -u 0.cn.pool.ntp.org

2. 安装软件包

# 软件源[epel]、[openstack-版本]都有软件包,只是epel的不是很新
# 这里用[openstack-stein]源内的包,比较新
# 
yum -y install centos-release-openstack-stein
yum -y install rabbitmq-server

3. 配置RabbitMQ集群

注意:要构建一个RabbitMQ服务,必须保证所有节点服务器的erlange cookie文件完全相同;

3.1 启动其中一台,并将erlang.cookie的文件复制到其他节点 (其中一台执行即可)

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

# 采用rsync -av 方式去传输的话,无需考虑文件权限问题
# 否则应该授权
rsync -av /var/lib/rabbitmq/.erlang.cookie root@192.168.100.22:/var/lib/rabbitmq/
rsync -av /var/lib/rabbitmq/.erlang.cookie root@192.168.100.23:/var/lib/rabbitmq/

3.2 将剩余俩节点加入集群

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq-21
rabbitmqctl start_app

3.3 查看集群状态

rabbitmqctl cluster_status

3.4 将集群配置为高可用状态

# 为了将所有的队列都能同步到所有节点,必须将RabbitMQ策略配置项ha-mode设置为all
# 其中一台执行即可
rabbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'

# 验证集群所属的模式
rabbitmqctl list_policies

3.5 查、增、授权、删 用户

# 1. 查用户,显示创建的用户
rabbitmqctl list_users

# 2. 创用户,使用格式:
# rabbitmqctl add_user 用户名 密码
rabbitmqctl add_user openstack admin-123456

# 3. 为用户配置读写权限,使用格式
# rabbitmqctl set_permissions <user> <conf> <write> <read>
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

# 4. 删用户,使用格式:
# rabbitmqctl delete_user 用户名
rabbitmqctl delete_user openstack

4. 扩展

4.1 将节点类型由【disc修改为ram类型】

# 修改类型需要先停止节点
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app
# 查看集群状态
rabbitmqctl cluster_status

4.2 开启web管理

# 开启web管理,多台机器开启后,可在web界面查看开启节点的各种信息
rabbitmq-plugins enable rabbitmq_management

# 切记,账号仅仅在一台主机上创建即可
# 添加web管理用户 15672端口
rabbitmqctl add_user admin admin # 禁止使用弱密码
# 添加权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
# 修改用户角色
rabbitmqctl set_user_tags admin administrator

4.3 从集群拆除节点

# 1. 拆除节点上执行
rabbitmqctl stop_app 

# 2. 其他节点上执行
rabbitmqctl forget_cluster_node rabbit@node3

# 3. 拆除节点上执行-停止服务
systemctl stop rabbitmq-server.service
systemctl disable rabbitmq-server.service

# 4. rabbitmq-23 上删除 /var/lib/rabbitmq/mnesia 数据库下所有文件

4.4 查看rabbit可以打开的文件数

ps -aux | grep rabbit | grep beam.smp
cat /proc/1587707/limits | grep "open"

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值