RabbitMQ 集群

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。

  1. 修改映射文件 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,否則配置不生效。

  1. 相互通信,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。

  1. 防火墻開放 epmd 端口 4369,啟動 RabbitMQ 服務(wù)。
firewall-cmd --zone=public --add-port=4369/tcp --permanent
firewall-cmd --reload
systemctl start rabbitmq-server
  1. 加入集群節(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 ...
  1. 查看節(jié)點狀態(tài):
rabbitmqctl cluster_status
  1. 查看管理端

搭建集群結(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:15672http://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

項目發(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
消費者 -- 訂閱消息 --> KeepAlived

HAProxy 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:5672curl 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,其余不變。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容