日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Consul入门04 - Consul集群

發(fā)布時(shí)間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Consul入门04 - Consul集群 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我們已經(jīng)啟動(dòng)了我們的第一個(gè)代理并且在這個(gè)代理上注冊(cè)和查詢了服務(wù)。這些顯示了使用Consul是多么的容易但是并沒(méi)有展示Consul的可擴(kuò)展性以及可用于產(chǎn)品級(jí)別的服務(wù)發(fā)現(xiàn)的基礎(chǔ)設(shè)施。在本篇向?qū)е?#xff0c;我們將建立我們第一個(gè)多成員的真實(shí)的集群。

當(dāng)一個(gè)Consul代理啟動(dòng)后,它對(duì)任何其他的節(jié)點(diǎn)都一無(wú)所知:它是個(gè)單獨(dú)的隔離集群。為了讓它感知其他的集群成員,代理必須加入一個(gè)現(xiàn)有的集群中去。為了加入一個(gè)現(xiàn)有的集群,它只需要知道一個(gè)單個(gè)的現(xiàn)有成員。它加入后,代理將廣播該成員,并且快速發(fā)現(xiàn)集群中的其它成員。一個(gè)Consul代理能夠加入任何其它的代理,不僅僅是那些運(yùn)行在服務(wù)模式下的代理。

啟動(dòng)代理

為了模擬一個(gè)相對(duì)真實(shí)的集群,我們將通過(guò)Vagrant啟動(dòng)兩個(gè)節(jié)點(diǎn)的集群。接下來(lái)使用的Vagrantfile可以在Consul倉(cāng)庫(kù)demo中找到。

我們首先啟動(dòng)兩個(gè)節(jié)點(diǎn):

$ vagrant up

一旦該系統(tǒng)可用了,我們就能通過(guò)ssh登錄到該系統(tǒng),并開(kāi)始配置我們的集群。我們開(kāi)始登錄到第一個(gè)節(jié)點(diǎn):

$ vagrant ssh n1

在我們以前的例子里,我們使用 *-dev?標(biāo)志來(lái)快速地設(shè)置一個(gè)開(kāi)發(fā)服務(wù)器。無(wú)論如何它并不能用于一個(gè)集群的環(huán)境下。我們將移除?-dev* 標(biāo)志,而是替換成指定的用于集群的標(biāo)志,下面就回涉及該標(biāo)志。

每個(gè)集群節(jié)點(diǎn)都必須有一個(gè)唯一的名稱(chēng)。默認(rèn)下Consul使用計(jì)算機(jī)的主機(jī)名,不過(guò)我們可以使用?-node?命令行選項(xiàng)手動(dòng)地覆蓋它。

我們也可以指定?綁定地址:Consul將在該地址偵聽(tīng),并且改地址可以被集群中所有其它的節(jié)點(diǎn)訪問(wèn)到。雖然一個(gè)?綁定?的地址不是一個(gè)嚴(yán)格需要的(Consul將默認(rèn)偵聽(tīng)在系統(tǒng)中第一個(gè)私有的IP),不過(guò)最好提供一個(gè)。一個(gè)生產(chǎn)環(huán)境下的服務(wù)通常有多個(gè)網(wǎng)絡(luò)接口,所以指定一個(gè)?綁定?地址將保證你不會(huì)把Consul綁定到錯(cuò)誤的網(wǎng)絡(luò)接口上。

第一個(gè)節(jié)點(diǎn)現(xiàn)在將作為我們集群中的唯一服務(wù)器,我們指定它運(yùn)行在server模式下。

-bootstrap-expect?標(biāo)志暗示Consul服務(wù)器我們會(huì)有其它的服務(wù)節(jié)點(diǎn)將會(huì)加入。這個(gè)標(biāo)志的目的是延遲復(fù)制日志的引導(dǎo)直到預(yù)期的服務(wù)節(jié)點(diǎn)成功加入。你可以在引導(dǎo)教程里查閱到更多的信息。

最后,我們?cè)黾?config-dir,指定將在哪里可以找到服務(wù)以及檢查定義。

所有的標(biāo)志都指定后,將這些設(shè)置加入?consul ageng?命令行:

vagrant@n1:~$ consul agent -server -bootstrap-expect 1 \-data-dir /tmp/consul -node=agent-one -bind=172.20.20.10 \-config-dir /etc/consul.d ...

現(xiàn)在,在另一終端里,我們連接到第二個(gè)節(jié)點(diǎn):

$ vagrant ssh n2

這次,我們?cè)O(shè)置?綁定地址?是第二個(gè)節(jié)點(diǎn)的IP地址。因?yàn)樵摴?jié)點(diǎn)將不會(huì)是一個(gè)Consul的服務(wù)器,所以我們不指定它啟動(dòng)為服務(wù)器模式。

所有的標(biāo)志都指定后,將這些設(shè)置加入?consul ageng?命令行:

vagrant@n2:~$ consul agent -data-dir /tmp/consul -node=agent-two \-bind=172.20.20.11 -config-dir /etc/consul.d ...

