一:keepalive簡述
一;高可用的解決方案
1)vrrp協(xié)議的實(shí)現(xiàn) keepalive 2)ais:完備HA集群
RHCS(cman)
heartbeat
corosync
二:vrrp協(xié)議:
概念:在節(jié)點(diǎn)(主機(jī))出現(xiàn)故障時(shí),,實(shí)現(xiàn)ip地址的切換。 keepalive就是基于此協(xié)議而實(shí)現(xiàn)高可用的,。
Failover:故障切換,,即某資源的主節(jié)點(diǎn)故障時(shí),,將資源轉(zhuǎn)移至其它節(jié)點(diǎn)的操作,; Failback:故障移回,,即某資源的主節(jié)點(diǎn)故障后重新修改上線后,將轉(zhuǎn)移至其它節(jié)點(diǎn)的資源重新切回的過程,;
術(shù)語:
虛擬路由器:Virtual Router
對應(yīng)與配置文件中/etc/keepalived中的virtual_ipaddress
生產(chǎn)中一個(gè)director主機(jī)上通常會(huì)有多個(gè)網(wǎng)卡,,對外為vip1,接收用戶請求,,對內(nèi)為vip2,將用戶的請求通過vip2發(fā)送給后端提供服務(wù)的主機(jī)RS,。在配置虛擬路由ip時(shí),。vip1與vip2需要配置在一個(gè)組內(nèi),實(shí)現(xiàn)在master主機(jī)出現(xiàn)故障時(shí),,vip1轉(zhuǎn)向backup備用主機(jī)時(shí),,vip2也同時(shí)轉(zhuǎn)向backup備用主機(jī),。不然vip2還停留在master主機(jī)上,轉(zhuǎn)向后端主機(jī)的請求將會(huì)無法到達(dá),。
此塊在配置文件中
虛擬路由器標(biāo)識:VRID(0-255)
物理路由器:
master:主設(shè)備
backup:備用設(shè)備
priority:優(yōu)先級
VIP:Virtual IP,,虛擬ip
VMAC:Virutal MAC (00-00-5e-00-01-VRID)
GraciousARP
通告:心跳,優(yōu)先級等,;周期性,;
搶占式,非搶占式,;
安全工作:
認(rèn)證:
無認(rèn)證
簡單字符認(rèn)證
MD5
三:keepalived:
1:簡述
vrrp協(xié)議的軟件實(shí)現(xiàn),,原生設(shè)計(jì)的目的為了高可用ipvs服務(wù):
基于vrrp協(xié)議完成地址流動(dòng);
為集群內(nèi)的所有節(jié)點(diǎn)生成ipvs規(guī)則(在配置文件中預(yù)先定義),;
為ipvs集群的各RS做健康狀態(tài)檢測,;
基于腳本調(diào)用接口通過執(zhí)行腳本完成腳本中定義的功能,進(jìn)而影響集群事務(wù),;
組件:
核心組件:
vrrp stack vrrp協(xié)議的實(shí)現(xiàn)
ipvs wrapper為集群內(nèi)的所有節(jié)點(diǎn)生成ipvs規(guī)則
checkers 為ipvs集群的各RS做健康狀態(tài)檢測
控制組件:
配置文件分析器
IO復(fù)用器
內(nèi)存管理組件
虛擬路由器的工作模型:
單主:
雙主
通知機(jī)制:
notify_master
notify_backup
notify_fault
2:安裝
yum install keepalived 程序環(huán)境:
主配置文件:/etc/keepalived/keepalived.conf
主程序文件:/usr/sbin/keepalived
Unit File:keepalived.service
Unit File的環(huán)境配置文件:/etc/sysconfig/keepalived
3:配置文件
/etc/keepalived/keepalived.conf
配置文件組件部分:
TOP HIERACHY
GLOBAL CONFIGURATION
Global definitions
Static routes/addresses
VRRPD CONFIGURATION
VRRP synchronization group(s):vrrp同步組,;
VRRP instance(s):每個(gè)vrrp instance即一個(gè)vrrp路由器;
LVS CONFIGURATION
Virtual server group(s)
Virtual server(s):ipvs集群的vs和rs,;
4:man keepalived.conf
可以查看配置文件的具體使用細(xì)則 第一個(gè)配置段:GLOBAL CONFIGURATION 第二配置段:VRRPD CONFIGURATION
此地址段為配置keepalived的核心配置段,。主要包括兩塊內(nèi)容
VRRP instance(s):vrrp實(shí)例
一個(gè)vrrp instance 就是一個(gè)vrrp路由器
VRRP synchronization group(s):虛擬路由器同步組
一個(gè)主機(jī)生產(chǎn)中一般需要配置兩個(gè)以上的虛擬路由器。此配置可以實(shí)現(xiàn)將多個(gè)虛擬路由器編制在一個(gè)組內(nèi),,可以實(shí)現(xiàn),,當(dāng)一個(gè)虛擬路由器偏移至另一臺(tái)主機(jī)時(shí),其余的虛擬路由器(vip)也同時(shí)偏移至另一臺(tái)主機(jī)上,。
inside_network # name of vrrp_instance (below) 內(nèi)網(wǎng)網(wǎng)絡(luò) outside_network # One for each moveable IP. 外網(wǎng)網(wǎng)絡(luò)
第三段:LVS CONFIGURATION
高可用LVS時(shí)使用,。若使用Nginx時(shí)不用關(guān)注此塊
四:配置語法:
配置虛擬路由器:
vrrp_instance <STRING> {
....
}
專用參數(shù):
state MASTER|BACKUP:當(dāng)前節(jié)點(diǎn)在此虛擬路由器上的初始狀態(tài);只能有一個(gè)是MASTER,,余下的都應(yīng)該為BACKUP,;
interface IFACE_NAME:綁定為當(dāng)前虛擬路由器使用的物理接口;
virtual_router_id VRID:當(dāng)前虛擬路由器的惟一標(biāo)識,,范圍是0-255,;
priority 100:當(dāng)前主機(jī)在此虛擬路徑器中的優(yōu)先級;范圍1-254,;
advert_int 1:vrrp通告的時(shí)間間隔,;
authentication {
auth_type AH|PASS
auth_pass <PASSWORD>
}
virtual_ipaddress {
<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
192.168.200.17/24 dev eth1
192.168.200.18/24 dev eth2 label eth2:1
}
track_interface {
eth0
eth1
...
}
配置要監(jiān)控的網(wǎng)絡(luò)接口,一旦接口出現(xiàn)故障,,則轉(zhuǎn)為FAULT狀態(tài),;
nopreempt:定義工作模式為非搶占模式;
preempt_delay 300:搶占式模式下,,節(jié)點(diǎn)上線后觸發(fā)新選舉操作的延遲時(shí)長,;
定義通知腳本:
notify_master <STRING>|<QUOTED-STRING>:當(dāng)前節(jié)點(diǎn)成為主節(jié)點(diǎn)時(shí)觸發(fā)的腳本
notify_backup <STRING>|<QUOTED-STRING>:當(dāng)前節(jié)點(diǎn)轉(zhuǎn)為備節(jié)點(diǎn)時(shí)觸發(fā)的腳本,;
notify_fault <STRING>|<QUOTED-STRING>:當(dāng)前節(jié)點(diǎn)轉(zhuǎn)為“失敗”狀態(tài)時(shí)觸發(fā)的腳本;
notify <STRING>|<QUOTED-STRING>:通用格式的通知觸發(fā)機(jī)制,,一個(gè)腳本可完成以上三種狀態(tài)的轉(zhuǎn)換時(shí)的通知,;
五:通知機(jī)制
通知機(jī)制: notify_master:to be master時(shí),調(diào)用指定的腳本完成輔助操作,,,,以“通知”為核心目標(biāo) notify_backup to be backup時(shí),調(diào)用指定的腳本完成輔助操作,,,,以“通知”為核心目標(biāo) notify_fault
通知腳本的使用方式:
示例通知腳本:
#!/bin/bash
#
contact='root@localhost'
notify() {
local mailsubject="$(hostname) to be $1, vip floating"
local mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
;;
fault)
notify fault
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac
腳本的調(diào)用方法:
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
六:D類地址
D類IP地址第一個(gè)字節(jié)以“1110”開始 。它并不指向特定的網(wǎng)絡(luò),,目前這一類地址被用在多點(diǎn)廣播(Multicast)中,。多點(diǎn)廣播地址用來一次尋址一組計(jì)算機(jī),它標(biāo)識共享同一協(xié)議的一組計(jì)算機(jī),。 D類地址又分為三種類型:即專用地址,、公用地址和私用地址;其中專用地址(224.0.0.0-224.0.0.255)用于網(wǎng)絡(luò)協(xié)議組的廣播,,公用地址(224.0.1.0-238.255.255.255)用于其它組播,,私用地址(239.0.0.0-239.255.255.255)用于測試。
在keepdlived的配置文件中 vrrp_mcast_group4 224.24.24.18 此地址用于向共同使用vrrp協(xié)議的主機(jī) 不斷的廣播自身的ip地址,,及優(yōu)先級,。優(yōu)先級高的主機(jī)將會(huì)使用vip
在現(xiàn)實(shí)中,會(huì)使用一根網(wǎng)線將 此兩臺(tái)主機(jī)直接綁定在一起,,實(shí)現(xiàn)此類功能
二:實(shí)現(xiàn)
一:配置前提
HA Cluster的配置前提:
(1) 各節(jié)點(diǎn)時(shí)間必須同步,;
ntp, chrony
(2) 確保iptables及selinux不會(huì)成為阻礙;
(3) 各節(jié)點(diǎn)之間可通過主機(jī)名互相通信(對KA并非必須),;
建議使用/etc/hosts文件實(shí)現(xiàn),;
(4) 確保各節(jié)點(diǎn)的用于集群服務(wù)的接口支持MULTICAST通信;
D類:224-239,;
二:實(shí)驗(yàn)前奏
keepalive天生是用來高可用LVS的,。借助服務(wù)腳本接口可以實(shí)現(xiàn)高可用nginx和haproxy
第一步:單主模型 vrrp的地址轉(zhuǎn)移實(shí)現(xiàn)。單主模式,。一個(gè)虛擬路由vip 第二步:雙主模型 實(shí)現(xiàn)雙主節(jié)點(diǎn),,每一個(gè)節(jié)點(diǎn)都可以工作起來。雙虛擬路由ip 第三步:高可用LVS 在單主模式下,。增加后端的具體服務(wù),。實(shí)現(xiàn)節(jié)點(diǎn)切換時(shí),服務(wù)仍然可用,。
后端的服務(wù)為兩臺(tái)主機(jī),,
第四步:增加check。檢查后端主機(jī)的健康狀況,。
在后端主機(jī)全部down掉的情況之下,,增加sorry server.用keepalive主機(jī)實(shí)現(xiàn)
第五步:高可用haproxy keepalive主機(jī)不再使用LVS(director)。使用nginx或者h(yuǎn)aproxy
三:keepalive 單主模式
環(huán)境:172.16.253.95 做master
172.16.253.96 做backup
1:解讀配置文件
再解讀/etc/keepalived/keepalived.conf
全局配置
global_defs { notification_email {
[email protected] //出問題時(shí),,接收郵件的地址
} notification_email_from [email protected] //郵件發(fā)件人地址
smtp_server 127.0.0.1 //郵件服務(wù)器地址 smtp_connect_timeout 30 //連接超時(shí)時(shí)間 router_id n2 //虛擬路由服務(wù)器地址(建議寫上主機(jī)名) vrrp_mcast_group4 224.24.24.18 //多播地址段,,默認(rèn)為224.0.0.18.做實(shí)驗(yàn)時(shí)需要更改 }
vrrp_instance vrrp實(shí)例段,核心配置段
vrrp_instance VI_1 { //虛擬路由器的名稱,,多個(gè)時(shí),,名稱要不一樣
state MASTER //虛擬路由器的狀態(tài),master|backup
interface eth0 //通過哪個(gè)網(wǎng)口發(fā)送vrrp廣播
virtual_router_id 01 //虛擬路由器的id,,要與同一臺(tái)主機(jī)上的其他虛擬路由器id 區(qū)分開來
priority 100 //物理路由器在此虛擬路由器上的優(yōu)先級
advert_int 1 //每隔多長時(shí)間 廣播一次自己的優(yōu)先級
authentication { //傳遞信息的認(rèn)證方式,,密碼僅支持8位
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { //虛擬路由的ip地址
172.16.253.100
}
}
2:更改配置文件
95主機(jī)的配置文件 注意:綠色字體為與96主機(jī)不一樣的地方。
其他的配置文件內(nèi)容統(tǒng)統(tǒng)都注釋掉
global_defs { notification_email {
[email protected]
} notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL vrrp_mcast_group4 224.24.24.18 }
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 01
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.253.100
}
} 96主機(jī)的配置文件
global_defs { notification_email {
[email protected]
} notification_email_from [email protected] smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id n2 vrrp_mcast_group4 224.24.24.18 }
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 01
priority 95
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.253.100
}
}
3:重啟keepalived服務(wù)
95主機(jī) master: systemctl restart keepalived.service systemctl status keepalived.service
ip a:虛擬路由器主機(jī)ip已經(jīng)添加進(jìn)來
tcpdump -nn -i eth0 host 224.24.24.18 172.16.253.95 主機(jī)通過224.24.24.18向外發(fā)送vrrp廣播,,vrid為1 優(yōu)先級為100,,字節(jié)長度為20,簡單認(rèn)證方式,,每隔1秒發(fā)送一次
96主機(jī):backup systemctl restart keepalived.service systemctl status keepalived.service
4:模擬vip偏移至 96主機(jī) 95 主機(jī) stop keepalived服務(wù) systemctl stop keepalived.service 在96主機(jī)上 vip已經(jīng)偏移至96主機(jī)
再次在 95 主機(jī)重啟 keepalived服務(wù) VIP則將重新偏移至95主機(jī) 默認(rèn)vrrp工作于搶占 模式,。誰的級別高,vip偏移至哪臺(tái)主機(jī)上
四: 雙主模式
簡述:配置兩個(gè)虛擬路由器 下圖為框架:
環(huán)境:先stop 95 96兩臺(tái)主機(jī)的keepalived服務(wù)
1:編輯配置文件
95主機(jī)增加如下代碼: vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 02
priority 95
advert_int 1
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
172.16.253.200
}
}
96主機(jī): 增加如下代碼,,相當(dāng)于增加了另一組虛擬路由器vip2 172.16.253.200 vrrp_instance VI_2 {
state MASTER
interface eth0
virtual_router_id 02
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
172.16.253.200
}
}
2:啟動(dòng)96主機(jī)服務(wù)
96主機(jī):先關(guān)閉服務(wù),,再啟動(dòng)服務(wù)。
[root@hkeepalived]#systemctl stop keepalived [root@hkeepalived]#systemctl start keepalived [root@hkeepalived]#systemctl status keepalived 兩個(gè) vip都添加至 eth0 網(wǎng)卡了
3:啟動(dòng)95主機(jī)服務(wù)
[root@hkeepalived]#systemctl stop keepalived [root@hkeepalived]#systemctl start keepalived [root@hkeepalived]#systemctl status keepalived
啟動(dòng)95 主機(jī)服務(wù)之后 100地址的vip回至95主機(jī),。因?yàn)?72.16.253.100的vip在95主機(jī)的優(yōu)先級要比在96主機(jī)上高
五:調(diào)用通知機(jī)制
目的:演示通知機(jī)制中
notify_master
notify_bacup 是如何工作
1:95 96主機(jī)
編輯通知機(jī)制的腳本放置在/etc/keepalived下 vim notify.sh
!/bin/bash
contact='root@localhost'
notify() {
local mailsubject="$(hostname) to be $1, vip floating"
local mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
;;
fault)
notify fault
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac
2 :95 96 主機(jī)的配置文件恢復(fù)至單主模式
刪除 實(shí)驗(yàn)四中 增加的配置文件內(nèi)容
3:編輯配置文件
95 96 主機(jī)中 在vrrp_instance中增加如下代碼
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
4:啟動(dòng)服務(wù)
啟動(dòng)96主機(jī)的服務(wù): 查看郵件有無發(fā)送: mail
啟動(dòng)95主機(jī)的服務(wù):
96主機(jī)將收到 變?yōu)?backup 的郵件
六:LVS-DR模式--keepalive
環(huán)境: 95主機(jī) LVS 96主機(jī) LVS 97 98 主機(jī)RS
1:97 98 主機(jī) 安裝nginx
yum install nginx –y
編輯主頁文件: 97:vim /usr/share/nginx/html/index.html
<h1> RS1111111111111</h1>
98:vim /usr/share/nginx/html/index.html
<h1> RS22222222222</h1>
2:后端主機(jī) 內(nèi)核參數(shù)修改
97 98主機(jī)編輯腳本 1: 后端主機(jī)內(nèi)核參數(shù)的修改 及 vip的添加 編輯腳本,,實(shí)現(xiàn)對內(nèi)核參數(shù)的修改 vim /root/set.sh #!/bin/bash
vip=172.16.0.199 mask=255.255.255.255 iface="lo:0"
case $1 in start)
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
ifconfig $iface $vip netmask $mask broadcast $vip up
route add -host $vip dev $iface
;;
stop)
ifconfig $iface down
echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
;;
*)
echo "start|stop"
exit 1
;,; esac
2:測試腳本實(shí)現(xiàn) bash –x set.sh start ip a 查看 lo的ip有無添加進(jìn)來
3:lvs主機(jī)95 配置服務(wù)
1 安裝ipvsadm 2 添加vip至eth0 ifconfig eth0:0 172.16.253.199 netmask 255.255.255.255 broadcast 172.16.253.199 up
3:配置LVS-NAT 服務(wù) [root@h~]#ipvsadm -A -t 172.16.253.199:80 -s rr [root@h~]#ipvsadm -a -t 172.16.253.199:80 -r 172.16.253.97:80 -g [root@h~]#ipvsadm -a -t 172.16.253.199:80 -r 172.16.253.98:80 -g [root@h~]#ipvsadm -L –n
4:測試
5 down掉 95主機(jī) lvs
在96主機(jī)上部署lvs 95主機(jī) ipvsadm –C ifdown eth0:0 96主機(jī) 重復(fù)步驟3 即可 1 安裝ipvsadm 2 添加vip至eth0 ifconfig eth0:0 172.16.253.199 netmask 255.255.255.255 broadcast 172.16.253.199 up
3:配置LVS-NAT 服務(wù) [root@h~]#ipvsadm -A -t 172.16.253.199:80 -s rr [root@h~]#ipvsadm -a -t 172.16.253.199:80 -r 172.16.253.97:80 -g [root@h~]#ipvsadm -a -t 172.16.253.199:80 -r 172.16.253.98:80 -g [root@h~]#ipvsadm -L –n
4 測試 DR模式正常與否
5 測試ok后 96主機(jī)上清空所有規(guī)則 ipvsadm –C ifconfig eth0:0 down
6:實(shí)現(xiàn)LVS
以下代碼是 實(shí)現(xiàn) LVS 調(diào)度 95 96 主機(jī) keepalived.conf配置文件中加入如下代碼
virtual_server 172.16.253.199 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 172.16.253.98 80{
weight 1
HTTP_GET {
url {
path /
status_code 200
}
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
real_server 172.16.253.97 80{
weight 1
HTTP_GET {
url {
path /
status_code 200
}
}
connect_timeout 2
nb_get_retry 3
delay_before_retry 1
}
}
重啟 keepalived服務(wù)
測試:
7 重啟 95主機(jī)的keepalived服務(wù)
95主機(jī)的 優(yōu)先級比96的高 vip會(huì)偏移至95主機(jī)
96主機(jī)
95主機(jī)
8檢測健康狀況功能 有無實(shí)現(xiàn)
給98主機(jī)增加iptables規(guī)則 :所有tcp的訪問禁止掉 iptables –A INPUT –p tcp –dport 80 –j REJECT
curl http://172.16.253.199 訪問就會(huì)僅僅訪問 97主機(jī)了
9:增加sorry server
在 95 96主機(jī)上增加soory server 內(nèi)容 當(dāng) 后端 9798主機(jī)的全部宕機(jī)之后,。95 96提供sorry server頁面服務(wù)
95 96主機(jī) 1:安裝nginx 提供sorry頁面 vim /usr/share/nginx/html/index.html 2:更改配置文件 keepalived.conf 在 virtual_server中 增加一行代碼 sorry_server 127.0.0.1 80
重啟keepalived服務(wù) [root@hkeepalived]#systemctl stop keepalived [root@hkeepalived]#systemctl start keepalived
down掉 后端主機(jī) 9798 nginx服務(wù)
測試訪問: curl http://172.16.253.199 訪問的是95 主機(jī)上的 sorry頁面
關(guān)閉 95主機(jī)的keepalived 服務(wù) 測試訪問: curl http://172.16.253.199 訪問的是96 主機(jī)上的 sorry頁面
三:高可用服務(wù)
一:理論描述
目的: 借助腳本實(shí)現(xiàn) 高可用服務(wù)(ninx/http/haproxy) 也就是說在服務(wù)不可用時(shí),vip偏移至備用節(jié)點(diǎn),。而不是之前實(shí)現(xiàn)的主機(jī)down掉之后vip偏移至備用節(jié)點(diǎn),。
環(huán)境: 95 96主機(jī)。keepalived 服務(wù)stop 腳本例子: 1:rpm –ql keepalived 此文件內(nèi)有腳本的例子,,以及如何調(diào)用 /usr/share/doc/keepalived-1.2.13/samples/keepalived.conf.vrrp.localcheck
2:cat /usr/share/doc/keepalived-1.2.13/samples/keepalived.conf.vrrp.localcheck
3:腳本簡述 1:在配置文件中定義腳本 vrrp_script chk_sshd {
script "killall -0 sshd" # cheaper than pidof
interval 2 # check every 2 seconds
weight -4 # default prio: -4 if KO
fall 2 # require 2 failures for KO
rise 2 # require 2 successes for OK
}
調(diào)用腳本 使用 vrrp_script 關(guān)鍵詞 腳本名 chk_sshd
腳本內(nèi)容分為兩塊
1 script "killall -0 sshd"
表示 此段代碼 返回0值,,部分功能不變
返回非0值。要執(zhí)行一些關(guān)鍵指令
killall -0 sshd :測試 是否可以殺掉 sshd進(jìn)程,。能殺掉返回0值,,表示sshd服務(wù)
正常運(yùn)行。返回其他值,表示sshd服務(wù)沒有運(yùn)行正常,。
2:weight -4 測試失敗權(quán)重-4
fall 2 檢測失敗2次,,才減去權(quán)重
rise -2 檢查兩次成功,ok
2:在配置文件中調(diào)用腳本 在 vrrp_instance中 使用track_script {
chk_haproxy weight 2
chk_http_port
chk_https_port
chk_smtp_port
}
此種模式調(diào)用腳本
二:nginx 服務(wù) 高可用
1:先定義腳本,,再調(diào)用腳本
95 96主機(jī)同時(shí)更改配置文件 編輯keepalived.conf文件
1)增加腳本
2)調(diào)用腳本
1)編輯腳本 vim /etc/keepalived.conf
vrrp_script chk_nginx{ script "[[ -f /etc/keepalived/down ]] && exit 1 ||exit 0 " interval 1 weight -10 fall 2 rise 1 }
script "[[ -f /etc/keepalived/down ]] && echo 1 ||echo 0 "
down文件存在 返回1
down文件不存在 返回0
依靠down文件存在與否 來降低/保持 主節(jié)點(diǎn)的權(quán)重
2)調(diào)用腳本
track_script {
chk_nginx
} 使用 track_script 關(guān)鍵詞 調(diào)用腳本
2:測試
在95主機(jī)上 touch /etc/keepalived/down文件 vip偏移至96主機(jī)
3:編輯 nginx配置文件
95 96主機(jī) vim /etc/nginx/nginx.conf server 中增加 location / { proxy_pass http://websrvs; }
server上增加 upstream websrvs { server 172.16.253.97:80; server 172.16.253.98:80; }
此段主要實(shí)現(xiàn) nginx的 服務(wù)調(diào)度至后端服務(wù)器
4:測試web主頁訪問
三:雙主模型nginx 高可用集群
上接實(shí)驗(yàn)三:
1:編輯配置文件
增加 vrrp_instance 實(shí)例2 96主機(jī) 在vip2上為MASTER 95主機(jī)在 vip2上為BACKUP 96主機(jī)增加如下內(nèi)容: vrrp_instance VI_2 {
state MASTER
interface eth0
virtual_router_id 61
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.253.188
}
track_script {
chk_nginx
}
}
95主機(jī)增加如下內(nèi)容: vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 61
priority 95
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.253.188
}
track_script {
chk_nginx
chk_nn
}
### 2: 測試雙主模式 95主機(jī) 關(guān)閉—啟動(dòng)服務(wù) 96主機(jī)關(guān)閉服務(wù)
1)vip1 及vip2 都在 95主機(jī)上
2)啟動(dòng)96 主機(jī)上的keepalived 服務(wù) vip2 跳轉(zhuǎn)至 96主機(jī)上
3) 在95 主機(jī)上 建 /etc/keepalived/down文件 vip1 199也跳轉(zhuǎn)至 96主機(jī)上
4) 客戶端測試訪問
3:改變 nginx的調(diào)度算法
2 hash算法 hash $request_uri consistent hash $remote_addr hash $cookie_name ip_hash 改為 hash $request_uri consistent
}
|