自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Consul實(shí)戰(zhàn):介紹基礎(chǔ)架構(gòu)和安裝

開發(fā) 架構(gòu)
Consul是服務(wù)網(wǎng)格(service mesh)的一種解決方案,Consul是有服務(wù)發(fā)現(xiàn),配置和分段功能的全功能控制平面。這些功能可以根據(jù)需要單獨(dú)使用,也可以一起使用以構(gòu)建完整的服務(wù)網(wǎng)格。Consul需要一個(gè)數(shù)據(jù)平面,并支持代理和本機(jī)集成模型。

[[377416]]

什么是consul

Consul是服務(wù)網(wǎng)格(service mesh)的一種解決方案,Consul是有服務(wù)發(fā)現(xiàn),配置和分段功能的全功能控制平面。這些功能可以根據(jù)需要單獨(dú)使用,也可以一起使用以構(gòu)建完整的服務(wù)網(wǎng)格。Consul需要一個(gè)數(shù)據(jù)平面,并支持代理和本機(jī)集成模型。Consul附帶了一個(gè)簡(jiǎn)單的內(nèi)置代理,因此開箱即用,但也支持Envoy等第三方代理集成。

Consul其實(shí)解決了運(yùn)行微服務(wù)和云原生基礎(chǔ)架構(gòu)的網(wǎng)絡(luò)和安全挑戰(zhàn)。Consul提供了一種云原生的軟件驅(qū)動(dòng)路由和分段方法。它還帶來(lái)了其他好處,比如故障處理,重試和網(wǎng)絡(luò)可觀察。

上面說(shuō)到了 服務(wù)網(wǎng)格和數(shù)據(jù)平面,服務(wù)網(wǎng)格通常是和微服務(wù)在一起說(shuō)的,在這里就不展開說(shuō)服務(wù)網(wǎng)格,后面會(huì)有專門的文章來(lái)說(shuō),屬于現(xiàn)在很火的云原生的概念,RedHat有篇文章介紹的不錯(cuò),需要看的我提供了地址:https://www.redhat.com/en/topics/microservices/what-is-a-service-mesh。數(shù)據(jù)平面很好理解就是軟件和服務(wù)架構(gòu)中處理數(shù)據(jù)請(qǐng)求的那層,相比之下,控制平面就是配置和關(guān)閉數(shù)據(jù)平面的軟件部分,這里Consul就起到了控制平面的作用。

Consul的主要特點(diǎn)有以下:

  • 服務(wù)發(fā)現(xiàn)

Consul的客戶端可以注冊(cè)服務(wù),例如api或mysql,客戶端可以使用Consul來(lái)發(fā)現(xiàn)已注冊(cè)的服務(wù)。使用DNS或HTTP,應(yīng)用程序可以輕松找到它們依賴的服務(wù)。

  • 健康檢測(cè)

Consul客戶端可以提供任何數(shù)量的運(yùn)行狀況檢查,這些檢查可以與給定服務(wù)(“ Web服務(wù)器是否返回200 OK”)或本地節(jié)點(diǎn)(“內(nèi)存利用率低于90%”)相關(guān)。你可以使用此信息來(lái)監(jiān)視群集的運(yùn)行狀況,服務(wù)發(fā)現(xiàn)組件可以使用這些信息將流量從不正常的主機(jī)轉(zhuǎn)移走。

  • KV存儲(chǔ)

你應(yīng)用程序可以將Consul的分層 鍵/值 存儲(chǔ)用于多種目的,不限于 動(dòng)態(tài)配置,功能標(biāo)記,協(xié)調(diào),集群leader選舉等等。Consul提供的簡(jiǎn)單HTTP API使其非常易于使用。

  • 安全的服務(wù)通信

Consul可以為服務(wù)生成和分發(fā)TLS證書然后建立相互的TLS連接。意圖 用于定義允許哪些服務(wù)進(jìn)行通信??梢詫?shí)時(shí)更改意圖輕松管理服務(wù)分段,而不使用復(fù)雜的網(wǎng)絡(luò)拓?fù)浜挽o態(tài)防火墻規(guī)則。

  • 多數(shù)據(jù)中心

Consul開箱即用地支持多個(gè)數(shù)據(jù)中心。這意味著Consul的用戶不必?fù)?dān)心會(huì)構(gòu)建其他抽象層以擴(kuò)展到多個(gè)區(qū)域

Consul的設(shè)計(jì)對(duì)DevOps社區(qū)和應(yīng)用程序開發(fā)人員非常友好,使其非常適合現(xiàn)代,靈活的基礎(chǔ)架構(gòu)。

Consul的基本架構(gòu)

Consul是一個(gè)分布式,高度可用系統(tǒng)。本節(jié)將介紹基礎(chǔ)知識(shí),有意省略一些不必要的細(xì)節(jié),可以快速了解Consul的工作方式。

