基於使用ISCSI存儲的ibmmq經過heartbeat實現HA方案以及碰到的問題總結

1、背景html

  ibmmq是一種傳統架構的mq產品,運行穩定,有其自身優勢,但在高可用(HA)這一塊須要使用公司根據自身需求選用高可用(HA)產品,但因爲市面HA商業產品較貴,因此使用linux操做系統級的heartbeat產品是最廉價合適的。關於ibmmq網絡共享存儲的選用有不少,最貼近生產環境的是ISCSI協議的存儲,因此使用ISCSI作爲mq服務器共享存儲(下文有一點存儲方面的知識)。node

部署架構圖:linux

 

 

 

 

2、解決思路服務器

  一、搭建共享存儲環境;網絡

   二、安裝heartbeat;架構

   三、安裝mq軟件;併發

   四、相關腳本補齊;運維

   五、測試tcp

3、使用技術棧及版本佈局

  一、linux版本:redhat6.7

   二、共享存儲,iscsi

   Target版本:scsi-target-utils-1.0.24-18.el6.x86_64

   Initiator版本:iscsi-initiator-utils-6.2.0.873-27.el6_9.x86_64

   網絡共享存儲介紹:按照網絡結構分:掃盲文章:http://www.ptyqm.com/19026.html

   根據生產環境狀況,只考慮兩種共享存儲實現

    1)NAS:網絡附加存儲,NFS共享存儲實現簡單,方便使用,以文件系統的形式被使用,由於是以文件系統的方式提供,因此在數據傳輸速度上比較慢;

    2)IP-SAN:IP存儲經過TCP/IP協議實現,目前主要實現的協議有:iscsi(Internet Small Computer System Interface),能夠在虛擬機實現,且貼近生產環境。

   iscsi:一種文件塊級別的協議,傳輸速度較快,經過tcp/ip共享存儲設備。能夠將本地磁盤作成lvm(邏輯卷管理),是在linux中對磁盤的分區的一種管理機制,是在磁盤分區和文件系統之間增長了一個邏輯層,爲文件系統屏蔽磁盤分區佈局,優勢在於能夠隨時調節邏輯卷,增長或者減小空間。

   iscsi在使用中區分爲target端和initiator端,target端即爲提供存儲端,initiator端爲使用網絡存儲端。

   target和initiator端分別安裝各類軟件便可,安裝好便可經過配置和命令使用。方便之處在於在initiator端看到的網絡存儲只至關於本地的一塊磁盤,例如/dev/sdb,剩下的只需格式化後便可使用。

   參考譯文:https://linux.cn/article-4971-1.html

   其後幾篇都很是詳細的介紹了iscsi的使用,原版英文在:https://www.tecmint.com/create-centralized-secure-storage-using-iscsi-targetin-linux/

   都是良心好文。

   三、高可用軟件heartbeat

   heartbeat軟件是linux提供的,但須要單獨安裝的。安裝在有需求的節點上便可。

   這個軟件能夠將某一個網卡,例如eth0,虛擬一個ip對外提供,這個vip也是heartbeat中的resource,須要master和salve彼此使用。

   這個軟件能夠經過心跳線(另外一塊網卡如eth1)與本身的salve或者master發送心跳包,已檢測對方是否active,心跳間隔和斷定died時間均可在配置文件中配置。

   這個軟件也能夠不經過心跳線來作ha,可是缺點在於可能會產生腦裂現象,尤爲在網絡狀況很差的狀況下。

   這裏注意,心跳包是經過udp協議進行發送的,驚喜之處在於heartbeat不只名字好聽,並且不只能夠實現unicast,multicast還有broadcast也能夠作,這樣就能夠經過這種方式實現集羣的ha方案,這裏先mark一下,有須要再進行研究。

   heartbeat在使用時會有不少坑,下文會提。

   推薦好文:http://www.javashuo.com/article/p-mzdcguhl-bh.html

   版本:heartbeat-3.0.4-2.el6.x86_64

   固然在安裝時不止這一個包,下文會提其餘的包。

4、難點

  一、搭建iscsi困難,對linux磁盤和存儲關係及命令不熟悉;

   二、安裝軟件缺依賴嚴重,生產環境爲內網環境,必須將全部rpm下載齊全才可安裝;

   三、對於heartbeat原理的不熟知,不知道vip在其中是如何被使用的,且不知其切換過程;

   四、在heartbeat主備軟件切換時,關於腳本的書寫不熟悉。

5、時間點預估

  一、一天研究iscsi存儲及其實現和基本原理,並搭建其環境,測試完成(側重使用);

   二、一天研究heartbeat安裝過程,瞭解其原理,安裝mq軟件嘗試配置;

   三、一天測試heartbeat,觀察其異常現象並分析解決;

   四、總結實現過程,爲上線準備安裝包,梳理流程。

6、虛擬機實現

  一、在LVM服務器配置iscsi的target服務器配置lvm以及配置target服務器的配置文件,使其本地lvm發佈至網絡;共享存儲大小配置爲10G;

