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