1. 程式人生 > >rabbitmq+haproxy+keepalived實現高可用叢集搭建

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 [email protected]
    # 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下載地址

相關推薦

rabbitmq+haproxy+keepalived實現可用叢集搭建

  專案需要搭建rabbitmq的高可用叢集,最近在學習搭建過程,在這裡記錄下可以跟大家一起互相交流(這裡只是記錄了學習之後自己的搭建過程,許多原理的東西沒有細說)。 搭建環境   CentOS7 64位   RabbitMQ 3.6.2   Keepalived 1.2.21   主機:192.1

CentOS7 haproxy+keepalived實現可用叢集搭建

一、搭建環境   CentOS7 64位         Keepalived  1.3.5         Haproxy 1.5.18   後端負載主機:192.168.166.21   192.168.166.22   兩臺節點上安裝rabbitmq服務      

Mycat+Mysql主從複製+haproxy+keepalived實現可用的分庫分表叢集方案

一, 部署架構 1.1架構圖 1.2 軟體版本 作業系統: CentOS2-7-X86_64-DVD-1708.iso JDK 版本: jdk1.8.0_11 Keepalived 版本: keepalived-1.2.18.tar.gz

HAproxy+Keepalived實現可用

daemon type tom com rontab date redis start virt HAproxy+Keepalived實現高可用 說明: HA1:HAproxy+Keepalived(master) HA2:HAproxy+Keepalived(back

LVS健康檢查及keepalived實現可用叢集

LVS健康檢查 我們前面做的那些LVS的各種模式部署,都沒有健康檢查這一功能,就是說在我們搭建的負載均衡叢集中,如果後端伺服器RS全部宕掉了,客戶端就無法訪問到服務端的資料,這時我們應該給客戶端一些提示,說明伺服器暫時無法訪問。 配置(搭建好LVS-DR模式負載均衡的前提下) 在

LVS+Keepalived 實現可用負載均衡叢集

LVS+Keepalived  實現高可用負載均衡叢集     隨著網站業務量的增長,網站的伺服器壓力越來越大?需要負載均衡方案!商業的硬體如 F5 ,Array又太貴,你們又是創業型互聯公司如何有效節約成本,節省不必要的浪費?同時還需要實現商業硬體一樣的高效能高可

叢集介紹、keepalived介紹、用keepalived配置可用叢集、負載均衡叢集介紹、LVS介紹 、LVS排程演算法、LVS NAT模式搭建

一、叢集介紹 Linux叢集根據功能劃分為兩大類:高可用和負載均衡。 高可用叢集 高可用叢集通常為2臺伺服器,一臺工作,另一臺作為冗餘,當提供服務的機器宕機時,冗餘將接替繼續提供服務。 實現高可用的開源軟體有:heartbeat、Keepalived,其中hea

RabbitMQ 高階指南:從配置、使用到可用叢集搭建

博主說:在專案中,通過 RabbitMQ,咱們可以將一些無需即時返回且耗時的操作提取出來,進行非同步處理,而這種非同步處理的方式大大的節省了伺服器的請求響應時間,從而提高了系統的吞吐量。 正文 1 RabbitMQ 簡介 1.1 介紹   RabbitMQ

RabbitMQ 可用叢集搭建及電商平臺使用經驗總結

面向EDA(事件驅動架構)的方式來設計你的訊息 AMQP routing key的設計 RabbitMQ cluster搭建 Mirror queue policy設定 兩個不錯的RabbitMQ plugin 大型應用外掛(Sharding、Rederation) Queue映象失敗手動同步

haproxy對mysql主主複製的負載均衡中配keepalived實現可用

突破單點故障限制,實現熱備防止宕機 在主主複製的基礎和負載均衡的基礎之上用keepalived實現熱備 keepalived 提供一個vip 虛擬的ip,並監測haproxy1和haproxy2的執行情況,讓這個vip在兩者間進行搶佔(機制有預設,有優先,有宕機後另一個自動獲取) keep

Linux叢集Keepalived—Nginx可用叢集架構搭建

叢集介紹Linux叢集根據功能劃分為兩大類:高可用和負載均衡。高可用叢集高可用叢集通常為2臺伺服器,一臺工作,另一臺作為冗餘,當提供服務的機器宕機時,冗餘將接替繼續提供服務。實現高可用的開源軟體有:heartbeat、Keepalived,其中heartbeat已無人維護,所

Keepalived+Tengine實現可用叢集

概述 近年來隨著Nginx在國內的發展潮流,越來越多的網際網路公司使用Nginx;憑Nginx的高效能、穩定性等成為了眾多IT者青睞的WEB反向代理伺服器;但是Nginx雖然有很強大的代理功能,只有一臺Nginx伺服器難免不會出現問題,這就形成了單點故障的問題,而恰好可

.Net Core2.1 秒殺專案一步步實現CI/CD(Centos7.2)系列一:k8s可用叢集搭建總結以及部署API到k8s

前言:本系列部落格又更新了,是博主研究很長時間,親自動手實踐過後的心得,k8s叢集是購買了5臺阿里雲伺服器部署的,這個叢集差不多搞了一週時間,關於k8s的知識點,我也是剛入門,這方面的知識建議參考部落格園大神edisonchou的系列文章《.NET Core on K8S學習實踐系列文章索引(Draft版)》

LVS+Keepalived實現可用負載均衡

lvs+keepalived 高可用 負載均衡 用LVS+Keepalived實現高可用負載均衡,簡單來說就是由LVS提供負載均衡,keepalived通過對rs進行健康檢查、對主備機(director)進行故障自動切換,實現高可用。1. LVS NAT模式配置準備三臺服務器,一臺director, 兩

Keepalived實現可用Nginx反向代理

keepalived實現高可用nginx反向代理由於好久沒有接觸過負載相關的調試了復習一下實驗系統:(1)CentOS 6.5_x86_64;(2)共有二臺主機,本實驗以ip地址來命名主機,即10主機、11主機。實驗前提:防火墻和selinux都關閉,主機之間時間同步實驗軟件:nginx-1.10.2-1.e

Linux運維學習之keepalived實現可用集群

keepalived 高可用 lvs 集群技術是一種較新的技術,通過集群技術,可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對較高的收益,其任務調度則是集群系統中的核心技術。高可用高可用集群,簡單的說,集群就是一組計算機,它們作為一個整體向用戶提供一組網絡資源。 高可用

LVS-keepalived實現可用

keepalived前言: LVS是基於內核實現負載均衡的,在小編的上一篇演示中我們已經實現了LVS的NAT模式和DR模式,但是企業中只有負載均衡是不行的,如果一臺負載均衡器楚翔了故障,那麽就會導致整個集群的不可用,所以這裏結合LVS我們通過keepalived這個神器來實現高可用。 高可用:通常來描

mysql+proxysql+keepalived實現可用的數據庫讀寫分離

mysql讀寫分離 主從復制 proxysql前言 為了降低一臺數據庫的IO,遠程連接數據庫的時候,可以實現讀寫分離進行調度。這裏就出現了一個單點,所以必須要做一個高可用。當然數據庫服務器也需要做主從復制。實驗結構 說明:上圖的拓撲只是整個架構中的一個小部分,其余功能的實現此圖並未規

項目實戰3—Keepalived 實現可用

ack logs 時間 mage 通知機制 http targe not table 實現基於Keepalived高可用集群網站架構   環境:隨著業務的發展,網站的訪問量越來越大,網站訪問量已經從原來的1000QPS,變為3000QPS,目前業務已經通過集群LVS架

HaProxy+Keepalived+Mycat可用群集配置

HaProxy+Keepalived+M概述 本章節主要介紹配置HaProxy+Keepalived高可用群集,Mycat的配置就不在這裏做介紹,可以參考我前面寫的幾篇關於Mycat的文章。 部署圖: 配置 HaProxy安裝181和179兩臺服務器安裝haproxy的步驟一致--創建haproxy用戶