本地建立好的lvm:

 

 

 target服務器的/etc/tgt/targets.conf配置

 

 

 再次檢查iscsi的target服務器的對外發布狀況

 

   二、在MQMaster和MQSalve服務器安裝iscsi的initiator並發現target服務的共享lvm,這裏的坑在於target端的認證必定要齊。

 

 

在login到target服務器後,之後再次重啓linux系統,均可以直接login到target上。

當login以後,能夠在在本地磁盤上看到新的一塊盤:

 

 以後只須要給sdb建立一個新的分區,而後對新建立的分區進行格式化,就能夠將存儲mount到本地的任意一個目錄之上了,從而和正常的文件系統一致,進行使用。

那麼對於MQSalve而言,由於在MQMaster之上進行了對sdb建立分區的操做,那麼在MQSalve上使用iscsi的話,須要進行對於sdb的格式化,而後mount操做便可。

這裏通過屢次實驗,最好不要將共享網絡存儲同時mount在兩個主備節點之上,目前會發現出現數據錯誤的狀況,甚至會出現整個文件系統沒法正常使用的狀況。

 

   三、在MQMaster和MQSalve分別安裝mq軟件;

   四、安裝heartbeat軟件,在MQMaster和MQSalve上;

關於安裝heartbeat,由於考慮生產環境爲內網環境,無互聯網接入,那麼安裝rpm包的依賴問題就成了大問題,這是一個極大的坑。

目前採用了先將軟件包經過yum方式將全部的rpm包下載到了本地,而後拿出來進行整個目錄rpm的安裝。這裏使用的小技巧爲:

heartbeat軟件分紅了三個小項目,直接yum下載是不能夠的。

 

 

 

 

yum install yum-plugin-downloadonly

 

 

 

 

 這樣就將全部的rpm下載了下來,到時候能夠直接取到正式環境安裝,若是再有關聯短缺,那麼能夠經過一樣方式進行下載其餘相關rpm,這種方式總比去一個一個地找rpm要方便,尤爲在沒有運維的狀況之下。

安裝:

 rpm -ivh ./rpms/*

   五、配置heartbeat軟件並踩坑。

安裝好heartbeat軟件後,其會默認在/etc下建立目錄:ha.d

 

 這時本身必須將3個配置文件:如上圖紅框,找到後cp過來。。。

天坑1:authkeys文件的權限只能是600,不然heartbeat一直會不停地報錯,不知是heartbeat版本問題仍是其餘。。。

天坑2:本身寫的腳本必須放在resource.d這個目錄之下,進去後還會發現不少服務的相關腳本,這一點也沒官方提示,找了半天。。。

 

關於authkeys這個文件的配置網上一拉一大把,隨便拽一個,master和salve一致就能夠用,可是必須是:

 

關於haresource文件的配置,哈,ha的資源文件:文件中提供了不少配置的說明,截取一段:

 

根據翻譯,依照空格進行separate,第一位提供服務的域名,這點是小坑,注意必定要在hosts中增長域名配置,不然不生效。。。報錯。。。第二是服務的ip地址能夠有多個,能夠指定網卡和默認的子網掩碼,能夠廣播地址,最後是執行的腳本。。。

個人配置:MQMaster 192.168.0.208/24/eth0 mq,第一爲主節點的名字,第二爲vip和子網掩碼以及指定vip的網卡,最後是個人腳本mq,這樣配置主從節點必須一致,但在官方指導中,有這樣一句話:

#They must match the names of the nodes listed in ha.cf, which in turn
# must match the `uname -n` of some node in the cluster. So they aren't
# virtual in any sense of the word.

主節點的名字hostname,必須在另外一個配置文件ha.cf中出現,且指定出現的屬性項爲:node MQMaster,不然VIP會失敗~

這裏使用heartbeat注意,不須要先行建立VIP,heartbeat會自行根據haresource中的資源配置進行相應網卡的VIP建立,在heartbeat軟件的認知中,VIP是一種及其重要的資源:啓動heartbeat master後:

 

 後文在日誌中也能夠看到heartbeat的啓動過程。

關於ha.cf的配置:

 

 這就比較簡單了,完過後,經過service heartbeat stop/restart/start進行對服務的操做便可,此服務隨操做系統啓動,但據測試,坑的地方在於,有時候只啓動master機器,它並不會拿來資源,而heartbeat服務倒是運行狀態,須要手動重啓一下服務才能夠。。。

   六、分析heartbeat日誌文件。

 

 

 

 

 完成一次切換的過程大體就如日誌所示,將MQMaster換成MQSalve就變得一致了。

 

   七、測試heartbeat,獲得測試結果。

很少講解,惟一發如今網絡環境很差的狀況下,會常常發生腦裂的現象。。。惡略的結果就是損害網絡存儲。。。故心跳線是必須懟的。。。而且必須是直插。。。不能走交換機,不靠譜,不然一旦損毀存儲,那麼應用軟件都得從新安裝,事情是小,重點是。。。數據沒了。。。因此共享存儲作raid10也很重要。。。

  

7、致謝

   感謝外公司兩位同事以前的探究並提供了heartbeat的解決思路和mq軟件的腳本。

   感謝文章中的好文和一些網絡文章,受益良多。

相關文章
相關標籤/搜索