Linux下使用Corosync+Pacemaker詳解及安裝
Corosync詳解
OpenAIS概述
OpenAIS是基於SA Forum 標準的集群框架的應用程序接口規範。OpenAIS提供一種集群模式,這個模式包括集群框架,集群成員管理,通信方式,集群監測等,能夠為集群軟件或工具提供滿足 AIS標準的集群接口,但是它沒有集群資源管理功能,不能獨立形成一個集群。OpenAIS組件包括AMF,CLM,CKPT,EVT,LCK,MSG,TMR,CPG,EVS等,因OpenAIS分支不同,組件略有不同。(下面介紹)OpenAIS主要包含三個分支:Picacho,Whitetank,Wilson。Wilson把Openais核心架構組件獨立出來放在Corosync(Corosync是一個集群管理引擎)裏面。(詳細請查看官方文檔)
Corosync概述
Corosync是OpenAIS發展到Wilson版本後衍生出來的開放性集群引擎工程(可以說Corosync是OpenAIS工程的一部分)。Corosync包含OpenAIS的核心框架用來對Wilson的標準接口的使用、管理。它為商用的或開源性的集群提供集群執行框架。目前Corosync分為1版本和2版本,1版本不具有投票功能,2版本具有投票功能。
Pacemaker概述
Pacemaker概述
Pacemaker是一個集群資源管理器,它利用首選集群基礎設施(OpenAIS 或heartbeat)提供的消息和成員能力,由輔助節點和系統進行故障檢測和回收,實現性群集服務(亦稱資源)的高可用性。Pacemaker是從Heartbeat V3版本中分裂出來的專門用於提供高可用集群的CRAM組件。
Pacemaker特點
主機和應用程序級別的故障檢測和恢復
幾乎支持任何冗余配置
同時支持多種集群配置模式
配置策略處理法定人數損失(多臺機器失敗時)
支持應用啟動/關機順序
支持,必須/必須在同一臺機器上運行的應用程序
支持多種模式的應用程序(如主/從)
可以測試任何故障或群集的群集狀態
Pacemaker內部組件
crmd(資源管理守護進程):主要作為pengine和lrm的消息代理,它同時也得選舉一個leader去協調管理集群的活動(包括集群資源的停止和啟動)
stonithd(心跳系統):在 Pacemaker 中,STONITH設備被當成資源(並且是在CIB中配置)從而輕松地監控,然而Stonithd會註意理解STONITH拓撲,比如它的客戶端請求隔離一個節點,它會重啟那個機器。
cib(集群信息庫):CIB在系統中充當的是當前集群中各資源原始配置以及之後動態變化了的狀態,統計信息收集分發中心,是一個不斷更新的信息庫(包含所有群集選項,節點,資源以及他們的相互關系和當前狀態的定義)。當他收集到任何資源的變化,以及節點統計信息的變化後,都會集成整合到一起組成當前集群最新的信息,並分發到集群各個節點。
pengine(策略引擎):主要負責將CRM發過來的一些信息按照配置文件中的各種設置(基於目前的狀態和配置)計算集群的下一個狀態。產生一個包括一系列行動和依賴關系的過渡圖。
Corosync+Pacemaker組合
Corosync和Pacemake的安裝
結構部署圖
前期準備
1.檢查/etc/sysconfig/network中的主機名和uname -n 的結果相同
[[email protected] ~]# cat /etc/sysconfig/network | grep "HOSTNAME" | cut -d "=" -f2 > network.txt [[email protected] ~]# uname -n > hostname.txt [[email protected] ~]# diff network.txt hostname.txt
2.配置DNS
A.修改/etc/resolv.confB.修改/etc/hosts.conf [[email protected] ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.80.130 Clone2 192.168.80.131 Clone3 192.168.80.132 Clone4
3.配置互信ssh
生成ssh的公鑰和密鑰 [[email protected] ~]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory ‘/root/.ssh‘. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is:66:03:85:51:93:de:e9:7b:ed:b1:42:36:d6:05:bc:17 [email protected] The key‘s randomart image is: +--[ RSA 2048]----+ | .++. . | | .... oE | | .. . . o.| | .. o . o| | S. . o | | o .. = . | | = o. | | . o .o | | . oo | +-----------------+ 將公約復制到替他節點上 [[email protected] ~]# ssh-copy-id -i .ssh/id_rsa.pub [email protected] The authenticity of host ‘clone2 (192.168.80.130)‘ can‘t be established. RSA key fingerprint is d7:64:9b:c6:a0:81:61:70:8a:df:d4:b4:a4:01:54:08. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added ‘clone2,192.168.80.130‘ (RSA) to the list of known hosts. [email protected] password: Now try logging into the machine, with "ssh [email protected]", and check in: .ssh/authorized_keys to make sure we haven‘t added extra keys that you weren‘t expecting.
Corosync安裝
1.yum源安裝
[[email protected] ~]# yum install corosync
2.編譯安裝
下載: [[email protected] ~]# wget http://build.clusterlabs.org/corosync/releases/corosync-2.4.2.tar.gz解壓: [[email protected] ~]# tar -xzf corosync-2.4.2.tar.gz 安裝必要軟件: [[email protected] ~]# yum install gcc ncc-devel libqb libqb-devel 編譯安裝: [[email protected] ~]# cd corosync-2.4.2 [[email protected] corosync-2.4.2]# ./configure --prefix=/usr/local/corosync --sbindir=/usr/local/sbin --bindir=/usr/local/bin --sysconfdir=/etc [[email protected] corosync-2.4.2]# make && make install
Corosync配置文件詳解
[[email protected] ~]# vim /etc/corosync/corosync.conf totem { version: 2 //版本號 crypto_cipher: none crypto_hash: none secauth:on //是否開啟認證 thread:0 //實現認證時,並發線程數,0表示默認 interface { ringnumber: 0 //環號碼,為這個網卡定義一個唯一的環號碼,以避免心跳信息環發送 bindnetaddr: 192.168.1.0 //綁定的網絡地址 mcastaddr: 239.255.1.1 //廣播地址 mcastport: 5405 //廣播端口 ttl: 1 //只向外播一次 } } logging { fileline: off to_stderr: no to_logfile: yes logfile: /var/log/cluster/corosync.log to_syslog: yes debug: off timestamp: on logger_subsys { subsys: QUORUM debug: off } } service { //定義一個服務來啟動pacemaker ver: 0 //定義版本 name: pacemaker //這個表示啟動corosync時會自動啟動pacemaker} aisexec { //表示以哪個用戶的身份去運行 user: root group: root }
yum源安裝
[[email protected] ~]# yum install pacemaker
後續步驟
1.使用命令生成corosync密鑰,並復制到各個節點
[[email protected] ~]# corosync-keygen [[email protected] ~]# scp /etc/corosync/authkey [email protected]:/etc/corosync/
2.復制corosync配置文件到各個節點
[[email protected] ~]# scp /etc/corosync/corosync.conf [email protected]:/etc/corosync/corosync.conf
3.下載並安裝crmsh,pssh
[[email protected] ~]# wget [[email protected] ~]# wget [[email protected] ~]# yum install pssh-2.3.1-2.el6.x86_64.rpm crmsh-1.2.6-4.el6.x86_64.rpm
啟動並檢驗
[[email protected] ~]# crm_mon
註:由於pacemaker的配置內容比較多,所以我將在下一篇博客中重點來講crmsh來配置高可用資源,以及常用服務器使用corosync+pacemaker搭建的高可用
Hearbeat實現高可用:http://www.crazyrui.pw:8088/index.php/2017/07/31/heartbeat/
或: http://lnsane784.blog.51cto.com/1226518/1952393
自動化部署工具ansible:http://www.crazyrui.pw:8088/index.php/2017/07/27/linux_ansiable/
或:http://lnsane784.blog.51cto.com/1226518/1951496
LVS負載均衡:http://www.crazyrui.pw:8088/index.php/2017/07/24/linux_lvs/
或:http://lnsane784.blog.51cto.com/1226518/1950589
DHCP,HTTPD,TOMCAT搭建:http://www.crazyrui.pw:8088/index.php/category/linux-server/
Linux下使用Corosync+Pacemaker詳解及安裝