欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

.Net Core服務(wù)治理Consul搭建集群

 更新時間:2022年01月06日 11:32:02   作者:老馬-Max  
這篇文章介紹了.Net Core使用服務(wù)治理Consul搭建集群的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

延續(xù)上一篇的話題繼續(xù),順便放上一篇的傳送門:點這里

集群的必要性

consul本身就是管理集群的,現(xiàn)在還需要給consul搞個集群,這是為啥?因為consul單點也容易掛?。∪f一管理集群的consul掛掉了,那么相當(dāng)于上下游應(yīng)用都變成了瞎子,看不到也調(diào)不到。所以集群的必要性不用我說了吧?

Server & Client

生產(chǎn)環(huán)境下,可以選擇上面兩種模式,下面我就簡稱S端、C端。說說它倆有啥不一樣:

S端:

  • 1、數(shù)量不宜過多,一般推薦3、5個,要求是奇數(shù)。
  • 2、持久化保存節(jié)點數(shù)據(jù)。
  • 3、多個S端之間是主從關(guān)系(Leader/Follower),Leader要額外負(fù)責(zé)監(jiān)控各節(jié)點的健康并且同步給Follower。

C端:

  • 1、數(shù)量沒限制。
  • 2、不保存節(jié)點數(shù)據(jù)。

相同點就是S端、C端都可以注冊、查詢。

Leader & Follower

這模式我簡稱主從好了,它只針對S端。Leader是根據(jù)Raft算法自動選舉得出的,不用手動指定,所有的Follower接到信息以后,都要提交給Leader,然后Leader同步給其他的Follower。并且Leader要一直發(fā)心跳給所有的Follower證明“我還活著”,否則其他的Follower之間就要再選舉出一個新的Leader了。這就導(dǎo)致S端最好不要擴(kuò)展太多,否則你會懷疑人生。至于為什么要求S端數(shù)量是奇數(shù),其實很好理解,偶數(shù)容易影響選舉結(jié)果導(dǎo)致效率變低,比如兩票對兩票,誰來當(dāng)Leader?其實去了解一下Raft算法就知道這里的主從怎么運行的,什么原理。我上個神器:戳這里,不用謝我。

S端

老規(guī)矩,還是用docker。先跑三個起來:

docker run -d --restart=always --name=server1 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302/udp -p 8302:8302 -p 8400:8400 -p 8500:8500 -p 8600:8600 -h server1 consul agent -server -bind=0.0.0.0 -bootstrap-expect=3 -node=server1 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

docker run -d --restart=always --name=server2 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 9300:8300 -p 9301:8301 -p 9301:8301/udp -p 9302:8302/udp -p 9302:8302 -p 9400:8400 -p 9500:8500 -p 9600:8600 -h server2 consul agent -server -bind=0.0.0.0 -join=你服務(wù)器的IP -node=server2 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

docker run -d --restart=always --name=server3 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 10300:8300 -p 10301:8301 -p 10301:8301/udp -p 10302:8302/udp -p 10302:8302 -p 10400:8400 -p 10500:8500 -p 10600:8600 -h server3 consul agent -server -bind=0.0.0.0 -join=你服務(wù)器的IP -node=server3 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

bootstrap-expect:集群所需S端的最小數(shù)量,低于這個數(shù)量無法選舉出leader。

join:加入到哪個集群,需要目標(biāo)服務(wù)器放通tcp8301端口,否則會出現(xiàn)這種情況

可以語句查看主從關(guān)系:

docker exec -t server1 consul operator raft list-peers

也可以直接進(jìn)入頁面查看主從關(guān)系,結(jié)果一樣:

把現(xiàn)在的leader干掉的話,會自動選舉一個新的leader出來:

server3成為了新的leader,而且只要它不掛,leader身份是不會轉(zhuǎn)移的。比如我把server1啟動以后,leader沒有轉(zhuǎn)移過去:

OK,現(xiàn)在S端已經(jīng)是集群了,而且它們之間的數(shù)據(jù)都是互通共存的。驗證一下:

server1新增鍵值,key=shenzhenma,value=hellow:

server2查看:

server3修改value=hellow world以后,server1查看:

C端

現(xiàn)在再來啟動客戶端:

docker run -d --restart=always --name=client1 -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt":true}' -p 11300:8300 -p 11301:8301 -p 11301:8301/udp -p 11302:8302/udp -p 11302:8302 -p 11400:8400 -p 11500:8500 -p 11600:8600 -h client1 consul agent -bind=0.0.0.0 -retry-join=你服務(wù)器的IP -node=client1 -data-dir=/tmp/data-dir -client 0.0.0.0 -ui

想要多個客戶端的話,改一下端口和名字就可以了,我這里跑了3個,如圖:

和剛才的3個S端一起,這6個都是一體的,數(shù)據(jù)都會自動同步,任意節(jié)點注冊修改數(shù)據(jù)都會在其他節(jié)點看到。

入口統(tǒng)一

我把集群弄好了,但是現(xiàn)在的集群還沒有發(fā)揮作用。前幾篇文章有講服務(wù)注冊,consul注冊的時候需要一個固定的地址。集群有很多節(jié)點,每一個IP端口都不一樣,如果下端只和其中一個節(jié)點產(chǎn)生聯(lián)系,萬一這個節(jié)點掛了,下端就失去consul的支持了,集群的作用也沒發(fā)揮出來。所以給下端一個統(tǒng)一的入口是必要的,這里用Nginx的Upstream模式實現(xiàn),修改下配置文件就行了:

upstream myconsul {
    server 42.XX.XX.64:8500;
    server 42.XX.XX.64:9500; 
    server 42.XX.XX.64:10500;
    server 42.XX.XX.64:11500;
    server 42.XX.XX.64:12500;
    server 42.XX.XX.64:13500;
} 

server{
    listen       88;
    server_name  localhost;
    location / {
        proxy_pass http://myconsul;
    }
}

配置文件修改好重啟一下,進(jìn)去看看能不能訪問:

OK,下端注冊服務(wù)時,統(tǒng)一用這個地址就可以了。跑兩個試試(下端代碼就不發(fā)了,前面幾篇文章有):

成功了!切換到其他consul節(jié)點看下能否正確展示:

很顯然是OK的?;谖抑盀榉?wù)配置的健康檢查,最后來看下服務(wù)狀態(tài)變化會不會同步給其他節(jié)點,比如我停掉其中一個:

變更的狀態(tài)也很快同步到了其他節(jié)點。到這里為止,consul的集群就已經(jīng)實現(xiàn)了,東西還是有點多的,如果實踐遇到麻煩,歡迎討論。

到此這篇關(guān)于.Net Core服務(wù)治理Consul搭建集群的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論