HA heartbeat在虛擬機器中的實現及其問題

2021-08-07 09:53:47 字數 4925 閱讀 5933

高ha部署

1. vmware:12.5.0  

2. linux:centos6.3-x86  

3. heartbeat:3.0.4  

4. nginx:1.6.2  

5. 主機a(eth0):192.168.157.137

6. 備機b(eth0):192.168.157.138   

7. 主機a心跳線(eth1):192.168.0.250   

8. 備機b心跳線(eth1):192.168.0.249   

9. 虛擬ip(eth0:0):192.168.157.200

10. 裁判ip(ping):192.168.1.1  

第一步

配置基礎環境

配置主機a、備機b,以下操作需要在兩台主機上都進行配置。

1. [root@wang-a ~]# yum -y install nginx  

禁用系統防火牆、selinux。

1. [root@wang-a ~]# service iptables stop  

2. [root@wang-a ~]# setenforce 0  

1. [root@wang-a ~]# vim /etc/hosts  

主機名如果不知道,輸入hostname檢視即可。

1. 192.168.157.137 wang-a  

2. 192.168.157.138 wang-b  

安裝epel擴充套件源,再安裝heartbeat軟體包,openssh-clients其實可裝可不裝,花郎只是為了接下來要使用scp命令罷了。

1. [root@wanga ~]# yum -y install epel-release  

2. [root@wangh-a ~]# yum -y install heartbeat*  

3. [root@wang-a ~]# yum -y install openssh-clients  

至此,基本的實驗環境就準備好了,為方便演示,主機a是123123123,備機b是456456456

第二步

配置主機a

先拷貝三份heartbeat配置檔案模版到指定路徑。

1. [root@wang-a ~]# cd /usr/share/doc/heartbeat-3.0.4/  

2. [root@wang-a heartbeat-3.0.4]# cp -rf authkeys ha.cf haresources /etc/ha.d/  

配置authkeys加密檔案,按shift+g到檔案末尾,按需修改加密方式,花郎是使用md5的加密,修改完畢後,再設定檔案許可權為600。注意,如果主機a是使用md5加密,那麼備機b也必須保持一致!

1. [root@wang-a heartbeat-3.0.4]# cd /etc/ha.d  

2. [root@wang-a ha.d]# chmod 600 authkeys  

3. [root@wang-a ha.d]# vim authkeys  

內容如下:

1. auth 3  

2. #1 crc  

3. #2 sha1 hi!  

4. 3 md5 hello!  

接下來要設定乙個虛擬ip,花郎設定為192.168.157.200,埠為eth0:0,對應啟動的服務為nginx。

1. [root@wanga ha.d]# vim haresources  

主機a的主機名、虛擬ip、網口、監控的服務,不要寫錯!

1. wang-a 192.168.157.200/24/eth0:0 nginx  

重頭戲來了,開始配置主機a的heartbeat主配置檔案。

1. [root@wang-a ha.d]# vim ha.cf  

1. debugfile /var/log/ha-debug  

2. logfile /var/log/ha-log  

3. logfacility     local0  

4. keepalive 2  

5. deadtime 30  

6. warntime 10  

7. initdead 60  

8. u***ort 694  

9. ucast eth1 192.168.0.250

10. auto_failback on  

11. node    wang-a  

12. node    wang-b  

13. ping 192.168.1.1  

14. respawn hacluster /usr/lib/heartbeat/ipfail   #如果作業系統是64位的路徑為 /usr/lib64/heartbeat/ipfail   

因為主機a和備機b的三份heartbeat配置檔案在內容上是差不多的,所以配置備機b的時候,可以直接把主機a的三份配置檔案直接拷貝到備機b上,一會再稍作修改即可!注意,要使用scp命令,主機a、備機b必須安裝openssh-clients。

1. [root@wang-a ha.d]# scp authkeys ha.cf haresources root@wanghualang-b:/etc/ha.d/  

第三步

配置備機b

剛才已經從主機a拷貝了三份配置檔案過來,需要對ha.cf檔案進行修改,另外兩個則不需要。

1. [root@wang-b ~]# cd /etc/ha.d/  

2. [root@wang-b ha.d]# vim ha.cf  

唯一需要修改的引數就是ucast,修改偵聽的心跳線介面和對應的對端介面的ip位址,所以在配置備機b時,ucast必須填寫主機a的心跳線ip位址,即192.168.0.249。

1. debugfile /var/log/ha-debug  

2. logfile /var/log/ha-log  

