CentOS_6.7高可用服務Heartbeat_v3.0.4安裝以及配置

CentOS_6.7高可用服務Heartbeat_v3.0.4安裝以及配置node


集羣系統主要就2種:linux

  高可用(High Availability)HA集羣: 使用Heartbeat/keepalived等軟硬件實現;也會稱爲」雙機熱備」, 「雙機互備」, 「雙機」。
  負載均衡羣集(Load Balance Cluster):使用LinuxVirtual Server(LVS)/haproxy/nginx等軟硬件實現;
nginx

Heartbeat項目是 Linux-HA 工程的一個組成部分,它實現了一個高可用集羣系統。心跳服務和集羣通訊高可用集羣的兩個關鍵組件,在 Heartbeat 項目裏,由 heartbeat 模塊實現了這兩個功能。c++

  高可用集羣是指一組經過硬件和軟件鏈接起來的獨立計算機,它們在用戶面前表現爲一個單一系統,在這樣的一組計算機系統內部的一個或者多個節點中止工做,服務會從故障節點切換到正常工做的節點上運行,不會引發服務中斷。從這個定義能夠看出,集羣必須檢測節點和服務什麼時候失效,什麼時候恢復爲可用。這個任務一般由一組被稱爲「心 跳」的代碼完成。在Linux-HA裏這個功能由一個叫作heartbeat的程序完成。web

  heartbeat (Linux-HA)的工做原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測能夠經過網絡鏈路和串口進行,並且支持冗餘鏈路,它們之間相互發送報文來告訴對方本身當前的狀態,若是在指定的時間內未受到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運行在對方主機上的資源或者服務。算法


消息通訊模型vim

Heartbeat包括如下幾個組件:安全

heartbeat – 節點間通訊校驗模塊服務器

CRM - 集羣資源管理模塊網絡

CCM - 維護集羣成員的一致性

LRM - 本地資源管理模塊

StonithDaemon - 提供節點重啓服務

logd - 非阻塞的日誌記錄

apphbd - 提供應用程序級的看門狗計時器

Recovery Manager - 應用故障恢復

底層結構–包括插件接口、進程間通訊

CTS – 集羣測試系統,集羣壓力測試

這裏主要分析的是Heartbeat的集羣通訊機制,因此這裏主要關注的是heartbeat模塊


heartbeat模塊由如下幾個進程構成:

master進程(masterprocess)

FIFO子進程(fifochild)

read子進程(readchild)

write子進程(writechild)

  在heartbeat裏,master進程把本身的數據或者是客戶端發送來的數據,經過IPC發送到write子進程,write子進程把數據發送到網絡;同時read子進程從網絡讀取數據,經過IPC發送到master進程,由master進程處理或者由master進程轉發給其客戶端處理。

  Heartbeat啓動的時候,由master進程來啓動FIFO子進程、write子進程和read子進程,最後再啓動client進程。

 

系統:CentOS 6.7 x86_64(兩臺虛擬機)

安全:SElinux disabled

      Iptables disabled

Heartbeat版本:v3.0.4

Cluster Gule版本:v1.0.5

Resource Agents版本:v3.9.5

軟件包安裝方式:yum安裝

Heartbeat3.0之後是由 gule、heartbeat、agents 三部分組成。所以,須要分別安裝。


1、準備工做

1. 配置hosts文件(vim /etc/hosts):

10.0.0.50 db1

192.168.0.205 db1

10.0.0.52 db2

192.168.0.201 db2

注:

1)hostname帶後綴的域名(HA25pxdschool.org)會出報錯。


2. 安裝依賴:

# yum installgcc gcc-c++ autoconfautomake libtool glib2-devel libxml2-devel bzip2-devel e2fsprogs-devellibxslt-devel libtool-ltdl-devel make  wget docbook-dtds docbook-style-xsl -y  #源碼安裝時必須安裝的依賴


3. 添加運行 heartbeat的用戶和組 (源碼安裝,在主備服務器上同時操做)

# groupadd -r haclient

# useradd -r -g haclient -M -s /sbin/nologin hacluster


4. 換yum源

# mv /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.backup

# wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-6.repo


5. 調整時區並對時

# ntpdate 10.0.0.254  #db1與db2上分別對時

 7 May 22:33:02 ntpdate[2729]: adjust timeserver 10.0.0.254 offset -0.001976 sec


2、安裝

# yum -y install heartbeat* httpd #最小化安裝的系統大約有26個左右的包要安裝


3、配置並啓動Heartbeat

1. 主上(db1)的配置:

cd /usr/share/doc/heartbeat-3.0.4/

cp  authkeys  ha.cf    haresources   /etc/ha.d/

cd /etc/ha.d

vi authkeys #打開下面兩項:一共有三種認證方式供選擇,第一種是CRC循環冗餘校驗,第二種是SHA1哈希算法,第三種是MD3哈希算法,其中他們的密碼能夠任意設置,可是兩邊密碼必須保持一致。  

