基于heartbeat v1+ldirectord實現LVS集群高可用

前言

高可用集群,High Availability Cluster,簡稱HA Cluster,是指以減少服務中斷時間為目的的服務器集群技術。通過上文可以看出,LVS集群本身并不能實現高可用,比如Director Server不能檢測Real Server的健康度,一旦其中一臺或全部Real Server宕機,Director Server還會繼續轉發請求,導致站點無法訪問,同樣,如果Director Server宕機站點就更不可能正常運轉了。本文將講解如何基于heartbeat v1實現LVS集群高可用。

Heartbeat 

簡介

Heartbeat是Linux-HA工程的一個組件,自1999年開始到現在,發布了眾多版本,是目前開源Linux-HA項目最成功的一個例子,在行業內得到了廣泛的應用。

工作原理

Heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測可以通過網絡鏈路和串口進行,而且支持冗余鏈路,它們之間相互發送報文來告訴對方自己當前的狀態,如果在指定的時間內未收到對方發送的報文,那么就認為對方失效,這時需啟動資源接管模塊來接管運行在對方主機上的資源或者服務。

基于Heartbeat v1實現LVS集群高可用

實驗拓撲

heartbeat實現lvs高可用.jpg

實驗環境

node1:node1.scholar.com 172.16.10.123 CentOS6.6

node2:node2.scholar.com 172.16.10.124 CentOS6.6

Real Server1:192.168.1.10(VIP)172.16.10.125(RIP) CentOS6.6

Real Server2:192.168.1.10(VIP)172.16.10.126(RIP) CentOS6.6

注意事項

配置高可用集群的前提:(以兩節點的heartbeat為例)

①時間必須保持同步

使用ntp服務器

②節點必須名稱互相通信

解析節點名稱

/etc/host

集群中使用的主機名為`uname -n`表示的主機名

③ping node

僅偶數節點才需要

④ssh密鑰認證進行通信

配置過程

時間同步

請確保兩個節點時間同步,這里不再詳細講述

解析名配置

[root@node1 ~]# vim /etc/hosts

172.16.10.123   node1.scholar.com node1
172.16.10.124   node2.scholar.com node2

[root@node1 ~]# vim /etc/sysconfig/network
HOSTNAME=node1.scholar.com

[root@node1 ~]# uname -n
node1.scholar.com

#兩個節點都需如上操作

ssh密鑰配置

[root@node1 ~]# ssh-keygen -t rsa -P ''
[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2
[root@node2 ~]# ssh-keygen -t rsa -P ''
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@node1 ~]# date; ssh node2 'date'  #測試
Sun Jun  7 17:46:03 CST 2015
Sun Jun  7 17:46:03 CST 2015

安裝所需軟件包

#解決依賴關系
[root@node1 ~]# yum install perl-TimeDate net-snmp-libs libnet PyXML -y #需epel源支持
[root@node1 ~]# cd heartbeat2
[root@node1 heartbeat2]# ls
heartbeat-2.1.4-12.el6.x86_64.rpm             heartbeat-pils-2.1.4-12.el6.x86_64.rpm
heartbeat-gui-2.1.4-12.el6.x86_64.rpm         heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm
[root@node1 heartbeat2]# 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
[root@node1 heartbeat2]# yum install heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm -y

#兩個節點都執行以上操作

配置heartbeat

準備配置文件

1.jpg

配置算法密鑰

[root@node1 ~]# openssl rand -hex 8
4d8fd6cb49d2047b
[root@node1 ~]# vim /etc/ha.d/authkeys

auth 2
2 sha1 4d8fd6cb49d2047b

配置主配置文件

[root@node1 ~]# grep -v "#" /etc/ha.d/ha.cf |grep -v "^$"
logfile	/var/log/ha-log  #日志存放位置
keepalive 2              #指定心跳使用間隔時間
deadtime 30              #指定備用節點接管主節點服務資源超時時間
warntime 10              #指定心跳延遲的時間
initdead 120             #解決網絡啟動延時
udpport	694              #設置廣播通信端口
mcast eth0 225.0.25.1 694 1 0 #定義廣播地址
auto_failback on              #定義當主節點恢復后,是否將服務自動切回
node	node1.scholar.com     #主節點
node	node2.scholar.com     #備用節點
ping 172.16.0.1               #仲裁設備

配置資源管理器

[root@node1 ~]# vim /etc/ha.d/haresources 

node1.scholar.com 192.168.1.10/32/eth0/192.168.1.10 ldirectord::/etc/ha.d/ldirectord.cf

