一、keepalived簡介
1.Keepalived的作用是檢測RealServer的健康狀態,如果有一台RealServer伺服器宕機,Keepalived將檢測到,並將宕掉的RealServer伺服器從系統中剔除,當RealServer伺服器重新恢複正常工作後Keepalived自動將RealServer伺服器加入到伺服器群中。
2.keeepalived常見模型
<1>主從模型:主節點修複後服務返回主節點)
定義一個VIP定義在網卡別名之上)
在vrrp_instance做如下修改:
stateMASTER#從節點為BACKUP
priority101#指定優先順序,數字越大優先順序越高,主節點的優先順序高於從節點
<2>雙主模型:
建立兩個虛擬路由器,兩個節點互為主從
指定兩個vrrp_instance互為主從
virtual_router_id不相同
<3>LVS+keepalived
首先配置LVS
配置keepalived,添加虛擬服務,指定lvs模型及調度演算法
實戰篇
系統內容:centos6.4-i386
yum-yinstallkeepalived
keepalivedi686-1.2.7-3
二、主從模型HA叢集
修改主設定檔:vim/etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {linuxedu@gmail.commageedu@126.com}notification_email_from kanotify@magedu.comsmtp_connect_timeout 3smtp_server 127.0.0.1 #郵件寄件者為本地主機router_id LVS_DEVEL}vrrp_script chk_haproxy {script "killall -0 haproxy"interval 1weight 2}vrrp_script chk_mantaince_down {script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"interval 1weight -2}vrrp_instance VI_1 { #vrrp執行個體interface eth0state MASTER # 從節點為BACKUPpriority 101 # 指定優先順序,數字越大優先順序越高virtual_router_id 51garp_master_delay 1authentication {auth_type PASSauth_pass password}track_interface {eth1}virtual_ipaddress {172.16.15.114/16 dev eth1 label eth1:0 #指定VIP及網卡別名}track_script {chk_haproxychk_mantaince_down}notify_master "/etc/keepalived/notify.sh master"notify_backup "/etc/keepalived/notify.sh backup"notify_fault "/etc/keepalived/notify.sh fault"}
notify指令碼:
#!/bin/bashvip=172.16.15.114 #指定vipcontact='root@localhost'notify() {mailsubject="`hostname` to be $1: $vip floating"mailbody="`date '+%F %H:%M:%S'`: vrrp transition, `hostname` changed to be $1"echo $mailbody | mail -s "$mailsubject" $contact}case "$1" inmaster)notify master/etc/rc.d/init.d/haproxy startexit 0;;backup)notify backup/etc/rc.d/init.d/haproxy stopexit 0;;fault)notify faultexit 0;;*)echo 'Usage: `basename $0` {master|backup|fault}'exit 1;;esac
以windows作為用戶端訪問172.16.15.114
650) this.width=650;" title="未命名1.png" alt="161926110.png" src="http://www.bkjia.com/uploads/allimg/131227/23452529E-0.png" />
關掉主服務:servicekeepalivedstop
650) this.width=650;" title="未命名2.png" alt="162020933.png" src="http://www.bkjia.com/uploads/allimg/131227/23452515V-1.png" />
三、雙主模型
原理:建立兩個虛擬路由器,兩個節點互為主從。
! Configuration File for keepalivedglobal_defs {notification_email {linuxedu@gmail.commageedu@126.com}notification_email_from kanotify@magedu.comsmtp_connect_timeout 3smtp_server 127.0.0.1router_id LVS_DEVEL}vrrp_script chk_haproxy {script "killall -0 haproxy"interval 1weight 2}vrrp_script chk_mantaince_down {script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"interval 1weight 2}vrrp_instance VI_1 { #執行個體1interface eth1state MASTER # BACKUP for slave routerspriority 101 # 100 for BACKUPvirtual_router_id 51garp_master_delay 1authentication {auth_type PASSauth_pass password}track_interface {eth1}virtual_ipaddress { #VIP1172.16.15.115/16 dev eth1 label eth1:1}track_script {chk_haproxychk_mantaince_down}notify_master "/etc/keepalived/notify.sh master"notify_backup "/etc/keepalived/notify.sh backup"notify_fault "/etc/keepalived/notify.sh fault"}vrrp_instance VI_2 { #執行個體2interface eth1state BACKUP # BACKUP for slave routerspriority 100 # 100 for BACKUPvirtual_router_id 52garp_master_delay 1authentication {auth_type PASSauth_pass password}track_interface {eth1}virtual_ipaddress { #VIP2172.16.15.116/16 dev eth1 label eth1:2}track_script {chk_haproxychk_mantaince_down}}
在用戶端訪問172.16.15.115172.16.15.116
650) this.width=650;" title="未命名3.png" alt="162517180.png" src="http://www.bkjia.com/uploads/allimg/131227/23452553T-2.png" />
查看IP
650) this.width=650;" title="未命名4.png" src="http://www.bkjia.com/uploads/allimg/131227/2345253513-3.png" alt="164934163.png" />
650) this.width=650;" title="未命名5.png" src="http://www.bkjia.com/uploads/allimg/131227/2345252525-4.png" alt="165000572.png" />
四、實現LVS+keepalivedLVS--DR)
1、首先配置LVS負載平衡叢集
註:LVS在會後續博文中做詳細介紹!!!
添加ipvsadm規則
#yum -y install ipvsadm #安裝ipvsadm#ipvsadm #查看ipvsadm資訊及規則#ipvsadm -A -t 172.16.15.117:80 -s rr #指定Director調度器)
注釋:A(添加規則)
-t(指定協議為TCP)
172.16.15.117:80(指定VIP及連接埠)
-srr(指定調度演算法為rr)
#添加real_server
#ipvsadm -a -t 172.16.15.117:80 -r 172.16.15.5 -g#ipvsadm -a -t 172.16.15.117:80 -r 172.16.15.14 -g#ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP #配置VIP,只允許本地迴環# /sbin/route add -host $WEB_VIP dev lo:0 #添加本地路由#echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore#echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce#echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore#echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
注釋:在此只添加兩個節點
-a:添加服務
-r172.16.15.5:指定服務IP
-g:指定lvs模型預設DR)
2、配置基於keepalived主從)高可用叢集
! Configuration File for keepalivedglobal_defs {notification_email {linuxedu@gmail.commageedu@126.com}notification_email_from kanotify@magedu.comsmtp_connect_timeout 3smtp_server 127.0.0.1router_id LVS_DEVEL}vrrp_script chk_schedown {script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"interval 2weight -2}vrrp_instance VI_1 {interface eth1state MASTERpriority 101virtual_router_id 51garp_master_delay 1authentication {auth_type PASSauth_pass password}track_interface {eth1}virtual_ipaddress {172.16.15.117/16 #指定VIP,此處的VIP和lvs的VIP相同,因此不指定網卡}track_script {chk_schedown}}virtual_server 172.16.15.117 80 { #指定虛擬服務delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPsorry_server 172.16.15.14 80 #錯誤頁面real_server 172.16.15.5 80 { #指定rserver1weight 1HTTP_GET {url {path /status_code 200 #狀態代碼}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 172.16.15.14 80 { #指定rserver2weight 1HTTP_GET {url {path /status_code 200}connect_timeout 3 #連線逾時時間nb_get_retry 3 #嘗試串連次數delay_before_retry 3 #每次嘗試之前等待的時間}}}
在用戶端訪問172.16.15.117
650) this.width=650;" title="未命名1.png" src="http://www.bkjia.com/uploads/allimg/131227/2345255118-5.png" alt="165123558.png" />
650) this.width=650;" title="未命名2.png" src="http://www.bkjia.com/uploads/allimg/131227/2345256412-6.png" alt="165139941.png" />