本篇內(nèi)容主要講解“Consul的基本架構(gòu)和安裝教程”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Consul的基本架構(gòu)和安裝教程”吧!
創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來,先為岢嵐等服務(wù)建站,岢嵐等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為岢嵐企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
Consul是服務(wù)網(wǎng)格(service mesh)的一種解決方案,Consul
是有服務(wù)發(fā)現(xiàn),配置和**分段 **功能的全功能控制平面。這些功能可以根據(jù)需要單獨使用,也可以一起使用以構(gòu)建完整的服務(wù)網(wǎng)格。Consul
需要一個數(shù)據(jù)平面,并支持代理和本機集成模型。Consul
附帶了一個簡單的內(nèi)置代理,因此開箱即用,但也支持Envoy
等第三方代理集成。
Consul其實解決了運行微服務(wù)和云原生基礎(chǔ)架構(gòu)的網(wǎng)絡(luò)和安全挑戰(zhàn)。Consul提供了一種云原生的軟件驅(qū)動路由和分段方法。它還帶來了其他好處,比如故障處理,重試和網(wǎng)絡(luò)可觀察。
上面說到了服務(wù)網(wǎng)格和數(shù)據(jù)平面,服務(wù)網(wǎng)格通常是和微服務(wù)在一起說的服務(wù)網(wǎng)格,數(shù)據(jù)平面很好理解就是軟件和服務(wù)架構(gòu)中處理數(shù)據(jù)請求的那層,相比之下,控制平面就是配置和關(guān)閉數(shù)據(jù)平面的軟件部分,這里Consul就起到了控制平面的作用。
Consul的主要特點有以下:
服務(wù)發(fā)現(xiàn)
Consul的客戶端可以注冊服務(wù),例如api或MySQL,客戶端可以使用Consul來發(fā)現(xiàn)已注冊的服務(wù)。使用DNS或HTTP,應(yīng)用程序可以輕松找到它們依賴的服務(wù)。
健康檢測
Consul客戶端可以提供任何數(shù)量的運行狀況檢查,這些檢查可以與給定服務(wù)(“ Web服務(wù)器是否返回200 OK”)或本地節(jié)點(“內(nèi)存利用率低于90%”)相關(guān)。你可以使用此信息來監(jiān)視群集的運行狀況,服務(wù)發(fā)現(xiàn)組件可以使用這些信息將流量從不正常的主機轉(zhuǎn)移走。
KV存儲
你應(yīng)用程序可以將Consul的分層 鍵/值 存儲用于多種目的,不限于 動態(tài)配置,功能標記,協(xié)調(diào),集群leader選舉等等。Consul提供的簡單HTTP API使其非常易于使用。
安全的服務(wù)通信
Consul可以為服務(wù)生成和分發(fā)TLS證書然后建立相互的TLS連接。意圖 用于定義允許哪些服務(wù)進行通信??梢詫崟r更改意圖輕松管理服務(wù)分段,而不使用復(fù)雜的網(wǎng)絡(luò)拓撲和靜態(tài)防火墻規(guī)則。
多數(shù)據(jù)中心
Consul開箱即用地支持多個數(shù)據(jù)中心。這意味著Consul的用戶不必擔心會構(gòu)建其他抽象層以擴展到多個區(qū)域
Consul的設(shè)計對DevOps社區(qū)和應(yīng)用程序開發(fā)人員非常友好,使其非常適合現(xiàn)代,靈活的基礎(chǔ)架構(gòu)。
Consul是一個分布式,高度可用系統(tǒng)。本節(jié)將介紹基礎(chǔ)知識,有意省略一些不必要的細節(jié),可以快速了解Consul的工作方式。
向Consul提供服務(wù)的每個節(jié)點都運行著Consul的代理,當用來發(fā)現(xiàn)服務(wù) 或者 獲取配置的鍵值對數(shù)據(jù)時,代理可以不需要。代理負責節(jié)點上的服務(wù)以及節(jié)點本身的健康檢測。
代理與一臺或多臺Consul服務(wù)器通信。Consul服務(wù)器是存儲和復(fù)制數(shù)據(jù)的地方。服務(wù)器本身選舉一個領(lǐng)導者。雖然Consul可以在一臺服務(wù)器上運行,但建議3到5個節(jié)點,以避免發(fā)生故障導致數(shù)據(jù)丟失。建議為每個數(shù)據(jù)中心都使用Consul服務(wù)器集群。
服務(wù)器維護一個目錄,該目錄是通過匯總代理提交的數(shù)據(jù)生成的。該目錄維護著集群的高級視圖,包括哪些服務(wù)可用,哪些節(jié)點運行這些服務(wù),運行狀況信息等等。
需要發(fā)現(xiàn)其他服務(wù)或節(jié)點的基礎(chǔ)組件,可以查詢?nèi)魏蜟onsul服務(wù)器或任何Consul代理。代理將查詢自動轉(zhuǎn)發(fā)到服務(wù)器。
每個數(shù)據(jù)中心運行一個Consul服務(wù)器集群。當發(fā)出跨數(shù)據(jù)中心的服務(wù)發(fā)現(xiàn)或配置請求時,本地Consul服務(wù)器將請求轉(zhuǎn)發(fā)到遠程數(shù)據(jù)中心并返回結(jié)果。
我這里安裝為了環(huán)境方便,采用的是docker的方式,之前也嘗試過虛擬機,筆記本物理機等等,都不如用docker安裝方便。
獲取鏡像文件
docker pull consul
網(wǎng)絡(luò)慢的,可能需要執(zhí)行大約幾分鐘的時間,可以配置docker鏡像的方式解決,我配置了阿里鏡像
檢查下是否下載完成
? docker images -f 'reference=consul'REPOSITORY TAG IMAGE ID CREATED SIZE consul latest 2823bc69f80f 4 weeks ago 120MB
啟動Consul服務(wù)器
? docker run \ -d \ -p 8500:8500 \ -p 8600:8600/udp \ consul agent -server -ui -node=server-1 -bootstrap-expect=1 -client=0.0.0.0
-d: 表示后臺啟動
-p: 表示映射本機的8500和8600到docker容器的8500和8600/udp端口
最后一行就是consul 啟動服務(wù)器的命令
觀察啟動日志
因為剛才是后臺啟動的,也看不到日志情況,可以通過下面的方式查看
? docker logs d2806ac2b7e1 // 后面的這個id就是容器的id,可以通過 docker -ps -l 查看
看到這樣的日志,說明就是啟動沒問題的
==> Starting Consul agent... Version: '1.9.1' Node ID: '5cea9bb5-53f2-e71e-1a46-b23f188da307' Node name: 'server-1' Datacenter: 'dc1' (Segment: '') Server: true (Bootstrap: true) Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600) Cluster Addr: 172.17.0.2 (LAN: 8301, WAN: 8302) Encrypt: Gossip: false, TLS-Outgoing: false, TLS .... ==> Consul agent running! ....
現(xiàn)在服務(wù)端啟動了,接下來應(yīng)該要啟動一個客戶端去連接這個服務(wù)端,這里有個問題,我怎么知道我啟動這個服務(wù)端的IP地址和端口號,docker提供了可以直接執(zhí)行容器內(nèi)Consul命令的方式。
? docker exec d2806ac2b7e1 consul membersNode Address Status Type Build Protocol DC Segmentserver-1 172.17.0.2:8301 alive server 1.9.1 2 dc1
當然你也可以直接進去到容器內(nèi)部,進去容器內(nèi)部,使用的是exec命令
docker exec -it d2806ac2b7e1 /bin/sh //然后執(zhí)行 consul members
docker執(zhí)行容器內(nèi)支持的命令方式為:
docker execconsul members
這里發(fā)現(xiàn) 服務(wù)端的地址是172.17.0.2:8301
配置運行客戶端
docker run \ --name=test-1 \ consul agent -node=client-1 -join=172.17.0.2
看到下面的輸出說明沒有問題,注意這里的name是指的容器參數(shù)
==> Starting Consul agent... ==> Joining cluster... Join completed. Synced with 1 initial agents ==> Consul agent running! Version: 'v1.4.4' Node ID: '4b6da3c6-b13f-eba2-2b78-446ffa627633' Node name: 'client-1' Datacenter: 'dc1' (Segment: '') Server: false (Bootstrap: false) Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600) Cluster Addr: 172.17.0.4 (LAN: 8301, WAN: 8302) Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false
通過再次在容器中執(zhí)行consul Members
命令來檢查客戶端是否已加入
docker exec d2806ac2b7e1 consul members
發(fā)現(xiàn)已經(jīng)變成兩個了,并且狀態(tài)都是可用狀態(tài)
docker exec d2806ac2b7e1 consul membersNode Address Status Type Build Protocol DC Segmentserver-1 172.17.0.2:8301 alive server 1.9.1 2 dc1client-1 172.17.0.3:8301 alive client 1.9.1 2 dc1
現(xiàn)在有了一個小的數(shù)據(jù)中心,就可以注冊服務(wù)或者配置數(shù)據(jù)玩了。
其實,查看數(shù)據(jù)中心的方式,還可以通過web的方式來查看,Consul默認的http接口是8500
端口,這個端口啟動的ui接口,可以方便的管理配置數(shù)據(jù)中心。打開如圖,點擊NODES 查看節(jié)點
點擊節(jié)點,右邊可以看到節(jié)點的健康狀態(tài),代理是否可用等
到這里,先簡單了解了Consul,然后熟悉了Consul的簡單架構(gòu),隨后在docker里面就方便的搭建了一個簡單的Consul集群,并且都是可用狀態(tài)。
到此,相信大家對“Consul的基本架構(gòu)和安裝教程”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!