RabbitMQ 集群
RabbitMQ 有 3 種模式,其中 2 種是集群模式。
單一模式:即單機(jī)情況不做集群,就單獨運行一個 RabbitMQ 而已。
普通模式:默認(rèn)模式,以兩個節(jié)點(A、B)為例來進(jìn)行說明:
- 當(dāng)消息進(jìn)入 A 節(jié)點的 Queue 后,Consumer 從 B 節(jié)點消費時,RabbitMQ 會在 A 和 B 之間創(chuàng)建臨時通道進(jìn)行消息傳輸,把 A 中的消息實體取出并經(jīng)過通過交給 B 發(fā)送給 Consumer。
- 當(dāng) A 故障后,B 就無法取到 A 節(jié)點中未消費的消息實體;如果做了消息持久化,那么得等 A 節(jié)點恢復(fù),然后才可被消費;如果沒有持久化的話,就會產(chǎn)生消息丟失的現(xiàn)象。
鏡像模式 :經(jīng)典的 Mirror 鏡像模式,保證數(shù)據(jù)不丟失:
- 高可靠性解決方案,主要就是實現(xiàn)數(shù)據(jù)的同步,一般來講是 2 - 3 個節(jié)點實現(xiàn)數(shù)據(jù)同步。
- 對于 100% 數(shù)據(jù)可靠性解決方案,一般是采用 3 個節(jié)點。
- 在實際工作中也是用得最多的,并且實現(xiàn)非常的簡單,一般互聯(lián)網(wǎng)大廠都會構(gòu)建這種鏡像集群模式。
另外,還有主備模式,遠(yuǎn)程模式,多活模式等等。
集群搭建
前置條件:準(zhǔn)備兩臺 linux(192.168.186.128 和 192.168.186.129),并安裝好 RabbitMQ。
- 修改映射文件 vim /etc/hosts 。
1 號服務(wù)器:
127.0.0.1 A localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 A localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.186.128 A
192.168.186.129 B
2 號服務(wù)器:
127.0.0.1 A localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 A localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.186.128 A
192.168.186.129 B
修改完 hosts 文件后,需要重啟 Linux 服務(wù)器 reboot,否則配置不生效。
- 相互通信,cookie 必須保持一致,同步 RabbitMQ 的 cookie 文件:跨服務(wù)器拷貝 .erlang.cookie(隱藏文件,使用 ls -all 顯示)。
scp /var/lib/rabbitmq/.erlang.cookie 192.168.186.129:/var/lib/rabbitmq/
修改 cookie 文件,要重啟 linux 服務(wù)器 reboot。
- 防火墻開放 epmd 端口 4369,啟動 RabbitMQ 服務(wù)。
firewall-cmd --zone=public --add-port=4369/tcp --permanent
firewall-cmd --reload
systemctl start rabbitmq-server
- 加入集群節(jié)點,節(jié)點 A 加入 節(jié)點 B,或者節(jié)點 B 加入節(jié)點 A 都可以:
[root@A ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@A ...
[root@A ~]# rabbitmqctl join_cluster rabbit@B
Clustering node rabbit@A with rabbit@B
[root@A ~]# rabbitmqctl start_app
Starting node rabbit@A ...
- 查看節(jié)點狀態(tài):
rabbitmqctl cluster_status
- 查看管理端
搭建集群結(jié)構(gòu)之后,之前創(chuàng)建的交換機(jī)、隊列、用戶都屬于單一結(jié)構(gòu),在新的集群環(huán)境中是不能用的。
所以在新的集群中重新手動添加用戶即可(任意節(jié)點添加,所有節(jié)點共享)。
[root@A ~]# rabbitmqctl add_user zm 123456
Adding user "zm" ...
[root@A ~]# rabbitmqctl set_user_tags zm administrator
Setting tags for user "zm" to [adminstrator] ...
[root@A ~]# rabbitmqctl set_permissions -p "/" zm ".*" ".*" ".*"
Setting permissions for user "zm" in vhost "/" ...
[root@A ~]# rabbitmqctl list_users
Listing users ...
user tags
zm [administrator]
guest [administrator]
訪問 http://192.168.186.128:15672 和 http://192.168.186.129:15672,兩個節(jié)點共享用戶。
注意:當(dāng)節(jié)點脫離集群還原成單一結(jié)構(gòu)后,交換機(jī),隊列和用戶等數(shù)據(jù)都會重新回來。
此時,RabbitMQ 的集群搭建完畢,但是默認(rèn)采用的模式為“普通模式”,可靠性不高。
鏡像模式
將所有隊列設(shè)置為鏡像隊列,即隊列會被復(fù)制到各個節(jié)點,各個節(jié)點狀態(tài)一致。
語法:set_policy {NAME} {PATTERN} {DEFINITION}
其中:
NAME - 策略名,可自定義
PATTERN - 隊列的匹配模式(正則表達(dá)式)
- ^ 可以使用正則表達(dá)式,比如 ^queue_ 表示對隊列名稱以 queue_ 開頭的所有隊列進(jìn)行鏡像,而 ^ 會匹配所有的隊列。
DEFINITION - 鏡像定義,包括三個部分 ha-mode, ha-params, ha-sync-mode
- ha-mode - high available 高可用模式,指鏡像隊列的模式,有效值為 all/exactly/nodes;當(dāng)前策略模式為 all,即復(fù)制到所有節(jié)點,包含新增節(jié)點。all 表示在集群中所有的節(jié)點上進(jìn)行鏡像;exactly 表示在指定個數(shù)的節(jié)點上進(jìn)行鏡像,節(jié)點的個數(shù)由 ha-params 指定;nodes 表示在指定的節(jié)點上進(jìn)行鏡像,節(jié)點名稱通過 ha-params 指定。
- ha-params - ha-mode 模式需要用到的參數(shù)。
- ha-sync-mode - 進(jìn)行隊列中消息的同步方式,有效值為 automatic 和 manual。
[root@A ~]# rabbitmqctl set_policy policy_renda "^" '{"ha-mode":"all"}'
Setting policy "policy_zm" for pattern "^" to "{"ha-mode":"all"}" with priority "0" for vhost "/" ...
通過管理端 Admin -> Policies -> Add / update a policy 設(shè)置鏡像策略。
設(shè)置好鏡像模式后,在節(jié)點 A 增加了隊列后,節(jié)點 B 也可以看到新增的隊列。
在 RabbitMQ 管理界面 Admin -> Virtual Hosts -> Add a new virtual host 創(chuàng)建虛擬主機(jī) /zm;
使用 Spring 整合的 RabbitMQ 重新測試發(fā)送和接受消息;在其中一個節(jié)點使用命令 rabbitmqctl stop_app 停掉,再測試,仍然可以發(fā)送和接受消息。
HAProxy 實現(xiàn)鏡像隊列的負(fù)載均衡
雖然在程序中訪問 A 服務(wù)器,可以實現(xiàn)消息的同步,但都是 A 服務(wù)器在接收消息,A 太累;是否可以負(fù)載均衡,A 和 B 輪流接收消息,再鏡像同步。
HAProxy 簡介
HA - High Available 高可用,Proxy - 代理。
HAProxy 是一款提供高可用性,負(fù)載均衡,并且基于 TCP 和 HTTP 應(yīng)用的代理軟件。
HAProxy 完全免費。
HAProxy 可以支持?jǐn)?shù)以萬計的并發(fā)連接。
HAProxy 可以簡單又安全的整合進(jìn)架構(gòu)中,同時還保護(hù) Web 服務(wù)器不被暴露到網(wǎng)絡(luò)上。
生產(chǎn)者 -- 投遞消息 --> HAProxy
消費者 -- 訂閱消息 --> HAProxy
HAProxy ---> [MQ Node 1, MQ Node 2, MQ Node 3]
HAProxy 與 Nginx
OSI - Open System Interconnection 開放式系統(tǒng)互聯(lián),是把網(wǎng)絡(luò)通信的工作分為 7 層,分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層和應(yīng)用層。
Nginx 的優(yōu)點:
- 工作在 OSI 第 7 層,可以針對 http 應(yīng)用做一些分流的策略。
- Nginx 對網(wǎng)絡(luò)的依賴非常小,理論上能 ping 通就就能進(jìn)行負(fù)載功能,屹立至今的絕對優(yōu)勢。
- Nginx 安裝和配置比較簡單,測試起來比較方便。
- Nginx 不僅僅是一款優(yōu)秀的負(fù)載均衡器 / 反向代理軟件,它同時也是功能強(qiáng)大的 Web 應(yīng)用服務(wù)器。
HAProxy 的優(yōu)點:
- 工作在網(wǎng)絡(luò) 4 層和 7 層,支持 TCP 與 Http 協(xié)議。
- 它僅僅就只是一款負(fù)載均衡軟件;單純從效率上來講 HAProxy 更會比 Nginx 有更出色的負(fù)載均衡速度,在并發(fā)處理上也是優(yōu)于 Nginx 的。
- 支持 8 種負(fù)載均衡策略 ,支持心跳檢測。
性能上 HAProxy 勝,但是功能性和便利性上 Nginx 勝。
對于 Http 協(xié)議,HAProxy 處理效率比 Nginx 高;所以,沒有特殊要求的時候或者一般場景,建議使用 Haproxy 來做 Http 協(xié)議負(fù)載;如果是 Web 應(yīng)用,建議使用 Nginx。
需要結(jié)合使用場景的特點來進(jìn)行合理地選擇。
安裝和配置
HAProxy 下載:http://www.haproxy.org/download/1.8/src/haproxy-1.8.12.tar.gz
- 上傳到第三臺 Linux 服務(wù)器(192.168.186.130)中并解壓:
tar -zxvf haproxy-1.8.12.tar.gz
-
make時需要使用 TARGET 指定內(nèi)核及版本:
[root@localhost haproxy-1.8.12]# uname -r
3.10.0-229.el7.x86_64
查看目錄下的 README 文件 less /opt/haproxy-1.8.12/README 可知需要根據(jù)內(nèi)核版本選擇編譯參數(shù):
...
To build haproxy, you have to choose your target OS amongst the following ones
and assign it to the TARGET variable :
- linux22 for Linux 2.2
- linux24 for Linux 2.4 and above (default)
- linux24e for Linux 2.4 with support for a working epoll (> 0.21)
- linux26 for Linux 2.6 and above
- linux2628 for Linux 2.6.28, 3.x, and above (enables splice and tproxy)
- solaris for Solaris 8 or 10 (others untested)
- freebsd for FreeBSD 5 to 10 (others untested)
- netbsd for NetBSD
- osx for Mac OS/X
- openbsd for OpenBSD 5.7 and above
- aix51 for AIX 5.1
...
- 進(jìn)入目錄,編譯和安裝:
cd /opt/haproxy-1.8.12/
make TARGET=linux2628 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
- 安裝成功后,查看版本:
[root@localhost haproxy-1.8.12]# /usr/local/haproxy/sbin/haproxy -v
HA-Proxy version 1.8.12-8a200c7 2018/06/27
Copyright 2000-2018 Willy Tarreau <willy@haproxy.org>
- 配置啟動文件,復(fù)制 haproxy 文件到 /usr/sbin 目錄下 ,復(fù)制 haproxy 腳本,到 /etc/init.d 目錄下:
cp /usr/local/haproxy/sbin/haproxy /usr/sbin/
cp /opt/haproxy-1.8.12/examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy
- 創(chuàng)建系統(tǒng)賬號:
useradd -r haproxy
- haproxy.cfg 配置文件需要自行創(chuàng)建:
mkdir /etc/haproxy
vim /etc/haproxy/haproxy.cfg
- 添加配置信息到 haproxy.cfg:
# 全局配置
global
# 設(shè)置日志
log 127.0.0.1 local0 info
# 當(dāng)前工作目錄
chroot /usr/local/haproxy
# 用戶與用戶組
user haproxy
group haproxy
# 運行進(jìn)程 ID
uid 99
gid 99
# 守護(hù)進(jìn)程啟動
daemon
# 最大連接數(shù)
maxconn 4096
# 默認(rèn)配置
defaults
# 應(yīng)用全局的日志配置
log global
# 默認(rèn)的模式 mode {tcp|http|health},TCP 是 4 層,HTTP 是 7 層,health 只返回 OK
mode tcp
# 日志類別 tcplog
option tcplog
# 不記錄健康檢查日志信息
option dontlognull
# 3 次失敗則認(rèn)為服務(wù)不可用
retries 3
# 每個進(jìn)程可用的最大連接數(shù)
maxconn 2000
# 連接超時
timeout connect 5s
# 客戶端超時 30 秒,ha 就會發(fā)起重新連接
timeout client 30s
# 服務(wù)端超時 15 秒,ha 就會發(fā)起重新連接
timeout server 15s
# 綁定配置
listen rabbitmq_cluster
bind 192.168.186.130:5672
# 配置 TCP 模式
mode tcp
# 簡單的輪詢
balance roundrobin
# RabbitMQ 集群節(jié)點配置,每隔 5 秒對 mq 集群做檢查,2 次正確證明服務(wù)可用,3 次失敗證明服務(wù)不可用
server A 192.168.186.128:5672 check inter 5000 rise 2 fall 3
server B 192.168.186.129:5672 check inter 5000 rise 2 fall 3
# haproxy 監(jiān)控頁面地址
listen monitor
bind 192.168.186.130:8100
mode http
option httplog
stats enable
# 監(jiān)控頁面地址 http://192.168.186.130:8100/monitor
stats uri /monitor
stats refresh 5s
- 啟動 HAProxy:
service haproxy start
- 開放對應(yīng)的防火墻端口:
firewall-cmd --zone=public --add-port=5672/tcp --permanent
firewall-cmd --zone=public --add-port=8100/tcp --permanent
firewall-cmd --reload
- 訪問監(jiān)控中心:http://192.168.186.130:8100/monitor
項目發(fā)消息,只需要將服務(wù)器地址修改為 192.168.186.130 即可,其余不變。
這樣,所有的請求都會交給 HAProxy,然后它會負(fù)載均衡地發(fā)給每個 RabbitMQ 服務(wù)器。
KeepAlived 搭建高可用的 HAProxy 集群
如果 HAProxy 服務(wù)器宕機(jī),RabbitMQ 服務(wù)器就不可用了,所以對 HAProxy 也要做高可用的集群。
概述
Keepalived 是 Linux 的輕量級別的高可用熱備解決方案。
Keepalived 的作用是檢測服務(wù)器的狀態(tài),它根據(jù) TCP / IP 參考模型的第三層、第四層、第五層交換機(jī)制檢測每個服務(wù)節(jié)點的狀態(tài),如果有一臺 web 服務(wù)器宕機(jī),或工作出現(xiàn)故障,Keepalived 將檢測到,并將有故障的服務(wù)器從系統(tǒng)中剔除,同時使用其他服務(wù)器代替該服務(wù)器的工作,當(dāng)服務(wù)器工作正常后 Keepalived 自動將服務(wù)器加入到服務(wù)器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復(fù)故障的服務(wù)器。
Keepalived 基于 VRRP - Virtual Router Redundancy Protocol 虛擬路由冗余協(xié)議協(xié)議;VRRP 是一種主備(主機(jī)和備用機(jī))模式的協(xié)議,通過 VRRP 可以在網(wǎng)絡(luò)發(fā)生故障時透明的進(jìn)行設(shè)備切換而不影響主機(jī)之間的數(shù)據(jù)通信。
兩臺主機(jī)之間生成一個虛擬的 ip,稱為漂移 ip,漂移 ip 由主服務(wù)器承擔(dān),一但主服務(wù)器宕機(jī),備份服務(wù)器就會搶奪漂移 ip,繼續(xù)工作,有效的解決了群集中的單點故障。
KeepAlived 將多臺路由器設(shè)備虛擬成一個設(shè)備,對外提供統(tǒng)一 ip(Virtual IP)。
生產(chǎn)者 -- 投遞消息 --> KeepAlived
消費者 -- 訂閱消息 --> KeepAlivedHAProxy 1 --> 主機(jī) 1 --> KeepAlived 虛擬 IP
HAProxy 2 --> 主機(jī) 2 --> KeepAlived 虛擬 IP
安裝 KeepAlived
- 修改映射文件 vim /etc/hosts 。
3 號服務(wù)器 192.168.186.130:
127.0.0.1 C localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 C localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.186.128 A
192.168.186.129 B
192.168.186.130 C
192.168.186.131 D
4 號服務(wù)器 192.168.186.131:
127.0.0.1 D localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 D localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.186.128 A
192.168.186.129 B
192.168.186.130 C
192.168.186.131 D
注意:修改完 hosts 文件后,需要重啟 Linux 服務(wù)器 reboot,否則配置不生效。
- 重新啟動后,需要啟動 haproxy:
service haproxy start
- 主機(jī) C 和主機(jī) D 都安裝 keepalived:
yum install -y keepalived
- 主機(jī) C 修改配置文件(刪掉內(nèi)容,重新創(chuàng)建):
rm -rf /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
# 非常重要,標(biāo)識本機(jī)的 hostname
router_id C
}
vrrp_script chk_haproxy {
# 執(zhí)行的腳本位置
script "/etc/keepalived/haproxy_check.sh"
# 檢測時間間隔
interval 2
# 如果條件成立則權(quán)重減 20
weight -20
}
vrrp_instance VI_1 {
# 非常重要,標(biāo)識主機(jī),備用機(jī) 131 改為 BACKUP
state MASTER
# 非常重要,網(wǎng)卡名(ifconfig 查看)
interface ens33
# 非常重要,自定義,虛擬路由 ID 號(主備節(jié)點要相同)
virtual_router_id 66
# 優(yōu)先級(0-254),一般主機(jī)的大于備機(jī)
priority 100
# 主備信息發(fā)送間隔,兩個節(jié)點必須一致,默認(rèn) 1 秒
advert_int 1
# 認(rèn)證匹配,設(shè)置認(rèn)證類型和密碼,MASTER 和 BACKUP 必須使用相同的密碼才能正常通信
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
# 檢查 haproxy 健康狀況的腳本
chk_haproxy
}
# 簡稱 “VIP”
virtual_ipaddress {
# 非常重要,虛擬 ip,可以指定多個,以后連接 mq 就用這個虛擬ip
192.168.186.66/24
}
}
# 虛擬 ip 的詳細(xì)配置
virtual_server 192.168.186.66 5672 {
# 健康檢查間隔,單位為秒
delay_loop 6
# lvs 調(diào)度算法 rr|wrr|lc|wlc|lblc|sh|dh
lb_algo rr
# 負(fù)載均衡轉(zhuǎn)發(fā)規(guī)則。一般包括 DR, NAT, TUN 3 種
lb_kind NAT
# 轉(zhuǎn)發(fā)協(xié)議,有 TCP 和 UDP 兩種,一般用 TCP
protocol TCP
# 本機(jī)的真實 ip
real_server 192.168.186.130 5672 {
# 默認(rèn)為 1, 失效為 0
weight 1
}
}
- 主機(jī) C 創(chuàng)建執(zhí)行腳本
vim /etc/keepalived/haproxy_check.sh
#!/bin/bash
COUNT=`ps -C haproxy --no-header |wc -l`
if [ $COUNT -eq 0 ];then
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
sleep 2
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
Keepalived 組之間的心跳檢查并不能察覺到 HAproxy 負(fù)載是否正常,所以需要使用此腳本。在 Keepalived 主機(jī)上,開啟此腳本檢測 HAproxy 是否正常工作,如正常工作,記錄日志。如進(jìn)程不存在,則嘗試重啟 HAproxy ,2 秒后檢測,如果還沒有,則關(guān)掉主機(jī)的 Keepalived ,此時備 Keepalived 檢測到主 Keepalived 掛掉,接管 VIP,繼續(xù)服務(wù)。
- 主機(jī) C 給腳本文件增加執(zhí)行權(quán)限:
chmod +x /etc/keepalived/haproxy_check.sh
此時,安裝完畢,按照上面的步驟就可以安裝第二臺主機(jī) D 了(服務(wù)器 hostname 和 ip 注意要修改)。
service keepalived start | stop | status | restart
- 啟動 keepalived(兩臺都啟動):
service keepalived start
- 查看狀態(tài):
ps -ef | grep haproxy
ps -ef | grep keepalived
- 查看 ip 情況 ip addr 或 ip a。
啟動 keepalived 前的情況:
[root@C keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:ac:93:50 brd ff:ff:ff:ff:ff:ff
inet 192.168.186.130/24 brd 192.168.186.255 scope global ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feac:9350/64 scope link
valid_lft forever preferred_lft forever
啟動 keepalived 后的情況:
[root@C keepalived]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:ac:93:50 brd ff:ff:ff:ff:ff:ff
inet 192.168.186.130/24 brd 192.168.186.255 scope global ens33
valid_lft forever preferred_lft forever
inet 192.168.186.66/24 scope global secondary ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:feac:9350/64 scope link
valid_lft forever preferred_lft forever
可以看到 ens33 網(wǎng)卡還多綁定了一個 IP 地址。
常見的網(wǎng)絡(luò)錯誤:子網(wǎng)掩碼、網(wǎng)關(guān)等信息要一致。
測試 vip 和端口一起是否能提供服務(wù)
在 192.168.186.128,A 服務(wù)器上測試。
在服務(wù)器 A 執(zhí)行 curl 192.168.186.130:5672 和 curl 192.168.186.66:5672 都能正常返回 AMPQ,說明安裝成功。
測試 ip 漂移的規(guī)則
使用 ip addr 或 ip a 查看虛擬 ip。
剛開始時,C 和 D 都啟動了 KeepAlived;C 是主機(jī),所以虛擬 ip 在主機(jī) C,表現(xiàn)為主機(jī) C 顯示 inet 192.168.186.66/24,而備機(jī) D 不顯示。
然后,停止主機(jī) C 的 keepalived service keepalived stop,虛擬 ip 漂移到 D 節(jié)點,D 節(jié)點執(zhí)行 ip a 可以看到 inet 192.168.186.66/24,而主機(jī) C 卻不顯示。
接著,重新啟動 C 節(jié)點的 Keepalived,虛擬 ip 依舊在 D 節(jié)點,并不會由于 C 的回歸而回歸。
最后,停止 D 的 Keepalived,虛擬 ip 再漂移回 C 節(jié)點。
測試項目發(fā)消息
消費者或生產(chǎn)者 -- 漂移 IP 66 --> KeepAlived 服務(wù) --> [HAProxy 服務(wù)器C 130, HAProxy 服務(wù)器D 131]
HAProxy 服務(wù)器C 130 -- 負(fù)載均衡 --> [MQ 服務(wù)器A 128, MQ 服務(wù)器B 129]
HAProxy 服務(wù)器D 130 -- 負(fù)載均衡 --> [MQ 服務(wù)器A 128, MQ 服務(wù)器B 129]
測試單個 RabbitMQ 服務(wù)器:將服務(wù)器地址修改為 192.168.186.128,其余不變。
測試 HAProxy 實現(xiàn)多個 RabbitMQ 服務(wù)器負(fù)載均衡:將服務(wù)器地址修改為 192.168.186.130,其余不變。
測試 KeepAlived 實現(xiàn)的高可用的 HAProxy 集群:將服務(wù)器地址修改為 KeepAlived 的虛擬 IP 192.168.186.66,其余不變。