高可用集群基本概念與heartbeat文本配置接口

一、高可用集群基本概念:

    什么是高可用集群: 

        所謂高可用集群,就是在出現故障時,可以把業務自動轉移到其他主機上并讓服務正常運行的集群構架

    高可用集群的構架層次: 

        1. 后端主機層: 這一層主要是正在運行在物理主機上的服務。 

        2. Message layer: 信息傳遞層,主要傳遞心跳信息

        2. Cluster Resources Manager(CRM): 集群資源管理器層,這一層是心跳信息傳遞層管理器。用于管理信條信息的傳遞和收集

        3. Local Resources Manager(LRM): 本地資源管理器層, 用于對于收集到的心跳信息進行資源決策調整。是否轉移服務等等

        4. Resource Agent(RA): 資源代理層,這一層主要是具體啟動或停止具體資源的腳本。遵循{start|stop|restart|status}服務腳本使用格式

        高可用層次.png

    各層次實現的軟件和對應關系

        1. Message layer層: 

            1) heartbeat v1

            2) heartbeat v2

            3) heartbeat v3

            4)(OpenAIS)corosync

            5) cman

        2. CRM層

            1) heartbeat v1: 

                使用文本配置接口haresources

            2) heartbeat v2: 

                通過一個crmd服務來實現配置,各節點都需要運行crmd服務,并且使用crmsh或者heartbeat-gui來進行配置

            3) heartbeat v3: heartbeat + pacemaker + cluster-glue

                pacemaker: 集群資源管理器服務

                CLI: crm(SuSE), pcs(redhat)

                GUI: hawk, LCMC, pacemaker-mgmt

                cluster-glue: 可以做為中間粘合層,使用其他資源管理器例如crmsh

            4) cman: 

                使用rgmanager(resource group manager)實現管理, 具有Failover Domain故障轉移域這一特性

                也可以使用RHCS(Redhat Cluster Suite)套件來進行管理: Conga的全生命周期接口

            5) corosync: 

                使用rgmanager或者pacemaker

        3. LRM層通常和CRM層在實現上是通過CRM的一個組件實現

        4. RA層

            1) heartbeat legacy: heartbeat的傳統類型

            2) LSB:/etc/rc.d/init.d/*

            3) OCF(Open Cluster Framework):有提供商提供,有pacemaker,linbit

            4) STONITH: 用來聯合硬件設備工作,可以把故障機電源強制關閉。 

        5. keepalive的組合: keepalive不同于上面所述的重量級構架,比較獨特使用vrrp接口實現,配置簡單輕量級。通常與一下服務同時使用

            1) keepalive + ipvs 

            2) keepalive + haproxy

    RHEL OR CentOS高可用集群解決方案:

        1. RHEL(CentOS)5:

            1) 自帶: RHCS(cman+rgmanager)

            2) 選用第三方:corosync+pacemaker, heartbeat(v1或v2), keepalived

        2. RHEL(CentOS)6:

            1) RHCS(cman+rgmanager)

            2) corosync+rgmanager

            3) cman+pacemaker

            4) heartbeat v3 + pacemaker

            5) keepalived

    應用方式:

            1) 做前端負載均衡器的高可用:keepalived

            2) 做大規模的高用集群:corosync(cman)+pacemaker

    資源隔離:解決資源征用問題

        1. 場景一: 

            當集群中分裂出兩組子集群,并且兩個子集群之間并不能通信時, 兩個子集群會發生資源征用。如果兩集群同時征用后端存儲系統,則會造成災難性的文件系統崩潰。

            為了解決此問題,集群系統引入了投票機制,只有擁有半數以上合法票數的集群才能存活,否則退出集群系統。 

            votes: 投票權

            total: 總票數

            quarum: 滿足法定人數,半數以上

        2. 場景二: 

            如果集群為偶數時,如果集群分裂,兩邊可能都掌握相等的票數,因此集群系統不應該為偶數,如果是偶數則需要一個額外的ping節點參與投票。 

        3. 當分裂的票數不足集群退出集群系統后,為了保證它們永遠不會征用資源需要STONITH機制來進行資源隔離。

            STONITH具體來說,就是通過硬件設備,使得退出的主機重啟或者關機。或者通過交換機阻斷推出集群主機的向外通信和資源通信網絡

                    brain split.png

    HA集群的工作模型: 

        1. A/P: two node: 主被模型,要借助于ping node 工作

        2. N-M: N個節點M個服務, N>M, 活動節點為N, 備用節點為N-M

        3. N-N: N個節點N個服務, N節點都有服務,如果一個壞了,會有一個節點運行多個服務

        4. A/A: 雙主模型,兩個節點都是活動的。兩個節點運行兩個不同的服務。也可以提供同一個服務,比如ipvs, 前端基于DNS輪詢。

    資源轉移的限定方式:

        1. rgmanager: 

            failover domain: 故障轉移域,設定一個資源只能在哪些主機上面轉移 

            priority: 設定,在一個轉移域中,哪些主機優先被轉移資源

        2. pacemaker: 通過資源約束,和粘性來限定資源轉移方式。

            資源黏性: 如果兩個節點傾向性位置約束一致,資源對哪個節點粘性為正值,則留在哪個節點。 

            資源約束(3種類型):

                位置約束:資源更傾向于哪個節點上;通過一個數值來表示。

                    1) inf: 無窮大

                    2) n: 傾向于運行在某節點

                    3) -n: 傾向于離開某節點

                    4) -inf: 負無窮,如果所有節點全不可選,只能在此節點。

                排列約束:資源運行在同一節點的傾向性;

                    1) inf: 兩者永遠在一起 

                    2) -inf: 兩者永遠不再一起

                順序約束:資源啟動次序及關閉次序;

                    例子:如何讓web service中的三個資源,vip, httpd, filesystem運行在同一節點

                    1. 排列約束,說明三個在一起可能性inf

                    2. 資源組(resource group), 三個資源定義在一個組內,然后這個組決定在某一個節點上啟動

                    3. 定義順序約束,保證啟動順序,vip–filesystem–httpd 

                對稱性與非對稱性:

                    對稱性: 默認所有節點都能轉移資源。

                    非對稱性; 有些節點不能轉移資源。 

    如果節點不再成為集群節點成員時,如何處理運行于當前節點的資源:

        stoped:直接停止服務

        ignore: 忽略,以前運行什么服務現在還運行什么。 

        freeze:事先建立的連接,接續保持,不再接收新的請求。

        suicide: kill掉服務。 

    一個資源剛配置完成時,是否啟動。

        target-role: 目標角色,可以為啟動,也可以為不啟動。 

    資源代理類型(RA):

        heartbeat legacy: 傳統類型

        LSB: /etc/rc.d/init.d/ 下面的服務腳本

        OCF: 

        STONITH: 專門用來實現資源隔離的

    資源類型: 

        primitive, native : 主資源,只能運行于一個節點。 

        group: 組資源

        clone: 克隆資源,所有節點都運行的資源,首先是主資源。 

        通常為STONITH資源, Cluster filesystem, 分布式鎖

            1) 最多運行的最大數。 總clone數

            2) 每一個節點上最多運行幾個。 

                master/slave: 主從資源內容,只能克隆兩份,主的能讀能寫,從的不能做任何操作

二、配置heartbeat2基于haresource配置的高可用集群

    配置前所需要的準備: 

        1. 節點名稱:集群每個節點的名稱都得能互相解析, 保證/etc/hosts中主機名的正反解析結果必須跟“uname -n”的結果保持一致;

        2. 時間必須得同步,使用網絡時間服務器同步時間,可以使用ntpd服務實現

        3. 為方便起見:各節點間能基于ssh密鑰認證通信。 可以使用一下命令進行生產和copy秘鑰

     # ssh-keygen -t rsa
     # ssh-copy-id root@192.168.253.134

        4. 兩臺主機的hosts地址配置如下

    192.168.253.133node1.playground.com
    192.168.253.134node2.playground.com

    安裝heartbeat2, 由于heartbeat-pils在CentOS 6.5 后已經被cluster-glue取代了,因此需要手動解決依賴關系

        1. 依賴關系: 

    # yum install perl-TimeDate net-snmp-libs libnet PyXML

        2. 安裝heartbeat的三個組件

    # rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm

    把兩個httpd服務做成高可用

         1. 配置heartbeat的配置文件

     把配置文件的范例復制到,配置文件的目錄中
     # cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/ha.cf
   2. 編輯配置文件 
     # vim /etc/ha.d/ha.cf 
       logfile /var/log/ha-log
       keepalive 2
       deadtime 15
       warntime 10
       udpport 694
       mcast eth0 225.0.130.1 694 1 0
       auto_failback on
       ping 192.168.253.2
       node    node1.playground.com
       node    node2.playground.com
     # scp /etc/ha.d/ha.cf node2.playground.com:/etc/ha.d/ha.cf

    配置資源

    把haresource范例復制到配置文件目錄中
    # cp /usr/share/doc/heartbeat-2.1.4/haresources /etc/ha.d/
    # vim /etc/ha.d/haresources 添加如下內容,意思是服務首先運行在node1上,后面配置vip和服務資源
        node1.playground.com    192.168.253.100/24/eth0 httpd
    把資源配置文件復制到node2
    # scp /etc/ha.d/haresources node2.playground.com:/etc/ha.d/haresources

    配置認證文件: 

    # cp /usr/share/doc/heartbeat-2.1.4/authkey /etc/ha.d/authkey     
    # chomd 600 /etc/ha.d/authkey
    # openssl rand -hex 10 
        8499636794b07630af98
        # vim /etc/ha.d/authkey 
        auth 2
        #1 crc
        2 sha1 8499636794b07630af98
        #3 md5 Hello!
    # scp /etc/ha.d/authkey node2.playground.com:/etc/ha.d/authkey

    安裝httpd服務: 

    這里不詳細說了,就是確保服務正常,并且保證開機不能自動啟動,最后關掉服務。讓heartbeat自己控制服務啟動。

    啟動集群服務: 

    # service heartbeat start 
    # service node2.playground.com heartbeat start

    配置集群服務使得兩個node共享后端nfs文件系統的資源,需要開一臺新主機192.168.253.135,導出/var/www/share文件夾

    # vim /etc/exports     
        /var/www/share  192.168.253.0/24(rw)
    # service nfs start 
    # echo 'web from share' > /var/www/share/index.html 
    # chown apache /var/www/share/index.html

    調著haresource文件 

    # vim /etc/haresources     
        node1.playground.com    192.168.253.100/24/eth0 Filesystem::192.168.253.135:/var/www/share::/var/www/html::nfs  httpd
    同步到兩個節點
    # scp /etc/haresources node2.playground.com:/etc/haresources

    然后重啟服務即可

原創文章,作者:以馬內利,如若轉載,請注明出處:http://www.www58058.com/10982

(1)
以馬內利以馬內利
上一篇 2016-01-11 05:20
下一篇 2016-01-13 13:51

相關推薦

  • 第二周練習與作業

    第二周作業 1、Linux上的文件管理類命令有哪些,其常用的使用方法及其相關示例演示          文件管理類命令:cp,mv,rm cp: 源文件;目標文件          [root@loc…

    Linux干貨 2017-08-09
  • 1128基于fastDFS,制作rpm包

    基于fastDFS,制作rpm包: 1、安裝相應的環境: 1、Development tools 2、git(從外網git倉庫下載源碼所需) 3、Server Platform Development ———————————&#…

    2016-12-05
  • 馬哥教育網絡班21期+第五周課程練習

    第五周作業 1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; cat /boot/grub/grub.conf  | grep "^[[:space:]]\+" 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至…

    Linux干貨 2016-10-17
  • HA Cluster:keepalived

    HA Cluster 集群類型:LB(lvs/nginx(http/upstream, stream/upstream))、HA、HP 系統可用性的公式:A=MTBF/(MTBF+MTTR) 系統故障: 硬件故障:設計缺陷、wear out、自然災害 軟件故障:設計缺陷 提升系統高用性的解決方案之降低MTTR: 解決方案:冗余(redundant) acti…

    Linux干貨 2017-06-26
  • linux-第一周

    inux命令:(type)                  1,集成在bash中的命令,內部命令。依賴于shell類型。                  2,在文件系統路徑下有…

    Linux干貨 2017-05-20
  • N22-第一周作業

    馬哥教育網絡班22期第1周課程練習 第一部分,計算機構成和功能簡述 一、計算機體系 從最初的計算機ENIAC到當今時代的計算機都采用馮●諾依曼體系結構,該結構宗旨為:數字計算機的數制采用二進制;計算機應該按照程序順序執行。 二、計算機硬件組成 計算機基本硬件由以下組件構成: CPU:       &…

    Linux干貨 2016-08-22
欧美性久久久久