1.集群节点介绍
节点ip | 主机名称 | 运行服务 |
10.0.129.13 | tcs-10-0-129-13 | keepalived haproxy rabbitmq |
10.0.129.14 | tcs-10-0-129-14 | keepalived haproxy rabbitmq |
10.0.129.15 | tcs-10-0-129-15 | rabbitmq |
2.rabbitmq集群部署
1.需要部署机器的节点创建挂载目录这边我们需要创建的就是13,14,15 这三台
mkdir /opt/rabbitmq/
2.写入每台节点用于映射hosts文件
cat >> /opt/rabbitmq/hosts << EOF
10.0.129.13 rabbitmq01
10.0.129.14 rabbitmq02
10.0.129.15 rabbitmq03
EOF
3.配置完成后开始部署这里直接使用宿主机网络 访问端口是15672 使用端口是5972
# 第一个节点启动mq容器
docker run -itd --log-opt max-size=10m --log-opt max-file=4 \
--name rabbit1 --hostname rabbitmq01 --restart=always \
-e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=root \
-e RABBITMQ_ERLANG_COOKIE='secret cookie here' -v /opt/rabbitmq/hosts:/etc/hosts \
-v /opt/rabbitmq:/var/lib/rabbitmq:z --net host rabbitmq:3.6.15-management
##第二个节点启动mq容器
docker run -itd --log-opt max-size=10m --log-opt max-file=4 \
--name rabbit2 --hostname rabbitmq02 --restart=always \
-e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=root \
-e RABBITMQ_ERLANG_COOKIE='secret cookie here' -v /opt/rabbitmq/hosts:/etc/hosts \
-v /opt/rabbitmq:/var/lib/rabbitmq:z --net host rabbitmq:3.6.15-management
## 第三个节点启动mq容器
docker run -itd --log-opt max-size=10m --log-opt max-file=4 \
--name rabbit3 --hostname rabbitmq03 --restart=always \
-e RABBITMQ_DEFAULT_USER=root -e RABBITMQ_DEFAULT_PASS=root \
-e RABBITMQ_ERLANG_COOKIE='secret cookie here' -v /opt/rabbitmq/hosts:/etc/hosts \
-v /opt/rabbitmq:/var/lib/rabbitmq:z --net host rabbitmq:3.6.15-management
4.第一台机器:
进入容器 docker exec -it rabbit1 /bin/bash
查看rabbitmq集群状态(这步只是为为了方便取得rabbitmq的名称,便于加入集群中): rabbitmqctl cluster_status
4.1第二台机器:
进入容器: docker exec -it rabbit2 /bin/bash
查看集群: rabbitmqctl cluster_status
停止: rabbitmqctl stop_app
重置: rabbitmqctl reset
#注释: @ 后面的主机名字 加入集群—内存节点:
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
启动服务:rabbitmqctl start_app
4.3第三台机器:
进入容器 docker exec -it rabbit3 /bin/bash
查看集群(测试启动是否成功OK接着下一步):rabbitmqctl cluster_status
停止: rabbitmqctl stop_app
重置: rabbitmqctl reset
#注释: @ 后面的主机名字 加入集群—磁盘节点:
rabbitmqctl join_cluster rabbit@rabbitmq01
启动服务:rabbitmqctl start_app
5.开启镜像列队进行
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
2.1.访问验证
3. haproxy负载部署
注意:以下操作配置在14节点上相同这里不在进行赘述
1.这里直接下载haproxy
yum install -y haproxy
2.修改配置文件
[root@tcs-10-0-129-13 /etc/haproxy]# vi haproxy.cfg
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend app
mode tcp
# 负载访问地址
bind *:9090
default_backend app
#backend static
# balance roundrobin
# server static 127.0.0.1:4331 check
#轮询后端地址
backend app
balance roundrobin
server app1 10.0.129.13:15672 check inter 5000 rise 2 fall 3
server app2 10.0.129.14:15672 check inter 5000 rise 2 fall 3
server app3 10.0.129.15:15672 check inter 5000 rise 2 fall 3
# 监控页面
listen stats
bind *:1080
## 访问 x.x.x.x:1080/admin 输入一下auth即可访问监控页面
stats auth admin:admin@123
stats refresh 5s
stats realm HAProxy\ Statistics
stats uri /admin
3.1.负载验证
这里我们访问13节点的9090端口可以看到能正常访问rabbitmq,证明负载生效
3.2.负载监控查看
4.keepalived部署
为了防止负载节点挂掉vip能够漂移
1.13.14两台节点下载需要命令和服务
#为了使用kiall命令验证需要下载 psmisc
yum install -y psmisc
yum install -y keepalived
修改主节点配置
[root@tcs-10-0-129-13 /etc/haproxy]# cat /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_DEVEL
}
#HAProxy健康检查配置
vrrp_script chk_haproxy {
script "killall -0 haproxy" #使用killall -0检查haproxy实例是否存在,性能高于ps命令
interval 2 #脚本运行周期
weight 2 #每次检查的加权权重值
}
vrrp_instance HA_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.129.77/24 #配置的vip地址
}
track_script {
chk_haproxy #对应的健康检查配置
}
}
修改从节点配置
[root@tcs-10-0-129-14 /etc/haproxy]# vi /etc/keepalived/keepalived.conf
global_defs {
router_id LVS_DEVEL
}
#HAProxy健康检查配置
vrrp_script chk_haproxy {
script "killall -0 haproxy" #使用killall -0检查haproxy实例是否存在,性能高于ps命令
interval 2 #脚本运行周期
weight 2 #每次检查的加权权重值
}
vrrp_instance HA_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.0.129.77/24
}
track_script {
chk_haproxy #对应的健康检查配置
}
}