keeplaved主要實現的功能就是故障切換和健康檢測來判斷調度器和節點服務器的可用性,並及時隔離替換爲新的服務器,當故障主機恢復時自動添加回來。官方站點位於http://www.keepalived.org/
下載地址http://www.keepalived.org/download.html
-。keepalived概述安裝
實驗環境:四臺服務器 vip:192.168.1.172 主 192.168.1.10 從 192.168.1.20 節點 1,192.168.1.100 節點2 192.168.1.200
1)安裝軟件支持
在編譯安裝Keepalived之前,必須安裝內核開發包 kernel-devel 、以及openssl-devel popt-devel等支持庫。除此之外,在配置LVS時,也需要用到ipvsadm管理工具。
[root@MasterKeep ~]# yum -y install openssl-devel kernel-devel popt-devel ipvsadm
2)安裝keepalived
[root@MasterKeep ~]# cd keepalived-1.2.13
[root@MasterKeep keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ && make && make install
--prefix=/ 指定安裝路徑 默認會在/下的etc目錄下創建一個子目錄爲keepalived
--with-kernel-dir 指定內核文件所在路徑
make && make install 編譯並安裝
3)配置服務啓動腳本
[root@MasterKeep keepalived-1.2.13]# chmod +x /etc/init.d/keepalived
[root@MasterKeep keepalived-1.2.13]# chkconfig --add keepalived
[root@MasterKeep keepalived-1.2.13]# chkconfig keepalived on
4)配置主配置文件
主配置文件安裝完成後會默認存在/etc/keepalived/名字爲keepalived.conf,不需要複製樣例文件
我們對其進行編輯,主配置文件分爲三個部分,全局配置、vrrp配置以及lvs配置
我們先對全局配置和vrrp配置進行配置以實現雙機熱備功能
global_defs {
notification_email {
root@Masterkeep //指定收件人的地址
}
notification_email_from root@Masterkeep //發件人的地址
smtp_server 127.0.0.1 //郵件服務器地址
smtp_connect_timeout 30 //SMTP的連接超時時間
router_id R1 //服務器的名字(隨便)
}
vrrp_instance VI_1 {
state MASTER //服務器的工做模式
interface eth0 //與組內服務器通信的網卡
virtual_router_id 1 //心跳間隔
priority 100 //配置優先級
advert_int 1
authentication { //啓用認證
auth_type PASS //認證的類型
auth_pass 123.abc //認證密碼(組內路由器必須與主路由器相同)
}
virtual_ipaddress {
192.168.1.172 //羣集IP地址(可以有多個)
}
}
以上有幾點需要注意
①這裏使用監控的是本地系統自帶的postfix郵件系統,所以收件人、發件人都是自己,如果有真實的郵件系統可以直接指定郵件系統實例所在的IP地址就可以了(注意網關)
②主服務器的優先級必須高於備份服務器。
③認證面密碼必須相同(儘量複雜)、
④心跳間隔必須一樣(vrrp使用224.0.0.18組播地址實現心跳通信以實現狀態監控)改爲1的時候能夠實現快速的故障切換
⑤羣集IP地址必須一樣
⑥在配置文件中默認啓用了佔先全(當備份服務器接替了主服務器工作後,當主服務恢復工作後則繼續與主服務的身份運行)
5)啓動keepalived服務
[root@MasterKeep keepalived-1.2.13]# service keepalived start
6)配置防火牆
[root@MasterKeep ~]# iptables -I INPUT -p ip -d 224.0.0.18 -j ACCEPT
[root@MasterKeep ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@MasterKeep ~]# service iptables save
7)修改網卡配置信息
[root@MasterKeep ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
NM_CONTROLLED=no
[root@MasterKeep ~]# service network restart
以上就是主服務器的配置,從服務的配置差不多,只是在主配置文件略有不同
3、從keepalived的配置
安裝於服務部分同上,只是在主配置文件中略有不同
[root@BACKUPkeep keepalived-1.2.13]# vim /etc/keepalived/keepalived.conf
router_id R2
state BACKUP
priority 99
其餘部分一樣就可以了。啓動服務建立防火牆規則。修改網卡、
4、驗證漂移地址在主服務器上,從服務器上沒有
[root@MasterKeep ~]# ip addr show dev eth0
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.172/32 scope global eth0
inet6 fe80::20c:29ff:fea9:a3ce/64 scope
[root@BACKUPkeep ~]# ip addr show dev eth0
inet 192.168.1.101/24 brd 192.168.1.255 scope global eth0
inet6 fe80::20c:29ff:fe03:af59/64 scope link
valid_lft forever preferred_lft forever
5、在客戶端測試,ping -t 192.168.1.254 不中斷ping
C:\>ping -t 192.168.1.254
正在 Ping 192.168.1.254 具有 32 字節的數據:
來自 192.168.1.254 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.1.254 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.1.254 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.1.254 的回覆: 字節=32 時間<1ms TTL=64
請求超時。
請求超時。
來自 192.168.1.254 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.1.254 的回覆: 字節=32 時間<1ms TTL=64
來自 192.168.1.254 的回覆: 字節=32 時間<1ms TTL=64
可以看出斷了2下,這三下就是正在進行故障切換。
我們再去備份服務器上看一下漂移地址是否轉移到備份服務器上去了。
[root@BACKUPkeep ~]# ip addr show dev eth0
inet 192.168.1.101/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.172/32 scope global eth0
inet6 fe80::20c:29ff:fe03:af59/64 scope link
已經完成了切換,以上步驟就是實現服務器的高可用性的其中一種,我們還可以通過其他軟件來實現,在後續的課程中會慢慢的介紹
繼續試驗:實現keepalived+LVS實現高可用的負載均衡羣集
二、部署LVS+keepalived羣集
1、修改主服務器的主配置文件
[root@MasterKeep ~]# vim /etc/keepalived/keepalived.conf
virtual_server 192.168.1.172 80 {
delay_loop 15
lb_algo rr
lb_kind DR
! persistence 60
protocol TCP
real_server 192.168.1.100 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.1.200 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
2、重新啓動服務
[root@MasterKeep ~]# service keepalived restart
3、恢復網卡通信
[root@MasterKeep ~]# ifup eth0 (之後會自動成爲主服務器)
從服務器也是需要一樣的配置。
三、配置兩個節點
1、安裝httpd服務
[root@node_1 ~]# yum -y install httpd
2、啓動服務
[root@node_1 ~]# service httpd start
3、建立防火牆規則
[root@node_1 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
4、調整內核參數
[root@node_1 ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@node_1 ~]# sysctl -p
5、配置虛擬接口
[root@node_1 ~]# cd /etc/sysconfig/network-scripts/
[root@node_1 network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@node_1 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.1.254
NETMASK=255.255.255.255
ONBOOT=yes
[root@node_1 network-scripts]# service network restart
6、配置本地路由
[root@node_1 ~]# vim /etc/rc.local
/sbin/route add -host 192.168.1.254 lo:0
[root@node_1 ~]# route add -host 192.168.1.254 lo:0
7、建立測試頁
[root@node_1 ~]# echo "張斌easy" > /var/www/html/index.html
第二個節點的配置方法一樣在建立測試頁的時候內容稍微修改一下,使其可以看見不同的效果。
[root@node_2 ~]# echo "沒毛病" > /var/www/html/index.html
測試沒有問題,我們看一下將節點2宕機是查看一下ipvsadm -l 時候會自動將出現錯誤的節點移除
[root@MasterKeep ~]# ipvsadm -l
TCP 192.168.1.254:http rr
-> 192.168.1.200:http Route 1 0 0
已經移除了,那麼我們看一下是否發送了警報
[root@MasterKeep ~]# cat /var/spool/mail/root
From [email protected] Sun Nov 8 20:23:46 2015
Return-Path: <[email protected]>
X-Original-To: root@Masterkeep
Delivered-To: [email protected]
Received: from ?null? (localhost [127.0.0.1])
by MasterKeep.localdomain (Postfix) with SMTP id 481B72009FD
for <root@Masterkeep>; Sun, 8 Nov 2015 20:23:46 +0800 (CST)
Date: Sun, 08 Nov 2015 12:23:46 +0000
From: [email protected]
Subject: [R1] Realserver [192.168.1.201]:80 - DOWN
X-Mailer: Keepalived
Message-Id: <[email protected]>
=> TCP CHECK failed on service <=
以上就是健康監測得出的結果,我們現在講節點2恢復
[root@MasterKeep ~]# ipvsadm -l
TCP 192.168.1.254:http rr
-> 192.168.1.200:http Route 1 0 0
-> 192.168.1.201:http Route 1 0 0
已經可以開始工作了。
Subject: [R1] Realserver [192.168.1.201]:80 - UP
將主服務宕機之後備份服務器還能繼續體統訪問就算成功了,如果你在最後驗證的時候出現了錯誤,那麼請將主服務器的配置文件複製過來,在進行簡單修改一下前面配置雙機熱備時的配置就可以了。