建議 yum 安裝棒仍,因?yàn)楣俜绞珍浀絜pel鄙才,所有yum 安裝功能都不少
$ sudo yum install keepalived -y
-
配置日志文件
$ vim /etc/sysconfig/keepalived
找到 KEEPALIVED_OPTIONS="-D "
該為 KEEPALIVED_OPTIONS="-D -S 0"
# Options for keepalived. See `keepalived --help' output and keepalived(8) and
# keepalived.conf(5) man pages for a list of all options. Here are the most
# common ones :
#
# --vrrp -P Only run with VRRP subsystem.
# --check -C Only run with Health-checker subsystem.
# --dont-release-vrrp -V Dont remove VRRP VIPs & VROUTEs on daemon stop.
# --dont-release-ipvs -I Dont remove IPVS topology on daemon stop.
# --dump-conf -d Dump the configuration data.
# --log-detail -D Detailed log messages.
# --log-facility -S 0-7 Set local syslog facility (default=LOG_DAEMON)
#
KEEPALIVED_OPTIONS="-D -S 0"
指定日志存放點(diǎn)
$ vim /etc/rsyslog.conf
# Keepalived log config
local0.* /var/log/keepalived.log
-
配置文件
$ vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs { #全局部分定義郵件報(bào)警系統(tǒng)馒稍,可以不用定義
notification_email { #定義郵件發(fā)送目標(biāo)
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #定義郵件發(fā)送人
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL #標(biāo)識(shí)keepalived服務(wù)器的字符串军拟,實(shí)現(xiàn)高可用時(shí)需要使用它標(biāo)識(shí)節(jié)點(diǎn)
# 全局部分關(guān)于靜態(tài)地址和靜態(tài)路由的配置蠕趁,可以man keepalived.conf垃它,不過幾乎不用配置這部分
}
#定義vrrp實(shí)例碱妆。一個(gè)配置文件中可以實(shí)現(xiàn)多實(shí)例肉盹。但不同主機(jī)上互為master<-->backup的實(shí)例名需相同
vrrp_instance VI_1 {
state MASTER #定義實(shí)例的角色狀態(tài)是master還是backup
interface eth0 #定義vrrp綁定的接口,即接收或發(fā)送心跳通告的接口疹尾,即HA監(jiān)測(cè)接口
virtual_router_id 51 #虛擬路由標(biāo)識(shí)(VRID)上忍,同一實(shí)例該數(shù)值必須相同,即master和backup中該值相同
#同一網(wǎng)卡上的不同vrrp實(shí)例纳本,該值必須不能相同窍蓝。取值范圍0-255
priority 100 #該vrrp實(shí)例中本機(jī)的keepalived的優(yōu)先級(jí),優(yōu)先級(jí)最高的為master繁成。該選項(xiàng)的優(yōu)先級(jí)
#高于state選項(xiàng)吓笙,即若state指定的是backup,但這里設(shè)置的值最高巾腕,則仍為master面睛。
advert_int 1 #心跳信息發(fā)送和接收時(shí)間間隔,單位為秒
authentication { #認(rèn)證方式尊搬,同一實(shí)例中這個(gè)配置必須完全一樣才可通過認(rèn)證叁鉴。只建議使用PASS認(rèn)證
auth_type PASS
auth_pass 1111 #最多支持8字符,超過8字符將只取前8字符
}
virtual_ipaddress { #設(shè)置的VIP佛寿。只有master節(jié)點(diǎn)才會(huì)設(shè)置幌墓。master出現(xiàn)故障后,VIP會(huì)故障轉(zhuǎn)移到backup。
#這些vip默認(rèn)配置在interface指定的接口別名上克锣,可使用dev選項(xiàng)來指定配置接口茵肃。
#使用ip add的方式添加。若要被ifconfig查看袭祟,在IP地址后加上label即可验残。
#<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
192.168.200.16 label eth0:1
192.168.200.17
192.168.200.18
192.168.200.19/24 dev eth1
}
}
#定義虛擬服務(wù)部分
virtual_server 192.168.200.100 443 { #虛擬服務(wù)地址和端口,使用空格分隔巾乳,其中地址為VIP
delay_loop 6 #健康檢查時(shí)間間隔
lb_algo rr #定義負(fù)載均衡LB的算法您没,這里使用的是rr調(diào)度算法
lb_kind NAT #lvs的模型,有NAT/DR/TUN三種
nat_mask 255.255.255.0
persistence_timeout 50 #持久會(huì)話保持時(shí)長
protocol TCP #監(jiān)控服務(wù)的協(xié)議類型胆绊,1.3.0版本之前只支持tcp氨鹏,之后還支持udp
real_server 192.168.201.100 443 { #定義real_server部分,地址和端口使用空格分隔
weight 1 #LVS權(quán)重
SSL_GET { #健康狀況檢查的檢查方式压状,常見的有HTTP_GET|SSL_GET|TCP_CHECK|MISC_CHECK仆抵。
url {
path / #指定ssl_get健康狀況檢查的路徑,例如檢查index.html是否正常
digest ff20ad2481f97b1754ef3e12ecd3a9cc
#健康狀況需要狀態(tài)碼种冬,可以是status_code镣丑、digest或digest+status_code
#digest值用keepalived的genhash命令生成,一般使用status_code即可
status_code 200
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3 #表示3秒無響應(yīng)就超時(shí)娱两,即此realserver不健康莺匠,需重試連接
nb_get_retry 3 #表示重試3次,3次之后都超時(shí)就是宕機(jī)十兢,防止誤傷(nb=number)
delay_before_retry 3 #重試的時(shí)間間隔
#上述配置需12秒才能判斷節(jié)點(diǎn)故障趣竣,時(shí)間太久,應(yīng)改小
}
}
}
virtual_server 10.10.10.2 1358 {
delay_loop 6
lb_algo rr
lb_kind NAT
persistence_timeout 50
protocol TCP
sorry_server 192.168.200.200 1358 #定義當(dāng)所有Real server都宕機(jī)的時(shí)候旱物,由哪臺(tái)服務(wù)器繼續(xù)提供服務(wù)
#一般在keepalived本機(jī)給定一個(gè)web頁面遥缕,提示網(wǎng)站正在維護(hù)的信息
real_server 192.168.200.2 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.3 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334c
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.10.10.3 1358 {
delay_loop 3
lb_algo rr
lb_kind NAT
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 192.168.200.4 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.200.5 1358 {
weight 1
HTTP_GET {
url {
path /testurl/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl2/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
url {
path /testurl3/test.jsp
digest 640205b7b0fc66c1ea91c463fac6334d
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}