向Consul提供服務(wù)的每個(gè)節(jié)點(diǎn)都運(yùn)行著Consul的代理,當(dāng)用來(lái)發(fā)現(xiàn)服務(wù) 或者 獲取配置的鍵值對(duì)數(shù)據(jù)時(shí),代理可以不需要。代理負(fù)責(zé)節(jié)點(diǎn)上的服務(wù)以及節(jié)點(diǎn)本身的健康檢測(cè)。

代理與一臺(tái)或多臺(tái)Consul服務(wù)器通信。Consul服務(wù)器是存儲(chǔ)和復(fù)制數(shù)據(jù)的地方。服務(wù)器本身選舉一個(gè)領(lǐng)導(dǎo)者。雖然Consul可以在一臺(tái)服務(wù)器上運(yùn)行,但建議3到5個(gè)節(jié)點(diǎn),以避免發(fā)生故障導(dǎo)致數(shù)據(jù)丟失。建議為每個(gè)數(shù)據(jù)中心都使用Consul服務(wù)器集群。

服務(wù)器維護(hù)一個(gè)目錄,該目錄是通過(guò)匯總代理提交的數(shù)據(jù)生成的。該目錄維護(hù)著集群的高級(jí)視圖,包括哪些服務(wù)可用,哪些節(jié)點(diǎn)運(yùn)行這些服務(wù),運(yùn)行狀況信息等等。

需要發(fā)現(xiàn)其他服務(wù)或節(jié)點(diǎn)的基礎(chǔ)組件,可以查詢?nèi)魏蜟onsul服務(wù)器或任何Consul代理。代理將查詢自動(dòng)轉(zhuǎn)發(fā)到服務(wù)器。

每個(gè)數(shù)據(jù)中心運(yùn)行一個(gè)Consul服務(wù)器集群。當(dāng)發(fā)出跨數(shù)據(jù)中心的服務(wù)發(fā)現(xiàn)或配置請(qǐng)求時(shí),本地Consul服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)到遠(yuǎn)程數(shù)據(jù)中心并返回結(jié)果。

Consul的安裝我這里安裝為了環(huán)境方便,采用的是docker的方式,之前也嘗試過(guò)虛擬機(jī),筆記本物理機(jī)等等,都不如用docker安裝方便。

  • 獲取鏡像文件
  1. docker pull consul 

網(wǎng)絡(luò)慢的,可能需要執(zhí)行大約幾分鐘的時(shí)間,可以配置docker鏡像的方式解決,我配置了阿里鏡像

  • 檢查下是否下載完成
  1. ➜  docker images -f 'reference=consul' 
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE 
  3. consul              latest              2823bc69f80f        4 weeks ago         120MB 
  • 啟動(dòng)Consul服務(wù)器
  1. ➜  docker images -f 'reference=consul' 
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE 
  3. consul              latest              2823bc69f80f        4 weeks ago         120MB 

-d: 表示后臺(tái)啟動(dòng)

-p: 表示映射本機(jī)的8500和8600到docker容器的8500和8600/udp端口

最后一行就是consul 啟動(dòng)服務(wù)器的命令

  • 觀察啟動(dòng)日志

因?yàn)閯偛攀呛笈_(tái)啟動(dòng)的,也看不到日志情況,可以通過(guò)下面的方式查看

  1. ➜  docker logs d2806ac2b7e1 // 后面的這個(gè)id就是容器的id,可以通過(guò) docker -ps -l 查看 