這時(shí),我們已經(jīng)有了兩個(gè)Consul代理在運(yùn)行:一個(gè)服務(wù)器和一個(gè)客戶端。這兩個(gè)Consul代理現(xiàn)在還對(duì)彼此沒(méi)有任何感知,它們都為兩個(gè)單節(jié)點(diǎn)的集群。你可以運(yùn)行?consul members?來(lái)驗(yàn)證它們,每個(gè)集群都僅包含一個(gè)成員。

加入集群

現(xiàn)在,我們將告知第一個(gè)代理加入第二個(gè)代理,在一個(gè)新的終端中運(yùn)行下列命令:

$ vagrant ssh n1 ... vagrant@n1:~$ consul join 172.20.20.11 Successfully joined cluster by contacting 1 nodes.

你應(yīng)該可以在各自的代理日志中看到一些日志的輸出。如果你仔細(xì)的查看,你將會(huì)看到有節(jié)點(diǎn)加入的日志信息。如果你再次運(yùn)行?consul members,你會(huì)看到兩個(gè)代理都已經(jīng)感知到了另一個(gè)節(jié)點(diǎn)的存在。

vagrant@n2:~$ consul members Node Address Status Type Build Protocol agent-two 172.20.20.11:8301 alive client 0.5.0 2 agent-one 172.20.20.10:8301 alive server 0.5.0 2

記住:為了加入一個(gè)集群,一個(gè)Consul代理只需要知道一個(gè)現(xiàn)有的成員。在加入指定的集群后,各個(gè)代理會(huì)互相傳播完整的成員信息。

啟動(dòng)時(shí)自動(dòng)加入一個(gè)集群

理想情況下,無(wú)論什么時(shí)候一個(gè)新的節(jié)點(diǎn)加入了你的數(shù)據(jù)中心中,它應(yīng)該自動(dòng)地加入Consul集群而無(wú)需手動(dòng)操作。為了達(dá)到這個(gè)目的,你可以使用Atlas by HashiCorp并且指定?-atlas-join?標(biāo)志。下面就是一個(gè)配置例子:

$ consul agent -atlas-join \-atlas=ATLAS_USERNAME/infrastructure \-atlas-token="YOUR_ATLAS_TOKEN"

這需要一個(gè)Atlas的用戶名和token,在這里創(chuàng)建帳號(hào),然后在你的Consul配置中使用你認(rèn)證信息的替換各自的值。現(xiàn)在,無(wú)論何時(shí)一個(gè)通過(guò)Consul代理啟動(dòng)的節(jié)點(diǎn)加入,它將自動(dòng)加入你的Consul集群而無(wú)需硬編碼任何的配置信息。

另一個(gè)可以選擇的是,你可以在啟動(dòng)的時(shí)候使用?-join?標(biāo)志或者?start_join?指定一個(gè)已知Consul代理的地址來(lái)加入一個(gè)集群。

查詢節(jié)點(diǎn)

就像查詢服務(wù)一樣,Consul有一個(gè)API用戶查詢節(jié)點(diǎn)信息。你可以通過(guò)DNS或者HTTP API來(lái)查詢。

對(duì)于DNS API,名稱(chēng)結(jié)構(gòu)是?NAME.node.consul?或者?NAME.node.DATACENTER.consul。 如果數(shù)據(jù)中心被移除,Consul將僅僅查詢本地?cái)?shù)據(jù)中心。

例如,從“agent-one”,我們可以查詢節(jié)點(diǎn)"agent-two"的地址:

vagrant@n1:~$ dig @127.0.0.1 -p 8600 agent-two.node.consul ...;; QUESTION SECTION: ;agent-two.node.consul. IN A;; ANSWER SECTION: agent-two.node.consul. 0 IN A 172.20.20.11

這種查找節(jié)點(diǎn)的能力對(duì)于系統(tǒng)管理任務(wù)而言是非常有用的。例如知道了節(jié)點(diǎn)的地址,我們可以使用ssh登錄到該節(jié)點(diǎn)并且可以非常容易地使得該節(jié)點(diǎn)成為Consul集群中的一部分并且查詢它。

離開(kāi)集群

為了離開(kāi)指定的集群,你可以優(yōu)雅地退出一個(gè)代理(使用?Ctrl-C)或者強(qiáng)制殺死代理進(jìn)程。優(yōu)雅地離開(kāi)可以使得節(jié)點(diǎn)轉(zhuǎn)換成離開(kāi)狀態(tài);其它情況下,其它的節(jié)點(diǎn)檢測(cè)這個(gè)節(jié)點(diǎn)將失敗。其不同的地方在這里有詳細(xì)的描述。

下一步

現(xiàn)在有了一個(gè)多節(jié)點(diǎn)的Consul集群已經(jīng)啟動(dòng)并且運(yùn)行著。讓我們通過(guò)[健康檢測(cè)]()使我們的服務(wù)具有更強(qiáng)的魯棒性。

總結(jié)

以上是生活随笔為你收集整理的Consul入门04 - Consul集群的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。