標籤:master slave keepalived高可用叢集 主主模式下的keepalived
一、keepalived簡介
keepalived是vrrp協議的實現,原生設計目的是為了高可用ipvs服務,keepalived能夠設定檔中的定義產生ipvs規則,並能夠對各RS的健康狀態進行檢測;通過共用的虛擬IP地址對外提供服務;每個熱備組內同一時刻只有一台主伺服器提供服務,其他伺服器處於冗餘狀態,若當前線上的伺服器宕機,其虛擬IP地址將會被其他伺服器接替(優先順序決定接替順序),實現高可用為後端主機提供服務。
二、keepalived組件
Keepalived組件介紹
650) this.width=650;" src="http://s4.51cto.com/wyfs02/M02/89/7F/wKiom1gVgVqxP0nVAADi2pjRuog301.png" title="keepalived.png" alt="wKiom1gVgVqxP0nVAADi2pjRuog301.png" />
core:keepalived核心組件,主進程的啟動和維護,全域配置等。
vrrp stack:keepalived是基於vrrp協議實現高可用vps服務,vrrp則為相關子進程為其提供服務
check:檢測keepalived的健康狀態相關進程
system call:系統調用
watch dog:監控check和vrrp進程的看管者,check負責檢測器子進程的健康狀態,當其檢測到master上的服務不可用時則通告vrrp將其轉移至backup伺服器上。
三、keepalived配置
實驗拓撲圖如下:
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/89/7F/wKiom1gVg3PDV2hIAADihRpSRO4252.png" title="keepalivedha.png" alt="wKiom1gVg3PDV2hIAADihRpSRO4252.png" />
keepalived主設定檔主要分為三段:global_defs、vrrp_instance、virtual_ip address,如下詳解:
樣本:
編輯/etc/keepalived/keepalived.conf設定檔,將此檔案負責給另一個台keepalived伺服器,相應的修改其優先順序及其state狀態資訊
! Configuration File for keepalivedglobal_defs { notification_email {[email protected] } notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id centos7s vrrp_mcast_group4 224.0.4.18}vrrp_script chk_down { script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" interval 2 weight -5}vrrp_script chk_httpd { script "killall -0 httpd" interval 2 weight -5}vrrp_instance VI_1 { state MASTER interface eno16777736 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass frSAmesXYSSFmw } virtual_ipaddress { 10.1.10.7 dev eno16777736 labeleno16777736:0 } track_script { chk_down chk_httpd } notify_master "/etc/keepalived/notify.sh master" notify_backup "/etc/keepalived/notify.sh backup" notify_fault "/etc/keepalived/notify.sh fault"}雙主模式:互為主備vrrp_instance VI_1 { #vrrp執行個體1 state MASTER #keepalived當前的狀態資訊,master為主,slave為從 interface eno16777736 #監聽的網卡介面 virtual_router_id 151 #虛擬路由的id號,範圍為0-255 priority 100 #當前keepalived的優先順序,數字越大,優先順序越高 advert_int 1 # authentication { #authentication認證模組 auth_type PASS #驗證類型 auth_pass frSAmesXYSSFmw #密碼 } virtual_ipaddress { #設定虛擬ip地址,此處為VIP:10.1.10.7 10.1.10.7 dev eno16777736 labeleno16777736:0 } track_script { #調用檢測測監本 chk_down chk_httpd } 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 { #執行個體二,同上 state BACKUP interface eno16777736 virtual_router_id 152 priority 98 advert_int 1 authentication { auth_type PASS auth_pass frSAmesXYSSymw } virtual_ipaddress { 10.1.10.77 dev eno16777736 labeleno16777736:1 } track_script { chk_down chk_httpd } notify_master "/etc/keepalived/notify.sh master" notify_backup "/etc/keepalived/notify.sh backup" notify_fault "/etc/keepalived/notify.sh fault"}
使用lvs-dr相同的方法配置Real Server1/Real Server2:
echo 2 >/proc/sys/net/ipv4/conf/all/arp_announceecho 2 >/proc/sys/net/ipv4/conf/lo/arp_announceecho 1 >/proc/sys/net/ipv4/conf/all/arp_announceecho 1 >/proc/sys/net/ipv4/conf/lo/arp_announceifconfig lo:0 10.1.10.7 netmask 255.255.255.255 broadcast 10.1.10.7route add -host 10.1.10.7 dev lo:0
分別給Real Server提供測試頁面及其給keepalived節點配置應急響應頁面
echo “RS1”>/var/www/html/index.html echo“sorry server”>/web/index.html
配置成功後啟動keepalived及其後端主機,在keepalived節點上查看其相應的ipvs資訊:
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/89/7D/wKioL1gVjGTxw3DrAAAk4AxNIe8289.png" title="xinxi.png" alt="wKioL1gVjGTxw3DrAAAk4AxNIe8289.png" />
現在兩節點上的keepalived均已啟動
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/89/7D/wKioL1gVjPKhgcW5AABZtj89rcs168.png" title="jd1.png" alt="wKioL1gVjPKhgcW5AABZtj89rcs168.png" />
650) this.width=650;" src="http://s2.51cto.com/wyfs02/M00/89/7F/wKiom1gVja3A6ixCAABYh7KDUo8179.png" title="ff.png" alt="wKiom1gVja3A6ixCAABYh7KDUo8179.png" />
類比master節點故障查看其backup節點,則全部的虛擬IP地址轉換到backup節,實現地址漂移如下:
650) this.width=650;" src="http://s5.51cto.com/wyfs02/M02/89/7D/wKioL1gVjpiDb9j_AABAZ7dlSvg521.png" title="jd.png" alt="wKioL1gVjpiDb9j_AABAZ7dlSvg521.png" />
本文採用rr演算法調度測試結果圖:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/89/7F/wKiom1gVjyCi8DNBAAAbeS31N4A706.png" title="ce.png" alt="wKiom1gVjyCi8DNBAAAbeS31N4A706.png" />
類比後端Real Server一台和全部宕機,相應的響應頁面及應急頁面:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/89/7F/wKiom1gVkMmQvEeNAAAUI_V6OYw648.png" title="dddd.png" alt="wKiom1gVkMmQvEeNAAAUI_V6OYw648.png" />
出現上訴的結果說明你配置的keepalived高可用叢集已經實現高可用,可換為瀏覽器進行測試,或將後端主機搭建相應的服務進行測試查看其是否按照你定義的調度演算法進行輪詢。
本文出自 “小耳朵” 部落格,請務必保留此出處http://purify.blog.51cto.com/10572011/1867346
KeepAlived雙主模式高可用叢集