一.Keepalived的介紹
Keepalived是一個基于VRRP協議來實現的WEB服務高可用方案,可以利用其來避免單點故障,使多臺節點安裝keepalived。其他節點用來提供真實的服務,同樣的,他們對外表現出一個虛擬IP。當主服務器宕機時,從服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。
Keepalived主要由兩大模塊,VRRP?static和checkers,實現HA集群中失敗切換功能。Keepalived通過VRRP功能再結合LVS負載均衡即可部署一個高性能的負載均衡集群系統。Checkers主要實現對服務器運行的狀態監測和故障隔離,其中ipvs和realserver健康狀態檢查通過配置文件就可以實現,而其他服務則需要編寫腳本,然后通過keepalived文件調用。
Keepalived運行有3個守護進程。父進程主要負責讀取配置文件初始化、監控2個子進程等;然后兩個子進程,一個負責VRRP,另一個負責Cheackers健康檢查。其中父進程監控模塊為WacthDog,工作實現:每個子進程打開一個接受unix域套接字,父進程連接到那些unix域套接字并向子進程發送周期性(5s)hello包。
上圖是Keepalived的功能體系結構,大致分兩層:用戶空間(user?space)
和內核空間(kernel?space)。
內核空間:主要包括IPVS(IP虛擬服務器,用于實現網絡服務的負載均衡)
和NETLINK(提供高級路由及其他相關的網絡功能)兩個部份。
二.Keepalived的特性
1.配置文件簡單:配置文件比較簡單,可通過簡單配置實現高可用功能
2.穩定性強:keepalived是一個類似于layer3,?4?&?7交換機制的軟件,具備我們平時說的第3層、第4層和第7層交換機的功能,常用于前端負載均衡器的高可用服務,當主服務器出現故障時,可快速進行切換,監測機制靈活,成功率高。
3.成本低廉:開源軟件,可直接下載配置使用,沒有額外費用。
4.應用范圍廣:因為keepalived可應用在多個層面,所以它幾乎可以對所有應用做高可用,包括LVS、數據庫、http服務、nginx負載均衡等等
5.支持多種類型:支持主從模式、主主模式高可用,可根據業務場景靈活選擇。
三.什么是VRRP
VRRP?(Virtual?Router?Redundancy?Protocol?,虛擬路由冗余協議)可以認為是實現路由器高可用的協議,簡單的說,當一個路由器故障時可以由另一個備份路由器繼續提供相同的服務。
VRRP?根據優先級來確定虛擬路由器中每臺路由器的角色(Master?路由器或Backup?路由器)。VRRP?優先級的取值范圍為0?到255?(?數值越大表明優先級越高?),可配置的范圍是1?到254?,優先級0?為系統保留給路由器放棄Master?位置時候使用,255?則是系統保留給IP?地址擁有者使用。優先級越高,則越有可能成為Master?路由器。當兩臺優先級相同的路由器同時競爭Master?時,比較接口IP
四.Keepalived軟件介紹
Keepalived:
程序包:keepalived????????????#通過yum源安裝
/etc/keepalived/keepalived.cong #主配置文件
/etc/sysconfig/keepalived #啟動時的添加參數
/etc/rc.d/init.d/keepalived #啟動腳本
/usr/sbin/keepalived #啟動程序
五.實驗
實驗環境:主從服務器兩臺,兩臺實現LNMP的rs-server兩臺
主服務器:vip?:?192.168.1.100
DIP:192.168.19.113
從服務器:VIP:192.168.1.100
DIP:192.168.19.114
Rs-server1:192.168.19.111
RS-server2:192.168.19.112
關閉selinux策略和防火墻,安裝keepalived包,并且已經實現過DR
配置主服務器:
- vim?/etc/keepalived/keepalived.cong
!?Configuration?File?for?keepalived
global_defs?{
notification_email?{
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from?Alexandre.Cassen@firewall.loc
smtp_server?192.168.200.1
smtp_connect_timeout?30
router_id?LVS_DEVEL
}
vrrp_instance?VI_1?{
state?MASTER
interface?ens37
virtual_router_id?76
priority?100
advert_int?1
authentication?{
auth_type?PASS
auth_pass?1111
}
virtual_ipaddress?{
192.168.1.100
}
}
virtual_server?192.168.1.100?80?{
delay_loop?6
lb_algo?wrr
lb_kind?DR
nat_mask?255.255.255.0
persistence_timeout?50
protocol?TCP
real_server?192.168.19.111?80?{
weight?1
HTTP_GET{
url?{
path?/
}
connect_timeout?3
delay_before_retry?3
}
}
real_server?192.168.19.112?80?{
weight?1
HTTP_GET{
url?{
path?/
}
- 配置從服務器
!?Configuration?File?for?keepalived
global_defs?{
notification_email?{
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from?Alexandre.Cassen@firewall.loc
smtp_server?192.168.200.1
smtp_connect_timeout?30
router_id?LVS_DEVEL
}
vrrp_instance?VI_1?{
state?BACKUP
interface?eth1
virtual_router_id?76
priority?80
advert_int?1
authentication?{
auth_type?PASS
auth_pass?1111
}
virtual_ipaddress?{
192.168.1.100
}
}
virtual_server?192.168.1.100?80??{
delay_loop?6
lb_algo?wrr
lb_kind?DR
nat_mask?255.255.255.0
persistence_timeout?50
protocol?TCP
real_server?192.168.19.111?80?{
weight?1
HTTP_GET?{
url?{
path?/
}
connect_timeout?3
delay_before_retry?3
}
}
real_server?192.168.19.111?80?{
weight?1
HTTP_GET?{
url?{
path?/
}
connect_timeout?3
delay_before_retry?3
connect_timeout?3
}
}
3.systemctl???start??keepalived
4.查看ipvsadm
5.測試
6.將主服務器的keepalived停用,模擬宕機
7.查看VIP是否漂移
8.測試
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/88392