3. logfacility     local0  

4. keepalive 2  

5. deadtime 30  

6. warntime 10  

7. initdead 60  

8. u***ort 694  

9. ucast eth1 192.168.0.250

10. auto_failback off   #a正常b不接手   

11. node    wang-a  

12. node    wang-b  

13. ping 192.168.1.1  

14. respawn hacluster /usr/lib64/heartbeat/ipfail  

第四步

啟動測試

兩台主機可以同時啟動nginx,然後先開啟瀏覽器訪問兩個**,確保nginx服務是正常的。

1. [root@wang-a ~]# service nginx start  

2. [root@wang-b ~]# service nginx start  

主機a,123123123:

備機b,456456456:

能正常訪問網頁後,再停用兩台主機的nginx。

1. [root@wang-a ~]# service nginx stop  

2. [root@wang-b ~]# service nginx stop   

先啟動主機a上的heartbeat。

1. [root@wang-a ~]# service heartbeat start  

大約一分鐘後,再看eth0:0虛擬ip是否啟動。/

1. [root@wang-a ~]# ip a   

虛擬ip已經成功啟動,

如果虛擬網絡卡一直無法啟動日誌也沒有報錯的話 手動配置eth0:0

ifconfig eth0:0 192.168.157.200 netmask 255.255.255.0 

ifconfig eth0:0  檢視eth0:0網絡卡

ifconfig eth0:0 up 啟動網絡卡

瀏覽器訪問192.168.157.137或192.168.157.200,都會顯示同乙個**,123132123,

再啟動備機b上的heartbeat,備機b就會自動進入待命模式,即主機a一旦故障,備機b就會接手。

1. [root@wang-b ~]# service heartbeat start  

擴充套件閱讀

啟動備機b之後,要特別注意觀察,當主機a執行正常時,不論等多久,備機b上是不會啟動虛擬ip的,一旦啟用,就表示兩台機子都在互搶資源,都誤判對方機子故障,自己將成為主導,俗稱腦裂(split-brain)!詳情可以檢視日誌,進行故障分析。

1. [root@wang-a ~]# cat /var/log/ha-debug   

2. [root@wang-a ~]# cat /var/log/ha-log  

接下來,直接把主機a斷電關機,玩的就是簡單,要的就是粗暴!徹底斷電後,立即清空瀏覽器所有快取,再次訪問192.168.157.137或 192.168.157.200時,應該就無法開啟123123123,即主機a已徹底故障,等待備機b接手!等大約一分鐘,再用瀏覽器訪問 192.168.157.200,456456456,說明備機b已接手,並正常提供服務, 

b機畢竟是作為備機而存在的,當主機a修理好之後,便會自動接管回來!開始做最終測試,依舊先清空瀏覽器所有快取,虛擬機器開啟主機a的電源,並啟動 heartbeat,等一分鐘左右,再次訪問192.168.1157.200,如果出現的是123123123,說明主機a已自動做回主導,實驗 成功!

最後感謝wanghualang提供的教程!! 謝謝!!

KVM巢狀虛擬化 在虛擬機器中建立虛擬機器

一般情況下,我們是無法在kvm虛擬機器裡面再去建立虛擬機器的,因為我們的kvm虛擬機器的cpu預設情況下並不支援虛擬化功能,對於inter的cpu來說,如果要支援虛擬化功能,必須要有乙個叫vmx的特性,以下是乙個物理伺服器的cpu資訊 在cpu特性 flags 中包含了vmx這個特性,說明這台伺服器...

在虛擬機器下輸

前幾天遇到的乙個問題就是在虛擬機器下我想要給程式注釋,可我怎麼調我的輸入法都沒有用,可我必須得注釋啊!這怎麼辦呢?之前我將在windows環境下的複製貼上到虛擬機器環境下,發現是可以顯示中文字型啊!就在昨天同學來我宿舍玩,我問了她這件事,她說她有同學也有這種情況,然後我開啟虛擬機器讓她來給我操作下。...

在虛擬機器安裝Linux

安裝在虛擬機器,主要是學習使用,使用典型配置,不去折騰自定義了 選擇自己對應的安裝版本 名稱和位置自行決定 磁碟容量暫時分配40g即可後期可以隨時增加,不要勾選立即分配所有磁碟,否則虛擬機會將40g直接分配給centos,會導致宿主機所剩硬碟容量減少。勾選將虛擬磁碟拆分成多個檔案,這樣可以使虛擬機器...