簡(jiǎn)單幾步帶你看懂高可用的服務(wù)端架構(gòu)方案
一、背景
很多公司都會(huì)有自己的一套高可用的服務(wù)端架構(gòu)方案,但作為測(cè)試人員,雖然測(cè)試了系統(tǒng)的很多功能,但是很多同學(xué)并不是很清楚服務(wù)端的整體架構(gòu)設(shè)計(jì)。對(duì)于高可用、可擴(kuò)展、負(fù)載均衡的概念還是停留在概念的層面,沒有實(shí)際的理解。因此本文用以下幾步帶你快速看懂高可用的服務(wù)端架構(gòu)方案。
二、服務(wù)端架構(gòu)方案
2.1 單機(jī)方案
1)瀏覽器通過(guò)DNS-server,域名解析到ip
2)瀏覽器通過(guò)ip訪問(wèn)web-server
缺點(diǎn):
1)非高可用,web-server掛了整個(gè)系統(tǒng)就掛了
2)擴(kuò)展性差,當(dāng)吞吐量達(dá)到web-server上限時(shí),無(wú)法擴(kuò)容
2.2 DNS輪詢方案
DNS輪詢:通過(guò)在DNS-server上對(duì)一個(gè)域名設(shè)置多個(gè)ip解析,來(lái)擴(kuò)充web-server性能及實(shí)施負(fù)載均衡的技術(shù)
1)多部署幾份web-server,1個(gè)tomcat抗1000,部署3個(gè)tomcat就能抗3000
2)在DNS-server層面,域名每次解析到不同的ip
優(yōu)點(diǎn):
1)零成本:在DNS-server上多配幾個(gè)ip即可,功能也不收費(fèi)
2)部署簡(jiǎn)單:多部署幾個(gè)web-server即可,原系統(tǒng)架構(gòu)不需要做任何改造
3)負(fù)載均衡:變成了多機(jī),但負(fù)載基本是均衡的
缺點(diǎn):
1)非高可用:DNS-server只負(fù)責(zé)域名解析ip,這個(gè)ip對(duì)應(yīng)的服務(wù)是否可用,DNS-server是不保證的,假設(shè)有一個(gè)web-server掛了,部分服務(wù)會(huì)受到影響
2)擴(kuò)容非實(shí)時(shí):DNS解析有一個(gè)生效周期
3)暴露了太多的外網(wǎng)ip
2.3 nginx方案
nginx:一個(gè)高性能的web-server和實(shí)施反向代理的軟件
1)站點(diǎn)層與瀏覽器層之間加入了一個(gè)反向代理層,利用高性能的nginx來(lái)做反向代理
2)nginx將http請(qǐng)求分發(fā)給后端多個(gè)web-server
優(yōu)點(diǎn):
1)DNS-server不需要?jiǎng)?/p>
2)負(fù)載均衡:通過(guò)nginx來(lái)保證
3)只暴露一個(gè)外網(wǎng)ip,nginx->tomcat之間使用內(nèi)網(wǎng)訪問(wèn)
4)擴(kuò)容實(shí)時(shí):nginx內(nèi)部可控,隨時(shí)增加web-server隨時(shí)實(shí)時(shí)擴(kuò)容
5)能夠保證站點(diǎn)層的可用性:任何一臺(tái)tomcat掛了,nginx可以將流量遷移到其他tomcat
缺點(diǎn):
1)時(shí)延增加+架構(gòu)更復(fù)雜了:中間多加了一個(gè)反向代理層
2)反向代理層成了單點(diǎn),非高可用
2.4 keepalived方案
keepalived:一款用來(lái)檢測(cè)服務(wù)狀態(tài)存活性的軟件,常用來(lái)做高可用
1)做兩臺(tái)nginx組成一個(gè)集群,分別部署上keepalived,設(shè)置成相同的虛IP,保證nginx的高可用
2)當(dāng)一臺(tái)nginx掛了,keepalived能夠探測(cè)到,并將流量自動(dòng)遷移到另一臺(tái)nginx上,整個(gè)過(guò)程對(duì)調(diào)用方透明
優(yōu)點(diǎn):
1)解決了高可用的問(wèn)題
缺點(diǎn):
1)資源利用率只有50%
2)nginx仍然是接入單點(diǎn)
2.5 LVS/F5方案
LVS:Linux Virtual Server,使用集群技術(shù),實(shí)現(xiàn)在linux操作系統(tǒng)層面的一個(gè)高性能、高可用、負(fù)載均衡服務(wù)器
F5:一個(gè)高性能、高可用、負(fù)載均衡的硬件設(shè)備
1)可以通過(guò)lvs來(lái)擴(kuò)展多個(gè)nginx
2)通過(guò)keepalived+VIP的方案可以保證可用性
優(yōu)點(diǎn):
1)解決了nginx是單點(diǎn)接入的問(wèn)題
缺點(diǎn):
1)LVS依然是單點(diǎn)接入
2.6 終極方案
水平擴(kuò)展,才是解決性能問(wèn)題的根本方案,能夠通過(guò)加機(jī)器擴(kuò)充性能的方案才具備最好的擴(kuò)展性
1)通過(guò)DNS輪詢來(lái)線性擴(kuò)展入口lvs層的性能
2)通過(guò)keepalived來(lái)保證高可用
3)通過(guò)lvs來(lái)擴(kuò)展多個(gè)nginx
4)通過(guò)nginx來(lái)做負(fù)載均衡