CentOS7-RabbitMQ集群搭建 – 记忆角落

CentOS7-RabbitMQ集群搭建

/ 0评 / 1

CentOS7-RabbitMQ集群搭建

目标

在CentOS7中快速安装RabbitMQ

此次安装的RabbitMQ版本为:3.8.3,erlang版本为:22.3.2

下载erlang时需要注意版本兼容性问题:https://www.rabbitmq.com/which-erlang.html

ip 备注
10.80.210.67 hostname:ns1
10.80.210.68 hostname:ns2
10.80.210.69 hostname:ns3

前提

1.时间同步(检查时间)

2.设置selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0

3.设置firewalld策略(关闭防火墙)

systemctl stop firewalld
systemctl disable firewalld

4.设置hostname,及其hosts

设置hostname目的是为了防止启动管理界面时候出现的错误,和加入集群也会出错,这是避坑第一步

#每台服务器设置hostname
hostnamectl set-hostname ns1
hostnamectl set-hostname ns2
hostnamectl set-hostname ns3

# 设置 /etc/hosts
echo 10.80.210.67 ns1 >> /etc/hosts
echo 10.80.210.68 ns2 >> /etc/hosts
echo 10.80.210.69 ns3 >> /etc/hosts

安装及配置RabbitMQ

安装依赖环境

yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz

根据官方文档说明建议也要先安装socatlogrotateyum install socat logrotate

安装erlang

rpm包下载:https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-22.3.2-1.el7.x86_64.rpm

安装:rpm -Uvh erlang-22.3.2-1.el7.x86_64.rpm

安装RabbitMQ

rpm包下载:https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.3/rabbitmq-server-3.8.3-1.el7.noarch.rpm

or:https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.8.3-1.el7.noarch.rpm

安装:rpm -ivh rabbitmq-server-3.8.3-1.el7.noarch.rpm

安装路径默认在:/usr/lib/rabbitmq/lib/rabbitmq_server-3.8.3/ebin

开启管理界面及配置

# 开启rabbitmq management及远程登录
rabbitmq-plugins enable rabbitmq_management

# 开启 mqtt (如果需要mqtt则需要开启,3.8.x开启默认内置)
rabbitmq-plugins enable rabbitmq_mqtt

启动停止服务

systemctl start rabbitmq-server # 启动服务
systemctl stop rabbitmq-server # 停止服务
systemctl restart rabbitmq-server # 重启服务

命令行方式初始化管理员账号

默认存在一个guest账号,但是guest账号只能在本机登录(centos本机)

解决办法:新建一个新的管理员账号

# 创建用户
rabbitmqctl add_user xinsec DB.xinsec

#设置超级管理员
rabbitmqctl set_user_tags xinsec administrator

#授权远程访问(也可以登录后,可视化配置)
rabbitmqctl set_permissions -p / xinsec "." "." ".*"

#---以下命令可忽略---
#查看用户列表
rabbitmqctl  list_users
#修改对应用户密码
rabbitmqctl  change_password  username  'newpasswd'

访问界面

http://IP:15672

添加用户 出现以下错误,请检查 /etc/hosts 是否加入!!

Error: unable to perform an operation on node 'rabbit@ns'. Please see diagnostics information and suggestions below.

RabbitMQ普通集群搭建

接下来我们开始集群的配置。

ns2/ns3服务器中先执行:systemctl stop rabbitmq-server

ns1服务器执行把.erlang.cookie复制到ns2/ns3

scp .erlang.cookie ns2:/var/lib/rabbitmq/.erlang.cookie
scp .erlang.cookie ns3:/var/lib/rabbitmq/.erlang.cookie

然后分别执行如下命令将 ns2/ns3加入ns1集群中:

systemctl restart rabbitmq-server 

# 加入ns1集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@ns1
rabbitmqctl start_app

#---以下命令可忽略---
# 查看集群的状态
rabbitmqctl cluster_status

进入界面,可以看到,此时集群中已经有三个节点了

image-20220714105945882

搭建镜像集群-普通集群转镜像集群

因为普通集群无法实现高可用

但所谓的``镜像集群模式`并不需要额外搭建,只需要我们将队列配置为镜像队列即可。

这个配置可以通过网页配置,也可以通过命令行配置

在任意一个节点上面执行即可。

默认是将所有的队列都设置为镜像队列,在消息会在不同节点之间复制,各节点的状态保持一致。

网页配置

先来看看网页上如何配置镜像队列。

点击 Admin 选项卡,然后点击右边的 Policies,再点击 Add/update a policy,如下图:

img

接下来添加一个策略,如下图:

img

各参数含义如下:

配置完成后,点击下面的 add/update policy 按钮,完成策略的添加

命令行配置

命令行的配置格式如下:

rabbitmqctl set_policy [-p vhost] [--priority priority] [--apply-to apply-to] {name} {pattern} {definition}

配置案例:

rabbitmqctl set_policy -p / --apply-to queues my_queue_mirror "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'

发表评论

您的电子邮箱地址不会被公开。