將配置文件傳給備用節點

2.jpg

配置ldirectord

準備配置文件并配置

[root@node1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
[root@node1 ~]# grep -v ^#  /etc/ha.d/ldirectord.cf

checktimeout=3        #探測超時時間
checkinterval=1       #探測間隔時間
autoreload=yes        #修改配置文件,無需重啟服務即可重載
quiescent=yes         #real server 宕機后從lvs列表中刪除,恢復后自動添加進列表

virtual=192.168.1.10:80     #VIP
	real=172.16.10.125:80 gate    #real server
	real=172.16.10.126:80 gate    #real server
 	fallback=127.0.0.1:80 gate    #如果RS節點都宕機,則啟用本地環回口地址
	service=http                  #基于http協議探測
	request=".health.html"        #探測文件
	receive="ok"                  #探測內容,判斷RS是否存活
	scheduler=rr                  #調度算法
	#persistent=600
	#netmask=255.255.255.255

將配置文件傳給備用節點,并禁止各節點ldirectord開啟自啟

3.jpg

準備fallback文件

4.jpg

RS設置

#兩個RS各進行如下配置

配置內核參數

5.jpg

準備健康度探測文件和站點文件

6.jpg

測試頁面

7.jpg

啟動heartbeat

8.jpg

查看資源是否生效

9.jpg

高可用測試

10.jpg

刷新頁面

11.jpg

將RS2模擬宕機

[root@scholar ~]# service httpd stop

12.jpg

無論怎么刷新都是RS1的頁面

接下來我們把RS1也停掉

13.jpg

切回fallback頁面了

我們將node1停掉,看一下node2是否可以接管資源

[root@node1 ~]# service heartbeat stop

14.jpg

資源成功接管,以上訪問也不受任何影響,當然如果在次啟動node1資源會被再次搶過去,這里就不再演示

基于heartbeat v1 實現LVS高可用至此完成

The end

好了,基于heartbeat v1 實現LVS高可用就說到這里了,整個過程還是挺好玩的,配置過程中遇到問題可留言,下篇將會講解基于heartbeat v2的高可用集群,有興趣可以繼續關注呦。以上僅為個人學習整理,如有錯漏,大神勿噴~~~

原創文章,作者:書生,如若轉載,請注明出處:http://www.www58058.com/5120

(0)
書生書生
上一篇 2015-06-08
下一篇 2015-06-08

相關推薦

  • FHS文件系統各個目錄功能

    FHS文件系統各個目錄功能 概述      Linux文件系統有點特別,它采用一種稱為虛擬目錄(virtual directory)的單文件系統,虛擬目錄包括了計算機存儲設備下的所有路徑,并且把它們納入一個目錄結構中。      Linux PC上安裝的第一塊硬盤叫做根驅動器,根驅動器包含了虛擬目錄…

    Linux干貨 2016-10-17
  • 馬哥教育網絡班21期+第五周課程練習

    馬哥教育網絡班21期+第5周課程練習 [TOC] 1. 顯示/boot/grub/grub.conf中至少以一個空白字符開頭的行。 [root@rhel-5 ~]# grep -E '^[[:space:]]+' /boot/grub/grub.conf  root (hd…

    Linux干貨 2016-08-02
  • 關于IO的同步,異步,阻塞,非阻塞

    上次寫了一篇文章:Unix IO 模型學習。恰巧在這次周會的時候,@fp1203 (goldendoc成員之一) 正好在講解poll和epoll的底層實現。中途正好討論了網絡IO的同步、異步、阻塞、非阻塞的概念,當時講下來,大家的理解各不相同,各執己見。搜索了網絡上的一些文章,觀點也各不相同,甚至連wiki也將異步和非阻塞當成一個概念在解釋。  &…

    Linux干貨 2015-04-02
  • Linux下常用壓縮工具總結

    gzip: 1)只能針對普通文件進行壓縮,對文件夾、符號鏈接無效。 2)如果想對多個文件一起壓縮并打包,gzip是無法辦到的,需要結合tar進行 [root@mysql-master databackup]# ll 總用量 32 drwx—— 2 root root 4096&nb…

    Linux干貨 2016-12-05
  • RAID特性詳解,及RAID創建詳細操作

    寫在前面–命令總覽:創建RAID:mdamd  -C [-l級別  -n盤數量  -cchunk  -a是否詢問] 查看RAID: mdadm –D   停止RAID:mdadm –S  管理RAID:-f標記損壞  -r刪除  -a添加 watch&nbs…

    Linux干貨 2016-02-14
欧美性久久久久