rabbitmq三节点高可用集群部署
三台主机:1.1.1.15-17
nginx配置
yum -y install zlib zlib-devel openssl-devel
cd /usr/local/src
tar -zxf nginx-1.22.0.tar.gz
cd nginx-1.22.0
./configure --prefix=/usr/local/nginx --user=webadm --group=webadm --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-stream
make && make install
#配置四层代理
$ vim /usr/local/nginx/conf/nginx.conf
stream {
upstream rabbitmq {
server 1.1.1.15:5672 weight=1 max_fails=3 fail_timeout=300s;
server 1.1.1.16:5672 weight=1 max_fails=3 fail_timeout=300s;
server 1.1.1.17:5672 weight=1 max_fails=3 fail_timeout=300s;
}
server {
listen 5671;
proxy_connect_timeout 20s;
proxy_timeout 5m;
proxy_pass rabbitmq;
}
}
rabbitmq安装
配置erlang的yum源,erlang是rabbitmq的依赖包,不同的rabbitmq版本对应不同的erlang的版本。
$ cat /etc/yum.repos.d/erlang.repo
[rabbitmq_erlang]
name=rabbitmq_erlang
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
[rabbitmq_erlang-source]
name=rabbitmq_erlang-source
baseurl=https://packagecloud.io/rabbitmq/erlang/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packagecloud.io/rabbitmq/erlang/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
#若不能联网,可以先在其他主机下载
yum install erlang-23.3.4.11-1.el7.x86_64 -y --downloadonly --downloaddir=/usr/local/src/
#yum安装rabbitmq,我这里的rabbitmq的rpm包是自己官网下载的,也可以配置rabbitmq的yum源。
yum -y install rabbitmq-server-3.9.12-1.el7.noarch.rpm
rabbitmq配置
传输密钥令牌(三个节点都需要操作)
#三个节点修改主机名并写入hosts文件
$ cat /etc/hosts
1.1.1.15 rabbit-node1
1.1.1.16 rabbit-node2
1.1.1.17 rabbit-node3
#node1启动rabbitmq服务,启动后/var/lib/rabbitmq目录会生成.erlang.cookie文件
systemctl restart rabbitmq-server
#授权.erlang.cookie文件
cd /var/lib/rabbitmq
chmod 600 .erlang.cookie
#关闭rabbitmq服务,并把.erlang.cookie传到其他两个节点,其他两个节点均需要授权
scp -r /var/lib/rabbitmq/.erlang.cookie root@rabbit-node2:/var/lib/rabbitmq/
scp -r /var/lib/rabbitmq/.erlang.cookie root@rabbit-node3:/var/lib/rabbitmq/
#16,17对文件授权
chmod 600 /var/lib/rabbitmq/.erlang.cookie
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
集群创建(三个节点都需要操作)
以node1为主,其它两个节点逐步加入。
#三个节点启动rabbitmq服务
systemctl start rabbitmq-server
#16,17分别执行以下命令加入集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbit-node1
rabbitmqctl start_app
#查看集群状态
$ rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit-node1 ...
Basics
Cluster name: rabbit@rabbit-node1
Disk Nodes
rabbit@rabbit-node1
rabbit@rabbit-node2
rabbit@rabbit-node3
Running Nodes
rabbit@rabbit-node1
rabbit@rabbit-node2
rabbit@rabbit-node3
...
rabbitmq实现浏览器访问(node1节点)
#启动插件
rabbitmq-plugins enable rabbitmq_management
#创建用户
rabbitmqctl add_user rabbitmq CDC_yhcx2022
#授予用户角色为管理员
rabbitmqctl set_user_tags rabbitmq administrator
#授权
rabbitmqctl set_permissions -p "/" rabbitmq ".*" ".*" ".*"
浏览器输入任意节点加15672端口即可访问集群

开启镜像队列
指定了 ha-mode 的值为 all ,代表消息会被同步到所有节点的相同队列中。
#rabbitmqctl set_policy -p / --apply-to queues my_queue_mirror "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
keepalived配置
略。
p / --apply-to queues my_queue_mirror “^” ‘{“ha-mode”:“all”,“ha-sync-mode”:“automatic”}’
rabbitmqctl set_policy ha-all “^” ‘{“ha-mode”:“all”}’
### keepalived配置
略。
2045

被折叠的 条评论
为什么被折叠?



