1. keepalived工作原理
keepalived是集群管理中保證集群高可用的一個服務軟件,其功能類似於heartbeat,用來防止單點故障。
keepalived是以VRRP協議為實現基礎的,VRRP全稱Virtual Router Redundancy Protocol,即虛擬路由冗余協議。
虛擬路由冗余協議,可以認為是實現路由器高可用的協議,即將N台提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到vrrp包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
keepalived主要有三個模塊(3個不同的守護進程),分別是core、check和vrrp。core模塊為keepalived的核心,負責主進程的啟動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現VRRP協議的。
配置文件:keepalived只有一個配置文件keepalived.conf,這里介紹該配置文件中幾個主要的區域。
vrrp_script區域
用來做健康檢查的,可調用外部腳本。
vrrp_script vs_mysql_158 { script "/etc/keepalived/checkMySQL.py -h 192.168.83.158 -P 3306" interval 60 #每60s執行一次 }
vrrp_instance區域
用來定義對外提供服務的VIP區域及其相關屬性。
vrrp_instance VI_158 { state BACKUP #指定哪個為MASTER,哪個為BACKUP,必須大寫,如果設置了nopreempt這個值不起作用,主備靠priority決定 interface eth0 #設置實例綁定的網卡 virtual_router_id 158 #集群中主備相同 priority 100 #優先級,高優先級競選為master advert_int 5 #檢查間隔,秒 nopreempt #不主動搶占資源,只在master這台優先級高的設置,backup不設置 authentication { auth_type PASS #認證方式 auth_pass 1111 #認證密碼 } track_script { vs_mysql_158 #執行vs_mysql_158 } virtual_ipaddress { 192.168.83.157 #設置vip } }
virtual_server區域
virtual_server 192.168.83.157 3306 { delay_loop 2 #健康檢查時間間隔 lb_algo wrr #lvs調度算法rr|wrr|lc|wlc|lblc|sh|dh lb_kind DR #負載均衡轉發規則NAT|DR|RUN persistence_timeout 60 #會話保持時間 protocol TCP #使用的協議 real_server 192.168.83.158 3306 { weight 3 #默認為1,0為失效 MISC_CHECK { misc_path "/etc/keepalived/checkSlave.py -h 192.168.83.158 -P 3306" misc_timeout 15 misc_dynamic } } real_server 192.168.83.159 3306 { weight 3 MISC_CHECK { misc_path "/etc/keepalived/checkSlave.py -h 192.168.83.159 -P 3306" #外部腳本路徑 misc_timeout 15 #腳本執行超時時間,秒 misc_dynamic #如設置該項,則退出狀態碼會用來動態調整服務器的權重。返回0 正常,不修改;返回1,檢查失敗,權重改為0;返回2-255,正常,權重設置為:返回狀態碼-2 } } }
2. 安裝
(1) yum源安裝: 執行 yum install keepalived 即可;
(2) 二進制安裝:keepalived 官網下載地址:http://www.keepalived.org/download.html,也可去網盤上下載:http://pan.baidu.com/s/1boOEiAF
安裝環境:
- CentOS 6.4 x64
- keepalived-1.3.4
# yum install kernel-devel openssl-devel libnl-devel libnfnetlink-devel #安裝依賴
# tar zxvf keepalived-1.3.4.tar.gz # cd keepalived-1.3.4 # ./configure --prefix=/usr/local/keepalived #若有報錯,安裝相應的devel包即可 # make && make install
# 拷貝相應的文件
# cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf #注意修改該配置文件,否則會啟動失敗:keepalived 已死,但是 subsys 被鎖
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# keepalived-1.3.14 的啟動文件在安裝的原文件下,以前的版本在編譯的路徑下 /usr/local/keepalived/…
# cp ../keepalived-1.3.4/keepalived/etc/init.d/keepalived /etc/init.d/
啟動keepalived:
# /etc/init.d/keepalived start 正在啟動 keepalived: [確定] # ps aux |grep keepalived root 21390 0.0 0.0 42296 1016 ? Ss 17:08 0:00 keepalived -D root 21391 0.0 0.1 42416 2168 ? S 17:08 0:00 keepalived -D root 21392 0.0 0.0 42296 1428 ? S 17:08 0:00 keepalived -D
3. 使用
待續……