RabbitMQ高級特性第5篇-單機多節點集羣

一、單機多節點集羣-普通模式

1、停止RabbitMQ 服務

systemctl stop rabbitmq-server

2、啓動第一個節點

  • 沒有指定web管理控制檯使用的端口則默認使用15672
RABBITMQ_NODE_PORT=5673 RABBITMQ+NODENAME=rabbit1 rabbitmq-server start

3、啓動第二個節點

  • 需要指定web管理控制檯使用的端口,這裏指定爲:15674
RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server start

4、將rabbit1作爲主節點

# 先停止節點服務
rabbitmqctl -n rabbit1 stop_app
# 重置節點服務
rabbitmqctl -n rabbit1 rest
# 啓動節點服務
rabbitmqctl -n rabbit1 start_app

5、將rabbit2作爲從節點

# 停止節點服務
rabbitmqctl -n rabbit2 stop_app
# 重置節點服務
rabbitmqctl -n rabbit2 reset
# 將rabbit2節點作爲從節點添加到主節點rabbit1,其中localhost是主機名換成自己的即可
rabbitmqctl -n rabbit2 join_cluster rabbit1@'localhost'  
# 啓動節點服務
rabbitmqctl -n rabbit2 start_app

6、訪問web管理控制檯

  • 如下圖所示已經成功啓動了兩個節點

二、RabbitMQ鏡像集羣配置-鏡像模式

上面已經完成RabbitMQ多節點普通模式集羣配置,普通模式集羣並不保證隊列的高可用性,雖然交換機綁定隊列這些可以複製到集羣的任何一個節點,但是隊列內容不會複製。如果想要在隊列節點宕機或故障也正常應用,就要複製(同步)隊列內容到集羣裏的每一個節點,此時需要將隊列做成鏡像隊列,將普通模式變成鏡像模式:消息會主動在鏡像節點間同步。

鏡像模式要依賴policy模塊,這個模塊是做什麼用的呢?Policy中文來說是政策或策略的意思:它就是要設置那些Exchanges或者queue的數據需要複製、同步,如何複製同步?對就是做這些的。設置Policy可以通過管理網頁設置:如下圖

  • Name: 策略名稱
  • Pattern: 匹配規則,如果匹配所有的隊列,是^
  • Definition: 使用ha-mode模式中的all,表示同步所有匹配的隊列。

也可以通過如下命令設置:

rabbitmqctl set_policy my_ha "^" '{"ha-mode":"all"}'

配置完看隊列如下,其中標識my_ha的說明使用my_ha策略,屬於鏡像模式,沒有表示的就是普通模式

三、負載均衡-HAProxy

1、安裝HAProxy

# 下載HAProxy地址:https://pan.baidu.com/s/1NzhZc85jxOJsx9plnXi6qQ
# 將安裝包上傳到Linux系統
# 下載依賴包
yum install gcc vim wget
# 解壓安裝包
tar -xvf haproxy-1.8.10.tar.gz -C /usr/local
# 進入解壓目錄
cd /usr/local/haproxy-1.8.10
# 執行編譯命令
make TARGET=linux2628 ARCH=x86_64 PREFIX=/usr/local/haproxy
# 執行安裝命令
make install PREFIX=/usr/local/haproxy
# 查看haproxy版本
/usr/local/haproxy/sbin/haproxy -v

2、配置HAProxy

# 創建配置文件所在的目錄
mkdir /etc/haproxy
# 創建haproxy配置文件
vim /etc/haproxy/haproxy.cfg
  • 配置內容如下:
global
    log 127.0.0.1 local0 info
    maxconn 4096
    chroot /usr/local/haproxy
    uid 99
    gid 99
    daemon
    quiet
    nbproc 20
    pidfile /var/run/haproxy.pid
    
defaults
    log global
    mode    tcp
    option  tcplog
    option  dontlognull
    retries 3
    option  redispatch
    maxconn 2000
    timeout connect 5s
    timeout client 120s
    timeout server 120s
    
listen rabbitmq_cluster 
    # 定義監聽地址和端口,本機的5672端口
    bind 0.0.0.0:5672
    # 配置 tcp 模式
    mode tcp
    # 簡單的輪詢
    balance roundrobin
    #rabbitmq集羣節點配置 #inter 每隔五秒對mq集羣做健康檢查,2次正確證明服務器可用,
    #3次失敗證明服務器不可用,並且配置主備機制
    server node1 127.0.0.1:5673 check inter 5000 rise 2 fall 3
    server node2 127.0.0.1:5674 check inter 5000 rise 2 fall 3
    
# 配置 haproxy web 監控,查看統計信息
listen stats
    bind 192.168.33.100:8100
    mode http
    option httplog
    stats enable
    # 設置 haproxy 監控地址爲:http://192.168.33.100:8100/rabbitmq-stats
    stats uri   /rabbitmq-stats
    stats refresh 5s

3、啓動HAProxy

# 啓動HAProxy並指定配置文件
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
# 瀏覽器訪問如下地址對mq節點進行監控
http://192.168.33.100:8100/rabbitmq-stats

4、注意事項

  • 代碼中訪問mq集羣地址則變爲訪問haproxy地址:5672
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章