人人IT網

人人IT網

當前位置: 主頁 > 操作系統 > OS >

corosync+pacemaker高可用集群

時間:2016-11-16 18:59來源:Internet 作者:Internet 點擊:
    一、簡介    高可用集群,是指以減少服務中斷(如因服務器宕機等引起的服務中斷)時間为目的的服務器集群技術。簡單

    一、簡介

    高可用集群,是指以減少服務中斷(如因服務器宕機等引起的服務中斷)時間为目的的服務器集群技術。簡單的說,集群就是一組計算機,它們作为一個整體向用戶提供一組網络資源。這些單個的計算機系統就是集群的節點。

高可用集群的出現是为了減少由計算機硬件和軟件易錯性所帶來的損失。它通過保護用戶的業務程序對外不間斷提供的服務,把因軟件/硬件/人为造成的故障對業務的影響降低到最小程度。如果某個節點失效,它的備援節點將在幾秒钟的時間內接管它的職責。因此,對於用戶而言,集群永遠不會停機。高可用集群軟件的主要作用就是實現故障檢查和業務切換的自動化。


    高可用集群框架圖

wKioL1godUugWjL6AAJNWK6hA94432.png

     架構整體說明:

    隨着互聯網技術的迅速發展很多大中小型公司已經離不開互聯網辦公及其提供服務,例如淘寶、美團等網站宕機幾個小時損失是致命的,很多網站對其高可用性越來越強,這就意味着運維人員需做到從硬件和軟件兩方面保證服務器的平均無故障時間減小,才能提高其可用性。corosync是一個集群管理套件的部分,它在傳遞信息的時候可以通過一個簡單的配置來定義信息傳遞的方式和協議等,能實現資源間的高可用。目前,corosync功能和特性已經非常完善了,所以pacmaker獨立出來之後通常都將pacmaker和corosync結合來使用,corosync並沒有通用的資源管理器,因此要借助pacmaker來實現,pacemaker是作为corosync的插件來使用的,所以只需要在corosync配置文件中启動pacemaker插件即可;但是真正启動corosync並且配置它需要命令行接口進行調用,沒配置pcs那麼這裏我們只能使用crm工具來對其進行資源的管理。


    架構詳細說明圖:

     HA Cluster.png


    corosync集群常見的組合方式及配置接口:

    heartbeat v1 + hasource   

    heartbeat v2 + crm   

    heartbeat v3 + pacemaker + crmsh(corosync v1版本時沒有投票系統,corosync v2有投票系統,當系統發生網络分區、腦裂時則將會將所有的資源轉移至可用的其他主機之上) 

    corosync v1 + pacemaker   corosync v2 + pacemaker  

    cman +rgmanager corosync v1 + cman + pacemaker  


    CRM:集群資源管理

    資源類型:

    primitive:基本資源,主資源,僅能運行一個節點

    group:組,將組成一個高可用服務所需要的所有資源集合在一起

    clone:克隆,同一資源科出現多份,可運行在多個節點

    multi-state(master/slave):多狀態類型,是克隆資源的特殊表現,副本間可存在主從的關系


    RA:資源代理

    資源代理類別: 

    LSB:位於/etc/rc.d/init.d/*,支持start,stop,restart,reload,status,force-reload

注意:使用LSB資源類型的不能開機自動運行 

    OCF(open cluster framework):/usr/lib/ocf/resource.d/provider/,類似於LSB的腳本,但僅支持start,stop,status,monitor,meta-data  

    STONITH:調用stonith設備的功能,systemd:unite ifle,/usr/lib/systemd/system/ 

注意:必須設置enable,設置为開機自動启動


    資源約束方式: 

    位置約束:定義資源對節點的傾向性

    排序約束:定義資源彼此能否運行在同一個節點的傾向性

    順序約束:多個資源启動順序的依賴關系


    HA集群常用的工作模型:

 A/P:兩節點,active/passive,工作於主備模型

    A/A:兩節點,active/active,工作於主主模型

    N-M:N>M,N個節點,M個服務,假設每個節點運行一個服務,活動節點數为N,備用節點數为N-M


    在集群分裂(split-brain)時需要使用到資源隔離,有兩種隔離級別:

    STONITH:節點級別的隔離,通過斷開一個節點的電源或者重新启動節點

    fencing:資源級別的隔離,類似通過向交換機發出隔離信號,特意讓數據無法通過此接口

    當集群分裂,即分裂後的一個集群的法定票數小於總票數一半時采取對資源的控制策略


   二、corosync安裝及其配置

    安裝:

    要求:1.基於主機名之間進行相互解析    2.各個節點之間時間需同步

    安裝:yum  -y install pacemaker (CentOS7)

    

    corosync配置詳解:corosync的主要配置分为totem、logging、quorum、nodelist配置段   

totem {    #定義各個節點之間的通信方式、加密與否,
version: 2 #指明totem的版本信息
cluster_name:myclusters    #定義集群名稱
crypto_cipher: aes128      #定義加密算法
crypto_hash: sha1          #定義hash算法
interface {   #心跳及其事務傳遞接口
ringnumber: 0   #環接口號
bindnetaddr: 10.1.0.0  #绑定的網段
mcastaddr: 239.25.102.1 #多播地址
mcastport: 5405        #多播端口
ttl: 1                #生存時間,防止發生環路
}
}
logging {    #日志模塊
fileline: off
to_stderr: no    #標准錯誤輸出
to_logfile: yes
logfile: /var/log/cluster/corosync.log #日志存放路徑
to_syslog: no
debug: off
timestamp: on
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {    #投票系統
provider: corosync_votequorum    #開启投票機制
}
nodelist {    #節點列表
node {
ring0_addr: 10.1.10.65 #節點IP地址
nodeid: 1              #節點編號
}
node {
ring0_addr: 10.1.10.66 #節點列表
nodeid: 2              #節點編號
}
}

    完成上訴配合後需生成密碼:corosync-kegen -l 

    將上訴配置文件和秘鑰文件拷貝至另一台cluster即可。

    启動服務:

    systemctl start corosync 

    systemctl start pacemaker  

    安裝crmsh接口工具來管理集群資源及其配置:yum -y install crmsh-2.1.4-1.1.x86_64.rpm pssh-2.3.1-4.2.x86_64.rpm python-pssh-2.3.1-4.2.x86_64.rpm


    三、corosync+pacemaker+nfs實現高可用案例        

    此實驗需將另一台服務器启動nfs服務並掛載至兩節點上配置同样的頁面文件  

node 167840321: node1.alren.com \ #默認設置,此在corosync配置文件中定義
  attributes standby=on
node 167840322: node2.alren.com \
  attributes standby=off
primitive webip IPaddr \  #定義webip
  params ip=10.1.10.80 \
  meta target-role=Started
primitive webserver systemd:httpd    #定義webserver
primitive webstore Filesystem \      #定義webstore  
  params device="10.1.10.67:/www/html" directory="/var/www/html" fstype=nfs \
  op start timeout=60s interval=0 \    #附加選項为超時時間、時間間隔
  op stop timeout=60s interval=0
group webservice webip webstore webserver #將webip、webserver、webstore加入到webservice組 
location cli-prefer-webservice webservice role=Started inf: node1.alren.com
property cib-bootstrap-options: \
  have-watchdog=false \
  dc-version=1.1.13-10.el7-44eb2dd \
  cluster-infrastructure=corosync \
  cluster-name=myclusters \
  stonith-enabled=false \
  symmetric-cluster=true
# vim: set filetype=pcmk:

 

    實驗測試圖:              

    將節點一手動設置为standby模式,則資源會自動轉移至節點二wKioL1gqd6yAp70tAABwWCALCTQ684.png


    上訴配置可用排列約束和順序約束實現並且能實現節點之間的粘性和启動順序

crm(live)configure# show
node 167840321: node1.alren.com \
attributes standby=on
node 167840322: node2.alren.com \
attributes standby=off
primitive webip IPaddr \
params ip=10.1.10.80 \
meta target-role=Started
primitive webserver systemd:httpd
primitive webstore Filesystem \
params device="10.1.10.67:/www/html" directory="/var/www/html" fstype=nfs \
op start timeout=60s interval=0 \
op stop timeout=60s interval=0
colocation webip_webserver_with_webstore inf: webip webserver webstore #設定排列約束
order webip_before_webstore_before_webserver Mandatory: webip webstore webserver #設定順序約束,此時启動順序为:webip,webstore,webserver
property cib-bootstrap-options: \
have-watchdog=false \
dc-version=1.1.13-10.el7-44eb2dd \
cluster-infrastructure=corosync \
cluster-name=myclusters \
stonith-enabled=false \
symmetric-cluster=true \
default-resource-stickiness=200


定義資源監控配置如下:當httpd服務停止時,將自動重启httpd,如重启失敗則將資源轉移至可用的節點

crm(live)configure# show
node 167840321: node1.alren.com \
attributes standby=off
node 167840322: node2.alren.com \
attributes standby=on
primitive webip IPaddr \
params ip=10.1.10.80 \
meta target-role=Started
primitive webserver systemd:httpd \
op start timeout=15s interval=0 \    #定義資源启動間隔及其超時時間
op stop timeout=15s interval=0 \     #定義資源停止時間間隔及其超時時間
op monitor interval=15s timeout=15s  #定義資源監控的時間間隔及其超時時間
primitive webstore Filesystem \
params device="10.1.10.67:/www/html" directory="/var/www/html" fstype=nfs \
op start timeout=60s interval=0 \
op stop timeout=60s interval=0
colocation webip_webserver_with_webstore inf: webstore webip webserver
order webip_before_webstore_before_webserver Mandatory: webip webstore webserver
property cib-bootstrap-options: \
have-watchdog=false \
dc-version=1.1.13-10.el7-44eb2dd \
cluster-infrastructure=corosync \
cluster-name=myclusters \
stonith-enabled=false \
symmetric-cluster=true \
default-resource-stickiness=200 \
no-quorum-policy=ignore \
last-lrm-refresh=1479180221


    總結:綜合上訴的配置總體感覺corosync+pacemaker的方式實現高可用比lvs略微复雜,corosync同样可實現對RS的健康狀態檢測,可借助ldirectory實現自動生成ipvs規則。

    



本文出自 “小耳朵” 博客,請務必保留此出處http://go.rritw.com/purify.blog.51cto.com/10572011/1872962


From:51CTO
頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
評價:
表情:
驗證碼:點擊我更換圖片
欄目列表
推薦內容