RabbitMQ集群安装
1.前言
OS: CentOS Linux release 7.9.2009 (Core)
机器:
IP | node | cpu | 内存 | 存储 |
---|---|---|---|---|
10.106.1.241 | max-rabbitmg-01 | 8 核 | 16 G | 100 G |
10.106.1.242 | max-rabbitmg-02 | 8 核 | 16 G | 100 G |
10.106.1.243 | max-rabbitmg-03 | 8 核 | 16 G | 100 G |
因为操作系统版本是 centos7,所以RabbitMQ安装版本,选的是最后一个支持RHEL7的版本。
在安装RabbitMQ之前,需要安装Erlang/OTP支持的版本。RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的。
再确定要下载的RabbitMQ的版本号之后,访问网址选择Erlang版本查看匹配对应Erlang的版本号,并进行下载。
本次下载RabbitMQ版本为3.10.0-1对应的Erlang版本为23.3.4.11-1
RabbitMQ: 3.10.0-1
Erlang: 23.3.4.11-1
2.准备
注意,以下操作,分别在3台机器上执行
配置hosts:
cat << \EOF >> /etc/hosts
10.106.1.241 max-rabbitmq-01
10.106.1.242 max-rabbitmq-02
10.106.1.243 max-rabbitmq-03
EOF
查看hosts配置是否正确:
ping max-rabbitmq-01
ping max-rabbitmq-02
ping max-rabbitmq-03
关闭selinux:
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0
关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
安装存储库:
curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | bash
curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | bash
下载rpm安装包:
wget --content-disposition https://packagecloud.io/rabbitmq/erlang/packages/el/7/erlang-23.3.4.11-1.el7.x86_64.rpm/download.rpm?distro_version_id=205
wget --content-disposition https://packagecloud.io/rabbitmq/rabbitmq-server/packages/el/7/rabbitmq-server-3.10.0-1.el7.noarch.rpm/download.rpm?distro_version_id=205
3.安装
注意,以下操作,分别在3台机器上执行
安装:
yum install -y erlang-23.3.4.11-1.el7.x86_64.rpm
yum install -y rabbitmq-server-3.10.0-1.el7.noarch.rpm
启动服务、并设置开机服务:
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
其它服务命令:
# 启动
systemctl start rabbitmq-server
# 查看状态
systemctl status rabbitmq-server
# 停止
systemctl stop rabbitmq-server stop
4.端口授权
RabbitMQ节点绑定到端口(开放服务器TCP套接字)以接受客户端和CLI工具连接。
其他进程和工具(如SELinux)可能会阻止RabbitMQ绑定端口。
当发生这种情况时,节点将无法启动。
CLI工具、客户端库和RabbitMQ节点也可以打开连接(客户端TCP套接字)。
防火墙可以阻止节点和CLI工具之间的通信。
为了确保以下端口可访问,请单独端口开启授权,请直接关闭防火墙。
这里推荐直接关闭防火墙
4369: epmd, RabbitMQ节点和CLI工具使用的对等体发现服务
5672, 5671:用于AMQP 0-9-1和1.0客户端,无论是否使用TLS
25672:用于节点间和CLI工具通信(Erlang分发服务器端口),动态范围分配(默认限制为单个端口,计算为AMQP端口+ 20000)。除非这些端口上的外部连接确实是必要的(例如集群使用联合或在子网外的机器上使用CLI工具),否则这些端口不应该公开。具体请参见组网指南。
35672-35682: CLI工具(Erlang分发客户端端口)用于与节点通信,按动态范围(服务器分发端口+ 10000 ~服务器分发端口+ 10010计算)分配。具体请参见组网指南。
15672: HTTP API客户端,管理UI和rabbitmqadmin(只有启用了管理插件)
61613,61614: STOMP客户端不带TLS或带TLS(仅当启用STOMP插件时)
1883、8883:MQTT客户端,如果启用了MQTT插件,则不使用TLS或使用TLS
15674: STOMP-over- websockets客户端(仅当Web STOMP插件启用时)
15675: MQTT-over- websockets客户端(仅当启用Web MQTT插件时)
15692: Prometheus metrics(仅当Prometheus插件启用时)
5.开启远程登录
注意,以下操作,分别在3台机器上执行
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins enable rabbitmq_mqtt
6.添加用户及权限
注意,以下操作,分别在3台机器上执行
添加RabbitMQ用户及权限:
rabbitmqctl add_user admin 你RabbitMQ的密码
rabbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
执行rabbitmqctl add_user
时,出现 Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
这段是提醒记得设置权限。
执行完创建用户及授权命令后,可以试下账号是否能登录:
http://10.106.1.241:15672
http://10.106.1.242:15672
http://10.106.1.243:15672
7.集群配置
在max-rabbitmq-02、max-rabbitmq-03节点执行停RabbitMQ服务的命令:
systemctl stop rabbitmq-server
后面的集群配置,为了确保计算机中erlang.cookie文件是一致的,执行以下脚本scp命令。
拷贝.erlang.cookie到max-rabbitmq-02、max-rabbitmq-03节点:
scp /var/lib/rabbitmq/.erlang.cookie root@max-rabbitmq-02:/var/lib/rabbitmq/.erlang.cookie
scp /var/lib/rabbitmq/.erlang.cookie root@max-rabbitmq-03:/var/lib/rabbitmq/.erlang.cookie
重启max-rabbitmq-02、max-rabbitmq-03的RabbitMQ服务:
systemctl start rabbitmq-server
max-rabbitmq-02加入集群:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@max-rabbitmq-01
rabbitmqctl start_app
rabbitmqctl cluster_status
max-rabbitmq-03加入集群:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@max-rabbitmq-01
rabbitmqctl start_app
rabbitmqctl cluster_status
登录http://10.106.1.241:15672查看集群状态
正常情况如下图:
8.引用 Reference
Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
CentOS8搭建nfs服务
k8s一键安装redis单机版
k8s一键安装mysql8单机版
Docker制作springboot运行应用镜像
k8s部署springboot应用
zookeeper集群安装
Nginx日志切割
Elasticsearch单机版本安装
Elasticsearch集群安装
springboot集成prometheus+grafana
安装Docker及学习
RabbitMQ集群安装