rabbitmq+haproxy+keepalived實現高可用集群搭建


  項目需要搭建rabbitmq的高可用集群,最近在學習搭建過程,在這里記錄下可以跟大家一起互相交流(這里只是記錄了學習之后自己的搭建過程,許多原理的東西沒有細說)。

搭建環境

  CentOS7 64位

  RabbitMQ 3.6.2

  Keepalived 1.2.21

  主機:192.168.0.1   192.168.0.2   192.168.0.3   三台節點上安裝rabbitmq服務

  Haproxy 安裝在 192.168.1.1 和 192.168.1.2 上,用於對外提供 RabbitMQ 均衡

  Keepalived實現haproxy的主備,高可用(避免單點問題),192.168.1.1(主)192.168.1.2(備)

  全局圖如下:

RabbitMQ集群搭建

單機上安裝

  分別在192.168.0.1   192.168.0.2   192.168.0.3 節點上安裝rabbitmq server。

  • 1.Install Erlang

    # yum install erlang
    測試erlang是否安裝成功,輸入:
    # erl //進入erl窗口則表示安裝成功

  • 2.Install RabbitMQ Server

    # wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.2/rabbitmq-server-3.6.2-1.noarch.rpm
    # yum install rabbitmq-server-3.6.2-1.noarch.rpm

  • 3.啟動

    # /etc/init.d/rabbitmq-server start

  • 4.開機啟動

    # chkconfig rabbitmq-server on
    測試是否安裝成功:
    # rabbitmqctl status //查看rabbitmq的運行狀態信息

  • 5.啟用插件rabbitmq management

    # rabbitmq-plugins enable rabbitmq_management
    # /etc/init.d/rabbitmq-server restart

    輸入http://ip:15672可以登錄管理界面,默認賬戶guest/guest只能使用http://localhost:15672登錄,要想遠程登錄,需要添加一個新的用戶:
    # rabbitmqctl add_user admin 1234
    #用戶設置為administrator才能遠程訪問
    $ sudo rabbitmqctl set_user_tags admin administrator
    $ sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" //該命令使用戶admin具有‘/’這個virtual host中所有資源的配置、寫、讀權限以便管理其中的資源 
    查看所有用戶#rabbitmqctl list_users

鏡像集群搭建

  將192.168.0.1上的/var/lib/rabbitmq/.erlang.cookie中的內容復制到158和159上的/var/lib/rabbitmq/.erlang.cookie文件中, 即三台服務器必須具有相同的cookie,如果不相同的話,無法搭建集群

  192.168.0.2和192.168.0.3節點上分別執行命令,加入到集群
    # rabbitmqctl stop_app
    # rabbitmqctl join_cluster --ram rabbit@h-ncdrdcs7
    # rabbitmqctl start_app
    其中--ram代表是內存節點,如果希望是磁盤節點則不用加--ram,在rabbitmq集群中,至少需要一個磁盤節點

    查看集群的狀態
    # rabbitmqctl cluster_status

  設置成鏡像隊列
  # rabbitmqctl set_policy ha-all "^ha\." '{"ha-mode":"all"}' //意思表示以ha.開頭的queue都會復制到各個節點 ["^"匹配所有]

Haproxy負載代理

  利用haproxy做負載均衡
  在192.168.1.1和192.168.1.2節點上
  安裝haproxy
  # yum install haproxy

  vi /etc/haproxy/haproxy.cfg 之后添加:

listen rabbitmq_local_cluster 0.0.0.0:5672 
  #配置TCP模式 
  mode tcp
  option tcplog 
  #簡單的輪詢 
  balance roundrobin 
  #rabbitmq集群節點配置 
  server rabbit1 192.168.0.1:5672 check inter 5000 rise 2 fall 2 
  server rabbit2 192.168.0.2:5672 check inter 5000 rise 2 fall 2 
  server rabbit3 192.168.0.3:5672 check inter 5000 rise 2 fall 2

#配置haproxy web監控,查看統計信息 
listen private_monitoring :8100 
  mode http 
  option httplog 
  stats enable 
  #設置haproxy監控地址為http://localhost:8100/stats 
  stats uri /stats 
  stats refresh 30s 
  #添加用戶名密碼認證
  stats auth admin:1234

  #啟動
  # haproxy -f haproxy.cfg
  #重啟動
  # service haproxy restart

Keepalived安裝

  利用keepalived做主備,避免單點問題,實現高可用

  在192.168.1.1和192.168.1.2節點上安裝最新版keepalived

  192.168.1.1(主)修改keepalived.conf為:Primary配置:

vrrp_script chk_haproxy {
    script "pidof haproxy"
    interval 2
}
vrrp_instance VI_1 {
    interface ens192
    state MASTER
    priority 200
    virtual_router_id 10
    unicast_src_ip 192.168.1.1
    unicast_peer {
        192.168.1.2
    }
    authentication {
        auth_type PASS
        auth_pass password
    }
    virtual_ipaddress {
        192.168.1.10 //虛擬ip,對外提供服務
    }
    track_script {
        chk_haproxy
    }
    notify_master /loadbtify_master.sh
}

   192.168.1.2(備)修改keepalived.conf為:Secondary配置:

vrrp_script chk_haproxy {
    script "pidof haproxy"
    interval 2
}
vrrp_instance VI_1 {
    interface ens192
    state BACKUP
    priority 100
    virtual_router_id 10
    unicast_src_ip 192.168.1.2
    unicast_peer {
        192.168.1.1
    }
    authentication {
        auth_type PASS
        auth_pass password
    }
    virtual_ipaddress {
        192.168.1.10
    }
    track_script {
        chk_haproxy
    }
    notify_master /loadbtify_master.sh
}

   啟動keepalived即可,192.168.1.10是對外提供的統一地址。

  通過192.168.1.10:5672就可以訪問rabbitmq服務。

 

參考資料

https://www.digitalocean.com/community/tutorials/how-to-set-up-highly-available-haproxy-servers-with-keepalived-and-floating-ips-on-ubuntu-14-04#userconsent#

http://www.rabbitmq.com/install-rpm.html   

http://www.keepalived.org/download.html   //keepalived下載地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM