為什么要用Keepalived來(lái)實(shí)現(xiàn)負(fù)載均衡器高可用,這里只拿HaProxy負(fù)載均衡器來(lái)進(jìn)行說(shuō)明:
對(duì)于所有懂運(yùn)維的小伙伴來(lái)說(shuō),都應(yīng)該知道,無(wú)論后端的服務(wù)器都強(qiáng)大,這里的后端服務(wù)器說(shuō)的是真正提供服務(wù)的主機(jī),負(fù)載均衡器后面有緩存服務(wù)器,緩存服務(wù)器后面才是真正提供服務(wù)的服務(wù)器。而這個(gè)服務(wù)器小編稱(chēng)它為"后端服務(wù)器",而在這后端服務(wù)器后面是我們的數(shù)據(jù)緩存服務(wù)器,之后是數(shù)據(jù)庫(kù),也是整個(gè)企業(yè)的命脈。這整個(gè)架構(gòu)是非常龐大的,其中的每一個(gè)角色都很重要而且必不可少,所以,這里的每一個(gè)角色都不可能只是一臺(tái)服務(wù)器,它們會(huì)是多臺(tái)服務(wù)器組成的集群,通過(guò)集群技術(shù)可以在付出較低成本的情況下獲得在性能、可靠性、靈活性方面的相對(duì)較高的收益。
當(dāng)集群組成之后,它們不可能一臺(tái)一臺(tái)的開(kāi)放給用戶(hù),若真要這么做,那么每一臺(tái)后端服務(wù)器都要配一個(gè)公網(wǎng)地址,并且拿web網(wǎng)站來(lái)說(shuō),用戶(hù)訪問(wèn)網(wǎng)站要么是輸入網(wǎng)站的域名跳轉(zhuǎn)進(jìn)來(lái),要么就是通過(guò)點(diǎn)擊其他頁(yè)面中的內(nèi)容跳轉(zhuǎn)進(jìn)來(lái),而為每一臺(tái)主機(jī)配置一個(gè)公網(wǎng)地址,要在DNS解析上把這些公網(wǎng)地址都配置成一個(gè)域名,這操作是非常非常可怕的,公網(wǎng)地址是有限的并且是收費(fèi)的;我們且不談DNS解析及公網(wǎng)地址費(fèi)用,就拿某貓、某云來(lái)說(shuō),他們的后端服務(wù)器可不僅僅只有上萬(wàn)臺(tái),甚至多達(dá)千萬(wàn)臺(tái),這讓每臺(tái)提供服務(wù)的機(jī)器都有一個(gè)公網(wǎng)IP是不現(xiàn)實(shí)的。
因此,在這種情況下,我們可以想象,若是能有一臺(tái)服務(wù)器只負(fù)責(zé)轉(zhuǎn)發(fā)用戶(hù)的訪問(wèn)請(qǐng)求,而轉(zhuǎn)發(fā)的時(shí)候通過(guò)一定的算法來(lái)判斷用哪個(gè)后端server來(lái)提供服務(wù),而后端的所有機(jī)器全部用私有IP,并且真正提供服務(wù)的后端機(jī)器只需要處理請(qǐng)求就可以,無(wú)需與用戶(hù)直接交互,也減少了服務(wù)器的壓力,一方面也能提升性能。那么這臺(tái)服務(wù)器就是
我們的負(fù)載均衡器
而這個(gè)負(fù)載均衡器只需要負(fù)責(zé)接收請(qǐng)求并轉(zhuǎn)發(fā)即可,所以,通常一個(gè)負(fù)載均衡器所能處理的并發(fā)請(qǐng)求已經(jīng)足以滿(mǎn)足絕大部分企業(yè)的要求。但是,若這個(gè)負(fù)載均衡器宕機(jī)了呢?即便負(fù)載均衡器后面的服務(wù)器再?gòu)?qiáng)大,緩存命中率再高,web服務(wù)器(就是小編說(shuō)的后端服務(wù)器)處理能力再?gòu)?qiáng)、性能再好,數(shù)據(jù)緩存命中再高,數(shù)據(jù)庫(kù)的讀寫(xiě)、并發(fā)等...哪怕后面的服務(wù)器能上天都將無(wú)法繼續(xù)提供服務(wù)。所以,基于這種問(wèn)題,我們勢(shì)必要對(duì)負(fù)載均衡器來(lái)做高可用。
簡(jiǎn)單來(lái)講,指由兩臺(tái)服務(wù)器運(yùn)行某種同樣的應(yīng)用,為用戶(hù)提供服務(wù),當(dāng)某一臺(tái)出現(xiàn)問(wèn)題時(shí),用戶(hù)的請(qǐng)求將由另一臺(tái)服務(wù)器繼續(xù)提供,從而實(shí)現(xiàn)高可用性。
HA的三種工作方式
(1)主從模式(主機(jī)和備機(jī))
(2)雙機(jī)雙工
(3)集群模式
keepalived
(1)keepalived 基于vrrp協(xié)議來(lái)實(shí)現(xiàn)HA 的。
vrrp 協(xié)議,可以實(shí)現(xiàn)服務(wù)的切換。
(2)keepalived 啟動(dòng)后會(huì)有三個(gè)進(jìn)程:
父進(jìn)程: 內(nèi)存管理,子進(jìn)程管理等等
子進(jìn)程:VRRP 子進(jìn)程
子進(jìn)程:healthchecker 子進(jìn)程
注:healthchecker 子進(jìn)程負(fù)責(zé)檢查各主機(jī)間的主機(jī)狀態(tài),當(dāng)發(fā)現(xiàn)某臺(tái)主機(jī)上的
服務(wù)不可用時(shí),將通知vrrp 子進(jìn)程,由vrrp 子進(jìn)程來(lái)完成服務(wù)的切換。
keepalived+lvs
網(wǎng)絡(luò)拓?fù)?/p>
五臺(tái)虛擬機(jī)在同一網(wǎng)絡(luò)段
安裝軟件
client:yum install elinks -y
lvs1 和lvs2:yum install keepalived ipvsadm -y
web1 和web2:yum install httpd -y
在lvs1 上編輯配置文件
(1)vim /etc/keepalived/keepalived.conf
global_defs {
notification_email { ? ? ? ? ? ? ? ?#發(fā)郵件給誰(shuí)
eroot@localhost
}
notification_email_from root@localhost ? ? ? ?#誰(shuí)發(fā)郵件
smtp_server 127.0.0.1 ? ? ? ? ? #簡(jiǎn)單郵件傳輸協(xié)議服務(wù)器IP
smtp_connect_timeout 30
router_id node1 ? ? ? ? ? ? ? ? ? #服務(wù)器路由標(biāo)識(shí)
}
vrrp_instance VI_1 { ? ? ? ? ? #實(shí)例(instance)
state MASTER ? ? ? ? ? ? ? ? ? #狀態(tài):主機(jī)
interface eno33554976 ? ?#虛擬IP 使用的網(wǎng)卡
virtual_router_id 51 ? ? ? ? ? ?#虛擬路由ID 標(biāo)識(shí)
priority 100 ? ? ? ? ? ? ? ? ? ? ? ?#優(yōu)先級(jí)
advert_int 1 ? ? ? ? ? ? ? ? ? #組播信息發(fā)送間隔
authentication { ? ? ? ? ? ? ? ?#驗(yàn)證信息
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { ? ? ? ? ? ? ?#虛擬IP(VIP)
192.168.0.254
}
}
(1)vim dr.sh(LVS 采用DR 模式)
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.0.254:80 -s rr
ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.2:80 -g
ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.4:80 -g
在lvs2 上編輯配置文件
(1)vim /etc/keepalived/keepalived.conf
global_defs {
notification_email {
root@localhost
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id node2
}
vrrp_instance VI_1 {
state BACKUP
interface eno33554976
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.254
}
}
(2)vim dr.sh(LVS 采用DR 模式)
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 192.168.0.254:80 -s rr
ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.2:80 -g
ipvsadm -a -t 192.168.0.254:80 -r 192.168.0.4:80 -g
在web1、web2 上
(1)配置httpd
(2)編輯web.sh 腳本:
vim web.sh
#!/bin/bash
ifconfig lo:0 192.168.0.254 netmask 255.255.255.255 up
route add -h(huán)ost 192.168.0.254 dev lo:0
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
在lvs1 和lvs2 上運(yùn)行:systemctl restart keepalived
bash dr.sh
在web1 和web2 上:systemctl restart httpd
bash web.sh
客戶(hù)端測(cè)試:elinks http://192.168.0.254
可以看到web1 和web2 上的網(wǎng)頁(yè)交替出現(xiàn)。
互動(dòng)區(qū)
* 你對(duì)以上內(nèi)容有什么看法?你最關(guān)注云計(jì)算哪個(gè)趨勢(shì)?如果你還有想了解的技術(shù)話題,歡迎留言分享。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/5884.html
摘要:在協(xié)議實(shí)現(xiàn)里,虛擬路由器使用作為虛擬地址,就是唯一的,這個(gè)地址同一時(shí)間只有一個(gè)物理路由器占用。在虛擬路由器里面的物理路由器組里面通過(guò)多播地址來(lái)定時(shí)發(fā)送通告消息。負(fù)責(zé)健康檢查,包括常見(jiàn)的各種檢查方式。 公司內(nèi)部 OA 系統(tǒng)要做線上高可用,避免單點(diǎn)故障,所以計(jì)劃使用2臺(tái)虛擬機(jī)通過(guò) Keepalived 工具來(lái)實(shí)現(xiàn) nginx 的高可用(High Avaiability),達(dá)到一臺(tái)nginx...
摘要:雙主是一個(gè)比較簡(jiǎn)單的高可用架構(gòu),適用于中小集群,今天就說(shuō)說(shuō)怎么用做的高可用。缺點(diǎn)也比較明顯,就是增加從節(jié)點(diǎn)的情況下,從節(jié)點(diǎn)不會(huì)主動(dòng)切換同步對(duì)象,而且腳本需要自己實(shí)現(xiàn),有一定風(fēng)險(xiǎn)。 雙主 + keepalived 是一個(gè)比較簡(jiǎn)單的 MySQL 高可用架構(gòu),適用于中小 MySQL 集群,今天就說(shuō)說(shuō)怎么用 keepalived 做 MySQL 的高可用。 1 概述 1.1 keepalive...
閱讀 732·2021-11-23 09:51
閱讀 2429·2021-10-11 11:10
閱讀 1298·2021-09-23 11:21
閱讀 1089·2021-09-10 10:50
閱讀 881·2019-08-30 15:54
閱讀 3325·2019-08-30 15:53
閱讀 3286·2019-08-30 15:53
閱讀 3185·2019-08-29 17:23