您好,登錄后才能下訂單哦!
一、什么是consul?
Consul是一個(gè)支持多數(shù)據(jù)中心分布式高可用的服務(wù)發(fā)現(xiàn)和配置共享的服務(wù)軟件,是由HashiCorp公司用Go語(yǔ)言開(kāi)發(fā)的,基于Mozilla Public License 2.0的協(xié)議開(kāi)源的。具有天然可移植性(支持Linux、windows和Mac OS X);安裝包僅包含一個(gè)可執(zhí)行文件,方便部署,與Docker等輕量級(jí)容器可無(wú)縫配合。
與Consul同類的產(chǎn)品有:Zookeeper、Doozer、Etcd。
二、特性
1.服務(wù)注冊(cè):通過(guò)HTTP API或DNS,告訴服務(wù)注冊(cè)中心有新的服務(wù)加入。
2.服務(wù)發(fā)現(xiàn):通過(guò)HTTP API或DNS,可以知道目標(biāo)服務(wù)的地址和端口。
3.健康檢查:支持多種方式,HTTP、TCP、Docker、Shell腳本定制化監(jiān)控。
4.配置模板:Consul Template負(fù)責(zé)定期從服務(wù)注冊(cè)中心獲取信息,如果有變化自動(dòng)更新配置文件并重新加載。
5.可視化Web界面
6.支持多數(shù)據(jù)中心
補(bǔ)充:
什么是服務(wù)注冊(cè)?
答:一個(gè)服務(wù)將其位置信息在“中心注冊(cè)節(jié)點(diǎn)”注冊(cè)的過(guò)程。該服務(wù)一般會(huì)將它的主機(jī)IP地址以及端口號(hào)進(jìn)行注冊(cè),有時(shí)也會(huì)有服務(wù)訪問(wèn)的認(rèn)證信息,使用協(xié)議,版本號(hào),以及關(guān)于環(huán)境的一些細(xì)節(jié)信息。
什么是服務(wù)發(fā)現(xiàn)?
答:服務(wù)發(fā)現(xiàn)可以讓一個(gè)應(yīng)用或者組件發(fā)現(xiàn)其運(yùn)行環(huán)境以及其他應(yīng)用或組件的信息。用戶配置一個(gè)服務(wù)發(fā)現(xiàn)工具就可以將實(shí)際容器跟運(yùn)行配置分離開(kāi)。常見(jiàn)配置信息包括:ip、端口號(hào)、名稱等。
三、應(yīng)用場(chǎng)景
1.docker、CoreOS實(shí)例的注冊(cè)于配置共享
2.Vitess集群
3.SaaS應(yīng)用的配置共享
4.與confd服務(wù)集成,動(dòng)態(tài)生成nginx與haproxy配置文件
四、優(yōu)勢(shì)
1.使用Raft算法來(lái)保持一致性,比paxos算法更直接,zookeeper采用的是paxos算法
2.支持多數(shù)據(jù)中心,內(nèi)外網(wǎng)的服務(wù)采用不同的端口進(jìn)行監(jiān)聽(tīng),可以避免單點(diǎn)故障;zookeeper等不支持多數(shù)據(jù)中心
3.支持健康監(jiān)測(cè)
4.支持http協(xié)議與dns協(xié)議接口
5.提供web界面
五、系統(tǒng)架構(gòu)
這是Consul官網(wǎng)提供的一個(gè)典型的系統(tǒng)結(jié)構(gòu)圖。
Consul建議每個(gè)DataCenter的Server的節(jié)點(diǎn)最好在3-5個(gè),主要是方便在失敗以及數(shù)據(jù)復(fù)制的性能;Client的數(shù)量是任意的。
DataCenter的所有節(jié)點(diǎn)都會(huì)參與到Gossip協(xié)議;Client到Server會(huì)通過(guò)LAN Gossip。所有的節(jié)點(diǎn)都在Gossip pool中,通過(guò)消息層來(lái)實(shí)現(xiàn)節(jié)點(diǎn)之間的通信以達(dá)到故障檢測(cè)的目的,并且不需要給Client配置Server的地址。
Server節(jié)點(diǎn)還會(huì)參與到WAN Gossip池中,通過(guò)Server節(jié)點(diǎn)就可以讓DataCenter之間做簡(jiǎn)單的服務(wù)發(fā)現(xiàn)。比如增加一個(gè)Datacenter就只需要讓Server節(jié)點(diǎn)參與到Gossip Pool中。并且,DataCneter之間的通信和服務(wù)請(qǐng)求就可以通過(guò)WAN Gossip 來(lái)隨機(jī)請(qǐng)求另外一個(gè)DataCenter的Server節(jié)點(diǎn),然后被請(qǐng)求的Server 會(huì)再把請(qǐng)求foword到本DataCenter的leader節(jié)點(diǎn)。
Server leader的選舉是通過(guò)Consul的Raft算法實(shí)現(xiàn)的,leader節(jié)點(diǎn)需要負(fù)責(zé)所有的請(qǐng)求和處理,并且這些請(qǐng)求必須復(fù)制給所有的其他非leader的server節(jié)點(diǎn)。非leader節(jié)點(diǎn)接收到RPC請(qǐng)求的時(shí)候也會(huì)forward到leader節(jié)點(diǎn)。
注:關(guān)于leader的詳細(xì)選舉流程可以參考Raft算法,有時(shí)間可以研究下Raft算法與Paxos算法。
六、安裝與部署Console
詳情請(qǐng)看下一篇推文。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。