基于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 11:06
下一篇 2015-06-08 11:09

相關推薦

  • Linux理論基礎(計算機組成機器功能|Linux發行版|Linux哲學思想)

    1、描述計算機的組成及其功能。
    2、按系列羅列Linux的發行版,并描述不同發行版之間的聯系與區別。
    3、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述。

    2018-03-06
  • N25-第9周博客作業

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # 統計登錄用戶和非登陸用戶的個數 # author: han declare -i loginnum=0 declare -i nologinnum=0 whil…

    Linux干貨 2017-03-10
  • 馬哥面授班20期-第一周(計算機基礎,linux入門)

    一.計算機發展歷史及硬件組成部分     計算機發展歷史:第一代:(1946-1957)電子管時代,第二代:(1958-1964)晶體管時代,              第三代:(1965-1970)集成電路時…

    Linux干貨 2016-07-26
  • 雙主模型的Nginx高可用負載均衡集群

    實驗目的:使用keepalived實現Nginx的雙主高可用負載均衡集群 實驗環境:兩臺Nginx proxy(雙主Nginx,各需要兩塊網卡,eth0連接內網,eth1連接外網)、兩臺web server(請求的負載均衡)、一臺client用于驗證結果。 注意:為了不影響實驗結果,在實驗開始前先關閉iptables和selinux 操作步驟: 一、配置IP…

    2017-05-13
  • N22-第十三周作業

    1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)  1)共享名為shared,工作組為magedu;  2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名;  3)添加samb…

    Linux干貨 2016-11-14
  • 系統進程管理

    ps 查看系統進程命令 啟動進程的方式:     系統啟動過程中自動啟動:與終端無關的進程;     用戶通過終端啟動:與終端相關的進程; 選項:         a:所有與終端相關的進程; &nbs…

    Linux干貨 2016-09-06
欧美性久久久久