原理
首先有一個虛擬ip暴露給客戶端,虛擬ip對應的mac地址為一台真實服務器,
即用戶向虛擬ip發送一個請求,該請求會被分發到真實服務器上。
現在有2台真實服務器,一台master,一台backup,master和backup上都運行着keepalived
當master掛了的時候,backup檢測之后,自己成為master,且arp緩存虛擬ip對應的mac地址將變為
backup的mac地址,這樣請求虛擬ip的報文會被發送到backup
架構圖如下:
安裝
主機:192.168.1.227
備機:192.168.1.246
虛擬ip:192.168.1.99
安裝命令:
wget http://www.keepalived.org/software/keepalived-1.2.13.tar.gz tar -zxvf keepalived-1.2.13.tar.gz cd keepalived-1.2.13 ./configure --disable-fwmark --prefix=/usr/local/keepalived make && make install
整理:
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/
配置:
vi /etc/keepalived/keepalived.conf
Master
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } notification_email_from Alexandre.Cassen@firewall.loc 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_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.99 } }
Backup 和master一樣,只要修改如下地方:
vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 99 # 這里改為99,master優先級是100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.99 } }
管理命令:
停止
service keepalived stop
啟動
service keepalived start
重啟
service keepalived restart
查看狀態
service keepalived status
測試
在本機上查看虛擬ip狀態
ip add
在同一網段的其他機器上查詢arp緩存
arp -a
這里的1.99對應的mac地址是1.227
停掉master的keepalived
service keepalived stop
在同一網段的其他機器上查詢arp緩存
arp –a
發現1.99的mac地址已經變為slave的mac地址
那么主備雙機熱備就完成了
總結:本篇文章實現的功能
1.master主機掛了,或者master 上keepalived掛了之后,可以切換到slave
2.master的網絡不通的時候,可以立即切換到slave,但是如果只是master上的應用出現問題的時候,是不會
主動切換的,這個要通過編寫腳本來監控應用出問題,這個問題后續再討論吧。