您好,登錄后才能下訂單哦!
####heartbeat簡介####
Heartbeat 項目是 Linux-HA 工程的一個組成部分,它實現了一個高可用集群系統。心跳服務和集群通信是高可用集群的兩個關鍵組件,在 Heartbeat 項目里,由 heartbeat 模塊實現了這兩個功能。
這個集群方案是利用第三方軟件搭建的,要比RedHat自帶的集群軟件在功能上簡化一些,但是搭建起來非常的方便。而且是一種快速解決方案。
heartbeat的高可用集群采用的通信方式是udp協議和串口通信,而且heartbeat插件技術實現了集群間的串口、多播、廣播和組播通信。它實現了HA 功能中的核心功能——心跳,將Heartbeat軟件同時安裝在兩臺服務器上,用于監視系統的狀態,協調主從服務器的工作,維護系統的可用性。它能偵測服務器應用級系統軟件、硬件發生的故障,及時地進行錯誤隔絕、恢復;通過系統監控、服務監控、IP自動遷移等技術實現在整個應用中無單點故障,簡單、經濟地確保重要的服務持續高可用性。 Heartbeat采用虛擬IP地址映射技術實現主從服務器的切換對客戶端透明的功能。
但是單一的heartbeat是無法提供健壯的服務的,所以我們在后臺使用lvs進行負載均衡。
####安裝heartbeat####
一:設置環境
1.系統:redhat6.5 ;
2.節點:一共要用到四個虛擬機作為節點,其中server10與server11安裝heartbeat和lvs,另外兩個節點server12與server13只提供apache和vsftpd服務;
3.這四個節點之間的解析一定要做好;
4.防火墻關閉,時間同步,四個機子的系統版本最好相同。
二:安裝heartbeat:(這個是第三方軟件,不是redhat自帶的,所以大家要自己去下載)
heartbeat-3.0.4-2.el6.x86_64.rpm
heartbeat-devel-3.0.4-2.el6.x86_64.rpm
heartbeat-libs-3.0.4-2.el6.x86_64.rpm
在下載之前還要修改本機的yum源配置
vim /etc/yum.repos.d/rhel-source.repo
######################################
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.60.250/rhel6.5/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.60.250/rhel6.5/HighAvailability
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.60.250/rhel6.5/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.60.250/rhel6.5/ResilientStorage
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.60.250/rhel6.5/ScalableFileSystem
gpgcheck=0
##############################################
heartbeat的配置文件存放在/etc/ha.d/中
但是在默認情況下,配置文件中并沒有,因此我們需要從其他地方拷貝
[root@server10 ~]# cd /usr/share/doc/heartbeat-3.0.4/
[root@server10 heartbeat-3.0.4]# cp ha.cf authkeys haresources /etc/ha.d/
接下來編寫配置文件:
[root@server10 ha.d]# vim ha.cf
#############################
29 logfile /var/log/ha-log ##日志存放位置
48 keepalive 2 ##設定heartbeat之間的時間間隔為2秒
56 deadtime 30 ##在30秒后宣布節點死亡。
61 warntime 10 ##在日志中發出“late heartbeat“警告之前等待的時間,單位為秒
71 initdead 120 ##在某些配置下,重啟后網絡需要一些時間才能正常工作。它的取值至少應該為通常deadtime的兩倍
76 udpport 694 ##使用端口694進行bcast和ucast通信。這是默認的
91 bcast eth0
211 node server10 ##有兩個節點安裝heartbeat
212 node server11
#################################
[root@server10 ha.d]# vim authkeys
################
23 auth 1
24 1 crc
################
最后我們修改haresources,我們要在其中添加一個apache服務,但是我們要給它一個虛擬的ip(這個ip一定是沒有被別人占用的),讓這兩個節點作它的論尋
[root@server10 ha.d]# vim haresources
#######################################################
149 server10 IPaddr::172.25.60.100/24/eth0 httpd
########################################################
在兩邊都安裝httpd服務作為測試,為了區分,我們在他們的index.html中寫入不同的內容
做完上述內容后開啟兩邊的heartbeat服務及httpd服務:
[root@server10 ha.d]# /etc/init.d/heartbeat start
[root@server10 ha.d]# /etc/init.d/httpd start
然后我們來通過firefox檢驗效果:
然后我們讓當前的節點heartbeat關閉,發現另外一個節點自動接管了:
再讓剛才那個節點的heartbeat開啟,因為它是主節點(server10),所以又接管回來了:
這樣就起到了負載均衡的效果
####LVS簡介####
LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統
1.LVS的三種負載均衡技術:
(1).通過NAT實現虛擬服務器(VS/NAT)
(2).通過IP隧道實現虛擬服務器(VS/TUN
(3).通過直接路由實現虛擬服務器(VS/DR)
####LVS的安裝和配置####
首先下載ipvsadm
[root@server10 ha.d]# yum install ipvsadm -y
[root@server10 ha.d]# ipvsadm -l ##查看調度,此時應當沒有任何調度
接下來添加虛擬ip作為公共訪問ip
[root@server10 ha.d]# ifconfig eth0:0 172.25.60.200 netmask 255.255.255.0 up
我們添加虛擬ip的httpd服務的端口,并且采用了輪叫的算法(RR):
[root@server10 ha.d]# ipvsadm -A -t 172.25.60.200:80 -s rr
[root@server10 ha.d]# ipvsadm -l ##再次查看調度時,會發現有了一條調度
允許server12和server13的httpd服務作為輪叫的節點:
[root@server10 ha.d]# ipvsadm -a -t 172.25.60.200:80 -r 172.25.60.12:80 -g
[root@server10 ha.d]# ipvsadm -a -t 172.25.60.200:80 -r 172.25.60.13:80 -g
在serevr12和server13上分別安裝httpd服務:
server12和server13要能夠識別172.25.60.200這個虛擬IP,所以他們也要添加這個虛擬網卡。
[root@server12 ~]# ifconfig eth0:0 172.25.60.200 netmask 255.255.255.0 up
現在控制節點和提供真實服務的節點都能夠識別VIP(172.25.60.200),接下來我們要在提供服務的節點上添加策略,這個感覺和防火墻很類似,不過要安裝一個額外的軟件:
[root@server12 ~]# yum install arptable* -y
添加策略,把直接進來訪問172.25.60.200的包全部丟棄,讓從172.25.60.200出去的包從172.25.60.12出去(172.25.60.13同理)。
[root@server13 ~]# arptables -A IN -d 172.25.60.200 -j DROP
[root@server13 ~]# arptables -A OUT -s 172.25.60.200 -j mangle --mangle-ip-s 172.25.60.12
[root@server13 ~]# arptables -nL
[root@server13 ~]# /etc/init.d/arptables_jf save ##保存策略
現在我們通過瀏覽器反復訪問172.25.60.200(確保服務節點的httpd服務開啟),多刷新幾次:
用ipvsdm -l查看訪問之前控制節點記錄的信息
在訪問了12次之后,我們發現兩個節點各輪叫了6次,但是訪問的ip都是虛擬ip(172.25.60.200),這就是直連情況下的LVS方案
####heartbeat+lvs
讓這兩個軟件能夠互相協作,并且讓該平臺具有能夠報警和挽救的機制,我們需要安裝ldirectord軟件。
ldirectord-3.9.2-1.2.x86_64.rpm
在server10和server11上安裝ldirectord(因為包和系統的包有依賴性,所有使用yum安裝
[root@server10 ha.d]# yum install ldirectord-3.9.2-1.2.x86_64.rpm -y
拷貝配置文件到heartbeat的配置文件目錄下
[root@server10 ha.d]# cp /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/
兩邊的節點上都安裝perl-IO-Socket-INET6-2.56-4.el6.noarch:,否則后面的ldirectord會因為缺少腳本無法打開:
[root@server10 ha.d] yum install perl-IO-Socket-INET -y
編輯ldirectord的配置文件
[root@server10 ha.d] vim directord.cf
################################
25 virtual=172.25.60.200:80
26 real=172.25.60.12:80 gate
27 real=172.25.60.13:80 gate
28 fallback=127.0.0.1:80 gate
29 service=http
30 scheduler=rr
31 #persistent=600
32 #netmask=255.255.255.255
33 protocol=tcp
34 checktype=negotiate
35 checkport=80
36 request="index.html"
################################
我們指定兩個真實服務的節點172.25.60.12和172.25.60.13,他們的訪問順序采用輪叫的方式,當兩個節點都掛掉的話,172.25.60.10這個節點自己提供服務。
把這個配置文件拷貝到另外一個控制節點172.25.60.11的配置文件處:
[root@server10 ha.d]# scp ldirectord.cf 172.25.60.11:/etc/ha.d/
編輯haresources文件,添加ldirectord服務到heartbeat中:
[root@server10 ha.d]# vim haresources
##################################
149 server10 IPaddr::172.25.60.100/24/eth0 httpd ldirectord
##################################
在server11下也作同樣的修改
這個時候我們直接啟動heartbeat服務,他會自動調用ldirectord服務,而我們的ldirectord的配置文件里的內容完成著和LVS一樣的調度功能,這樣平臺搭建基本完成:
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。