Keepalived實現雙機熱備
一、工作原理
首先有一個虛擬ip暴露給客戶端,虛擬ip對應的mac地址爲一臺真實服務器,即用戶向虛擬ip發送一個請求,該請求會被分發到真實服務器上。
現在有2臺真實服務器,一臺master,一臺backup,master和backup上都運行着keepalived,當master掛了的時候,backup檢測之後,自己成爲master,且arp緩存虛擬ip對應的mac地址將變爲backup的mac地址,這樣請求虛擬ip的報文會被髮送到backup。
架構圖如下:
wKiom1arPGCRI88fAAB-Cp9f34g933.png
二、安裝環境規劃:
主機:192.168.1.171
備機:192.168.1.172
虛擬ip:192.168.1.173
操作系統:RedHat Enterprise Linux 6.5 x86_64
三、操作系統安裝
操作系統安裝過程網上安裝文檔較多,此過程省略。
3.1 配置/etc/hosts文件
分別在master和slaver主機寫入
#vim /etc/hosts
192.168.1.171 rhelha01.site
192.168.1.172 rhelha02.site
wKiom1arPIKCbUTvAABhwkfJtsM497.png
3.2 Master/slaver分別配置防火牆
關閉防火牆
#serviceiptables stop
#vim/etc/selinux/config
SELINUX=disabled
wKiom1arPM2xgpZXAAA6mkDDhUI941.png
3.3 配置RHEL6.5本地鏡像yum源
利用RHEL6.5操作系統光盤製作一個本地yum源,具體配置步驟如下:
3.3.1 爲本地鏡像創建掛載目錄
#mkdir /media/mnt
3.3.2掛載DVD至本地新建目錄
#mount /dev/cdrom /media/mnt
3.3.3 備份yum源配置文件
#cp /etc/yum.repos.d/rhel-source.repo/etc/yum.repos.d/rhel-source.repo.backup
3.3.4 修改yum源配置文件
#vim /etc/yum.repos.d/rhel-source.repo
刪除原有內容,添加如下:
[RHEL-Source]
name=local ios
baseurl=file:///media/mnt/
enabled=1
gpgcheck=0
gpgkey=file:///media/mnt/RPM-GPG-KEY-redhat-release
3.3.5清除舊的緩存數據
yum clean all
yum makecache
yum list
3.3.6配置本地yum源完成
四、keepalived安裝:
下載:keepalived-1.2.16.tar.gz
http://www.keepalived.org/download.html
4.1 開始安裝
tar zxf keepalived-1.2.16.tar.gz
cd keepalived-1.2.16
#./configure --disable-fwmark--prefix=/usr/local/keepalived
#make && make install
4.2 配置文件整理:
mkdir/etc/keepalived/
cp/usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
cp/usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig/
ln -s/usr/local/keepalived/sbin/keepalived /sbin/
4.3 修改master配置文件:
vi /etc/keepalived/keepalived.conf
###############################################
Maste! Configuration File forkeepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_typePASS
auth_pass1111
}
virtual_ipaddress {
192.168.1.173
}
}
######################################################
4.4 修改slaver配置文件
vi /etc/keepalived/keepalived.conf
Backup 和master一樣,只要修改如下地方:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99 # 這裏改爲99,master優先級是100
advert_int 1
authentication {
auth_typePASS
auth_pass1111
}
virtual_ipaddress {
192.168.1.173
}
}
五、keepalived管理命令
停止
service keepalived stop
啓動
service keepalived start
重啓
service keepalived restart
查看狀態
service keepalived status
六、測試
6.1 在本機上查看虛擬ip狀態
ip add
6.2 在同一網段的其他機器上查詢arp緩存
#arp -a
wKioL1arPXaTZxyFAAA7G1DiLn8272.png
這裏的1.73對應的mac地址6a:c7(即master的MAC地址)。
6.3 停掉master的master網絡/keepalived
#servicekeepalived stop
wKioL1arPaDhduHwAAAOd2N85_c656.png
在同一網段的其他機器上查詢arp緩存
#arp �a
wKiom1arPXKiRnuWAAA9H3T21nI380.png
發現1.173的mac地址已經變爲5a:7c(即slave的mac地址)。
在同一網段的其他機器上,測試連接1.173,發現成功切換到ha02(1.172)主機。
wKiom1arPY7h6QfNAABB4tAmM9o277.png
6.4 重啓master網絡/keepalived服務
wKioL1arPg2gPhiJAABCK06ecY4865.png
arp -a
wKiom1arPgqydfQCAAAz-qEx4Bc687.png
這裏的1.73重新對應的mac地址6a:c7(即master的MAC地址)。
wKiom1arPijA0QnHAAA9jvsviKE740.png
在同一網段的其他機器上,測試連接1.173,發現成功切換到ha01(1.171)主機。
那麼主備雙機熱備就完成了!
七、測試http服務
7.1 (master/slave)分別安裝http服務:
#cd/media/mnt/Packages/
#yum install -yhttpd*
#service httpdstart
#chkconfighttpd on
7.2 創建測試頁面
Master:
#echo"redhat-ha-master-server01">>/var/www/html/index.html
Slaver:
#echo"redhat-ha-master-server02">>/var/www/html/index.html
7.3 Master正常情況訪問測試
wKioL1arPo7xruKOAABLUFKUtRM128.png
7.4 Master宕機或者keepalived服務異常
wKiom1arPmCwt4mwAAA0WLgV6nQ729.png
wKioL1arPsHjwFrNAABR9vgvQvc421.png
可以看到服務已經由redhat-ha-master-server01自動轉換至redhat-ha-master-server02.
八、總結
1.master主機掛了,或者master 上keepalived掛了之後,可以切換到slave
2.在主機宕機或斷網後可能需要重啓keepalived服務。