看到這樣的日志,說(shuō)明就是啟動(dòng)沒問(wèn)題的

  1. ==> Starting Consul agent... 
  2.            Version: '1.9.1' 
  3.            Node ID: '5cea9bb5-53f2-e71e-1a46-b23f188da307' 
  4.          Node name'server-1' 
  5.         Datacenter: 'dc1' (Segment: '<all>'
  6.             Server: true (Bootstrap: true
  7.        Client Addr: [0.0.0.0] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600) 
  8.       Cluster Addr: 172.17.0.2 (LAN: 8301, WAN: 8302) 
  9.            Encrypt: Gossip: false, TLS-Outgoing: false, TLS 
  10.            .... 
  11.            ==> Consul agent running! 
  12.            .... 

現(xiàn)在服務(wù)端啟動(dòng)了,接下來(lái)應(yīng)該要啟動(dòng)一個(gè)客戶端去連接這個(gè)服務(wù)端,這里有個(gè)問(wèn)題,我怎么知道我啟動(dòng)這個(gè)服務(wù)端的IP地址和端口號(hào),docker提供了可以直接執(zhí)行容器內(nèi)Consul命令的方式。

 

  1.   ➜  docker exec d2806ac2b7e1 consul members 
  2. Node      Address          Status  Type    Build  Protocol  DC   Segment 
  3. server-1  172.17.0.2:8301  alive   server  1.9.1  2         dc1  <all

當(dāng)然你也可以直接進(jìn)去到容器內(nèi)部,進(jìn)去容器內(nèi)部,使用的是exec命令

  1. docker exec -it d2806ac2b7e1 /bin/sh 
  2. //然后執(zhí)行 
  3. consul members 

docker執(zhí)行容器內(nèi)支持的命令方式為:

  1. docker exec <container_id> consul members 

這里發(fā)現(xiàn) 服務(wù)端的地址是172.17.0.2:8301

  • 配置運(yùn)行客戶端
  1. docker run \ 
  2.    --name=test-1 \ 
  3.    consul agent -node=client-1 -join=172.17.0.2 

看到下面的輸出說(shuō)明沒有問(wèn)題,注意這里的name是指的容器參數(shù)

  1. ==> Starting Consul agent... 
  2. ==> Joining cluster... 
  3.     Join completed. Synced with 1 initial agents 
  4. ==> Consul agent running! 
  5.            Version: 'v1.4.4' 
  6.            Node ID: '4b6da3c6-b13f-eba2-2b78-446ffa627633' 
  7.          Node name'client-1' 
  8.         Datacenter: 'dc1' (Segment: ''
  9.             Server: false (Bootstrap: false
  10.        Client Addr: [127.0.0.1] (HTTP: 8500, HTTPS: -1, gRPC: -1, DNS: 8600) 
  11.       Cluster Addr: 172.17.0.4 (LAN: 8301, WAN: 8302) 
  12.            Encrypt: Gossip: false, TLS-Outgoing: false, TLS-Incoming: false 

通過(guò)再次在容器中執(zhí)行consul Members命令來(lái)檢查客戶端是否已加入

  1. docker exec d2806ac2b7e1 consul members 

發(fā)現(xiàn)已經(jīng)變成兩個(gè)了,并且狀態(tài)都是可用狀態(tài)

  1.  docker exec d2806ac2b7e1 consul members 
  2. Node      Address          Status  Type    Build  Protocol  DC   Segment 
  3. server-1  172.17.0.2:8301  alive   server  1.9.1  2         dc1  <all
  4. client-1  172.17.0.3:8301  alive   client  1.9.1  2         dc1  <default

現(xiàn)在有了一個(gè)小的數(shù)據(jù)中心,就可以注冊(cè)服務(wù)或者配置數(shù)據(jù)玩了。

其實(shí),查看數(shù)據(jù)中心的方式,還可以通過(guò)web的方式來(lái)查看,Consul默認(rèn)的http接口是8500端口,這個(gè)端口啟動(dòng)的ui接口,可以方便的管理配置數(shù)據(jù)中心。打開如圖,點(diǎn)擊NODES 查看節(jié)點(diǎn)

 

點(diǎn)擊節(jié)點(diǎn),右邊可以看到節(jié)點(diǎn)的健康狀態(tài),代理是否可用等

 

總結(jié)

到這里,先簡(jiǎn)單了解了Consul,然后熟悉了Consul的簡(jiǎn)單架構(gòu),隨后在docker里面就方便的搭建了一個(gè)簡(jiǎn)單的Consul集群,并且都是可用狀態(tài)。

本文轉(zhuǎn)載自微信公眾號(hào)「碼小菜」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系碼小菜公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 碼小菜
相關(guān)推薦

2021-01-27 05:44:00

Consul術(shù)語(yǔ)命令

2022-12-15 17:31:41

架構(gòu)龍芯

2011-12-20 15:52:03

PhoneGap架構(gòu)基礎(chǔ)工作原理

2019-11-06 10:55:32

虛擬化VMware vSph架構(gòu)

2011-03-02 17:17:36

FireFTP安裝

2021-09-04 00:03:30

AMDCPU架構(gòu)

2023-06-02 08:33:43

微服務(wù)架構(gòu)服務(wù)注冊(cè)

2020-12-24 07:29:32

云計(jì)算云基礎(chǔ)云原生DevOps

2010-11-01 06:43:21

PowerShell

2011-03-29 15:52:38

Cacti配置

2012-07-23 16:18:52

Linux集群HPC架構(gòu)

2011-05-31 14:03:13

2022-01-26 09:36:53

Consul語(yǔ)言微服務(wù)

2021-09-17 13:29:43

開發(fā)技能代碼

2010-11-24 11:23:02

虛擬基礎(chǔ)架構(gòu)遷移

2023-05-12 07:52:13

架構(gòu)設(shè)計(jì)設(shè)計(jì)原則

2018-04-28 09:20:19

DASNASSAN

2022-05-27 08:01:36

JVM內(nèi)存收集器

2010-06-13 17:19:42

Cacti配置

2022-04-09 14:45:02

微服務(wù)常見概念Spring
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)