keepalived是一個(gè)高可用性的軟件,它實(shí)現(xiàn)了IP的虛擬化和服務(wù)的冗余,保證系統(tǒng)或者服務(wù)的高可用性。其中,VIP是keepalived的核心概念之一。VIP,即Virtual IP,即私有IP,是keepalived提供的虛擬IP地址,它不是系統(tǒng)接口的IP地址,而是自己內(nèi)部定義的。在這篇文章中,我們將從多個(gè)方面闡述keepalived VIP。
一、VIP的概念和作用
VIP,全稱為Virtual IP,即虛擬IP。它是一種虛擬的IP地址,不是真實(shí)存在于網(wǎng)絡(luò)中的,是keepalived程序提供的地址,目的是為了提高服務(wù)的可用性和負(fù)載均衡能力。
由于真實(shí)的服務(wù)器的地址是固定的,如果一臺(tái)服務(wù)器出現(xiàn)問題而停止工作,那么這臺(tái)服務(wù)器上負(fù)責(zé)的服務(wù)就會(huì)中斷,因此就需要將這個(gè)服務(wù)遷移到其他的服務(wù)器上。而VIP就是解決這個(gè)問題的重要方法,它可以將一個(gè)服務(wù)綁定在一個(gè)虛擬IP上,當(dāng)某個(gè)節(jié)點(diǎn)宕機(jī)或者某個(gè)服務(wù)出現(xiàn)故障時(shí),VIP可以快速地在其他綁定節(jié)點(diǎn)上實(shí)現(xiàn)服務(wù)的切換,從而保證了服務(wù)的高可用。
總之,VIP的作用是為了提供一個(gè)快速可靠的服務(wù)切換方案,用來保證業(yè)務(wù)的高可用性。
二、VIP的配置
下面是一個(gè)簡(jiǎn)單示例,演示如何在兩個(gè)主機(jī)上配置keepalived,使其提供一個(gè)綁定在VIP上的Web服務(wù)。
在兩個(gè)主機(jī)上都安裝keepalived:
# 安裝keepalived
yum install keepalived -y
在兩個(gè)主機(jī)上都開啟ip_forwarding
# 開啟ip_forwarding (service/restart方式啟動(dòng)系統(tǒng)不會(huì)自動(dòng)生效,可直接修改系統(tǒng)配置文件)
echo 1 > /proc/sys/net/ipv4/ip_forward
在節(jié)點(diǎn)1上的配置:(192.168.1.101)
# 創(chuàng)建一個(gè)虛擬網(wǎng)卡
ip addr add 192.168.100.1/24 dev eth0:0
# 配置keepalived
cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
vrrp_script chk_http_port {
script "nc -z 127.0.0.1 80"
interval 2
weight -5
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.199/24 dev eth0:0 label eth0:0
}
track_script {
chk_http_port
}
}
EOF
# 啟動(dòng)keepalived
systemctl enable keepalived
systemctl start keepalived
在節(jié)點(diǎn)2上的配置:(192.168.1.102)
# 創(chuàng)建一個(gè)虛擬網(wǎng)卡
ip addr add 192.168.100.1/24 dev eth0:0
# 配置keepalived
cat > /etc/keepalived/keepalived.conf << EOF
! Configuration File for keepalived
vrrp_script chk_http_port {
script "nc -z 127.0.0.1 80"
interval 2
weight -5
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.199/24 dev eth0:0 label eth0:0
}
track_script {
chk_http_port
}
}
EOF
# 啟動(dòng)keepalived
systemctl enable keepalived
systemctl start keepalived
在兩個(gè)節(jié)點(diǎn)上都可以正常訪問 VIP(192.168.1.199),如果節(jié)點(diǎn)1宕機(jī),節(jié)點(diǎn)2會(huì)立即接管VIP(192.168.1.199),確保Web服務(wù)不會(huì)停止服務(wù)。
三、VIP的實(shí)現(xiàn)原理
在上面的實(shí)例中,我們正確配置了keepalived,并成功地實(shí)現(xiàn)了Web服務(wù)的高可用。那么,keepalived是如何實(shí)現(xiàn)VIP這一核心概念的呢?
實(shí)際上,在keepalived中,VIP的工作原理是基于VRRP協(xié)議 (Virtual Router Redundancy Protocol,虛擬路由器冗余協(xié)議)的。通過此協(xié)議,主機(jī)上的keepalived進(jìn)程將自己標(biāo)識(shí)為特殊的VRRP實(shí)例,實(shí)例擁有一個(gè)特定的ID,同時(shí)參與ARP解析。
本質(zhì)上,VRRP協(xié)議是一種基于多機(jī)路由協(xié)議(RIP、OSPF、BGP)的虛擬路由器冗余協(xié)議。通過該協(xié)議,多臺(tái)主機(jī)可以共享一個(gè)虛擬IP,同時(shí)也可以進(jìn)行教對(duì)等的負(fù)荷均衡。
當(dāng)其中一臺(tái)主機(jī)在一個(gè)VRRP實(shí)例中間失效之后,參與的其他的主機(jī)便可以自動(dòng)認(rèn)為虛擬路由器已經(jīng)失效,并且開始互相選舉新的Master,從而使得服務(wù)繼續(xù)不間斷的提供。而keepalived則是VRRP協(xié)議的實(shí)現(xiàn)之一,它可以提供良好的高可用性方案。
四、VIP的使用場(chǎng)景
通過上面的介紹,我們可以知道VIP可以用在許多場(chǎng)景中來提高服務(wù)的可用性。下面列舉一些常見的VIP使用場(chǎng)景:
Web服務(wù)高可用在多臺(tái)Web服務(wù)器中,將Web服務(wù)的VIP綁定在其中一臺(tái)服務(wù)器上,當(dāng)這臺(tái)服務(wù)器出現(xiàn)故障的時(shí)候,可以快速切換到其他服務(wù)器,保證Web服務(wù)不被中斷。
負(fù)載均衡將VIP分配給幾個(gè)服務(wù)器,然后通過負(fù)載均衡的方式來進(jìn)行服務(wù)的分發(fā)。這種方式可以大大提高服務(wù)的負(fù)載均衡能力和可用性。
數(shù)據(jù)同步在多個(gè)服務(wù)器上部署服務(wù)時(shí),需要保證數(shù)據(jù)實(shí)時(shí)同步??梢允褂肰IP將不同服務(wù)器間的數(shù)據(jù)進(jìn)行同步,從而保證數(shù)據(jù)的一致性。
五、VIP的優(yōu)缺點(diǎn)
最后,我們來分析VIP的優(yōu)缺點(diǎn)。
六、總結(jié)
在這篇文章中,我們?cè)敿?xì)介紹了keepalived VIP這一概念,從概念、配置、實(shí)現(xiàn)原理、使用場(chǎng)景以及優(yōu)缺點(diǎn)等多個(gè)方面進(jìn)行了闡述。keepalived VIP是一種非常實(shí)用的技術(shù),可以在多種場(chǎng)景下提高服務(wù)的可用性和負(fù)載均衡能力,但是也需要在實(shí)踐中進(jìn)行不斷的優(yōu)化和調(diào)整,從而發(fā)揮出更好的效果。