基於keepalived構建HA叢集
一、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 keepalived global_defs { notification_email {[email protected] [email protected] } notification_email_from [email protected] smtp_connect_timeout 3 smtp_server 127.0.0.1 #郵件傳送者為本地主機 router_id LVS_DEVEL } vrrp_script chk_haproxy { script "killall -0 haproxy" interval 1 weight 2 } vrrp_script chk_mantaince_down { script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" interval 1 weight -2 } vrrp_instance VI_1 { #vrrp例項 interface eth0 state MASTER # 從節點為BACKUP priority 101 # 指定優先順序,數字越大優先順序越高 virtual_router_id 51 garp_master_delay 1 authentication { auth_type PASS auth_pass password } track_interface { eth1 } virtual_ipaddress { 172.16.15.114/16 dev eth1 label eth1:0 #指定VIP及網絡卡別名 } track_script { chk_haproxy chk_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/bash vip=172.16.15.114 #指定vip contact='[email protected]' 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" in master) notify master /etc/rc.d/init.d/haproxy start exit 0 ;; backup) notify backup /etc/rc.d/init.d/haproxy stop exit 0 ;; fault) notify fault exit 0 ;; *) echo 'Usage: `basename $0` {master|backup|fault}' exit 1 ;; esac
以windows作為客戶端訪問172.16.15.114
關掉主服務:servicekeepalivedstop
三、雙主模型
原理:建立兩個虛擬路由器,兩個節點互為主從。
! Configuration File for keepalived global_defs { notification_email { [email protected] [email protected] } notification_email_from [email protected] smtp_connect_timeout 3 smtp_server 127.0.0.1 router_id LVS_DEVEL } vrrp_script chk_haproxy { script "killall -0 haproxy" interval 1 weight 2 } vrrp_script chk_mantaince_down { script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" interval 1 weight 2 } vrrp_instance VI_1 { #例項1 interface eth1 state MASTER # BACKUP for slave routers priority 101 # 100 for BACKUP virtual_router_id 51 garp_master_delay 1 authentication { auth_type PASS auth_pass password } track_interface { eth1 } virtual_ipaddress { #VIP1 172.16.15.115/16 dev eth1 label eth1:1 } track_script { chk_haproxy chk_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 { #例項2 interface eth1 state BACKUP # BACKUP for slave routers priority 100 # 100 for BACKUP virtual_router_id 52 garp_master_delay 1 authentication { auth_type PASS auth_pass password } track_interface { eth1 } virtual_ipaddress { #VIP2 172.16.15.116/16 dev eth1 label eth1:2 } track_script { chk_haproxy chk_mantaince_down } }
在客戶端訪問172.16.15.115172.16.15.116
檢視IP
四、實現LVS+keepalived(LVS--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 keepalived global_defs { notification_email { [email protected] [email protected] } notification_email_from [email protected] smtp_connect_timeout 3 smtp_server 127.0.0.1 router_id LVS_DEVEL } vrrp_script chk_schedown { script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" interval 2 weight -2 } vrrp_instance VI_1 { interface eth1 state MASTER priority 101 virtual_router_id 51 garp_master_delay 1 authentication { auth_type PASS auth_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 6 lb_algo rr lb_kind DR persistence_timeout 50 protocol TCP sorry_server 172.16.15.14 80 #錯誤頁面 real_server 172.16.15.5 80 { #指定rserver1 weight 1 HTTP_GET { url { path / status_code 200 #狀態碼 } connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 172.16.15.14 80 { #指定rserver2 weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 3 #連線超時時間 nb_get_retry 3 #嘗試連線次數 delay_before_retry 3 #每次嘗試之前等待的時間 } } }
在客戶端訪問172.16.15.117
轉載於:https://blog.51cto.com/dreamwolf/1301660