auth 3 

3 md5 Hello!

chmod 600 authkeys   #給認證文件受權爲600

vi  haresources    #編輯資源文件,加入以下語句

db1 10.0.0.210/24/eth0 httpd #設定虛擬IP和對應的接口,而且指定啓動虛擬IP時啓動httpd服務,這裏的httpd服務必須是可以直接在/etc/init.d/目錄下啓動的服務。

注意:主節點和備節點中資源文件haresources要徹底同樣。

 

# ha.cf文件主要參數註釋:

debugfile /var/log/ha-debug   #設定debug文件目錄

logfile /var/log/ha-log     #設定日誌文件目錄

logfacility     local0    #利用系統日誌打印日誌

keepalive 1           #設定檢查時間間隔爲1s

deadtime 10           #設定在10s內沒有心跳信號,則當即切換服務

warntime 5            #設定告警時間爲5s(5s內沒有收到對方的迴應就報警)

initdead 60           #設定初始化時間爲60s

udpport 694           #設定集羣節點間的通訊協議及端口爲udp694監聽端口(該端口能夠修改)

ucast eth1  192.168.0.201    #設定心跳方式使用單播方式,而且是在eth1接口上進行單播,ip地址爲對方心跳端口的IP

auto_failback on/off       #當主節點恢復後,是否自動切回,通常都設爲off

node    db1          #指定兩個節點

node    db2

ping 192.168.0.1         #指定一個第三方的仲裁節點

respawn hacluster /usr/lib64/heartbeat/ipfail  #使用這個腳本去偵聽對方是否還活着(使用的是ICMP報文檢測)


# egrep -v "^#|^$"ha.cf   //這次試驗的配置文件

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility     local0

keepalive 2

deadtime 30

warntime 10

initdead 120

udpport 694

ucast eth1 192.168.0.201

auto_failback off

node    db1

node    db2

ping 192.168.0.1

respawn hacluster /usr/lib64/heartbeat/ipfail

 

2. 把主上的三個配置拷貝到從(db2)上:

cd /etc/ha.d/

scp –P52668 -p authkeys  ha.cf   haresources   root@db2:/etc/ha.d/

 

3. 到從上(db2) 編輯ha.cf

vi  /etc/ha.d/ha.cf  #只須要更改一個地方, IP修改成對端主機的IP地址(192.168.0.205)

ucast eth1 192.168.0.201  改成  ucast eth1 192.168.0.205

 

4. 啓動heartbeat

先主,後從

service heartbeat start

 

5. 測試高可用

db1:

[root@db1 ha.d]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu65536 qdisc noqueue state UNKNOWN

   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

   inet 127.0.0.1/8 scope host lo

   inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP>mtu 1500 qdisc pfifo_fast state UP qlen 1000

   link/ether 00:0c:29:db:31:f7 brd ff:ff:ff:ff:ff:ff

   inet 10.0.0.50/24 brd 10.0.0.255 scope global eth0

    inet 10.0.0.210/24 brd 10.0.0.255 scopeglobal secondary eth0

   inet6 fe80::20c:29ff:fedb:31f7/64 scope link

      valid_lft forever preferred_lft forever

3: eth1:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWNqlen 1000

   link/ether 00:0c:29:db:31:01 brd ff:ff:ff:ff:ff:ff

   inet 191.168.0.205/24 brd 191.168.0.255 scope global eth1

   inet6 fe80::20c:29ff:fedb:3101/64 scope link

         valid_lft forever preferred_lft forever

db2:

[root@db1 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu65536 qdisc noqueue state UNKNOWN

   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

   inet 127.0.0.1/8 scope host lo

   inet6 ::1/128 scope host

      valid_lft forever preferred_lft forever

2: eth0:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen1000

   link/ether 00:0c:29:db:31:f7 brd ff:ff:ff:ff:ff:ff

   inet 10.0.0.52/24 brd 10.0.0.255 scope global eth0

   inet6 fe80::20c:29ff:fedb:31f7/64 scope link

      valid_lft forever preferred_lft forever

3: eth1:<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWNqlen 1000

   link/ether 00:0c:29:db:31:01 brd ff:ff:ff:ff:ff:ff

   inet 191.168.0.201/24 brd 191.168.0.255 scope global eth1

   inet6 fe80::20c:29ff:fedb:3101/64 scope link

      valid_lft forever preferred_lft forever

[root@db1 ~]# curl 10.0.0.210  

web1 page

 

# 停掉db1上的網卡服務或關機後,再次在db2上查看VIP和服務是否切換成功

[root@db1 ~]# service heartbeat stop

Stopping High-Availability services: Done.

db2:

wKioL1cupi3j3AwxAABBCq0DpwE438.png

[root@db1 ~]# curl 10.0.0.210      

web2 page

相關文章
相關標籤/搜索