1. 程式人生 > >8分鐘學會Consul叢集搭建及微服務概念

8分鐘學會Consul叢集搭建及微服務概念

Consul介紹:

Consul 是由 HashiCorp 公司推出的開源軟體,用於實現分散式系統的服務發現與配置。與其他分散式服務註冊與發現的方案,Consul 的方案更“一站式”,內建了服務註冊與發現框 架、分佈一致性協議實現、健康檢查、Key/Value 儲存、多資料中心方案,不再需要依賴其他工具(比如 ZooKeeper 等),使用起來也較為簡單。

Consul的如何實現的?

Consul 用 Golang 實現,因此具有天然可移植性(支援 Linux、windows 和 Mac OS X ),它的安裝包僅包含一個可執行檔案,方便部署,與 Docker 等輕量級容器可無縫配合。

微服務概念:

640?wx_fmt=png

微服務是一種架構風格,一個大型複雜軟體應用由一個或多個微服務組成。系統中的各個微服務可被獨立部署,各個微服務之間是鬆耦合的。每個微服務僅關注於完成一件任務並很好地完成該任務。在所有情況下,每個任務代表著一個小的業務能力。

儘管“微服務”這種架構風格沒有精確的定義,但其具有一些共同的特性,如圍繞業務能力組織服務、自動化部署、智慧端點、對語言及資料的“去集中化”控制等等。簡而言之,微服務架構風格是一種將單個應用程式開發為一套小型服務的方法,每個小型服務都在自己的流程中執行,並與輕量級機制(通常是HTTP資源API)進行通訊。這些服務圍繞業務功能構建,可通過全自動部署機制獨立部署。這些服務至少集中管理,可以用不同的程式語言編寫,並使用不同的資料儲存技術。

 Consul的安裝與配置

我們需要去下載Consul ,下載很簡單,直接去:https://www.consul.io/downloads.html 選擇對應的平臺即可,如果你的是Mac OS x 那麼直接雙擊那個可執行檔案即可,我的平臺是windows10 ,那麼相對於MacOsX是比較困難的,即配置環境變數,將檔案的位置放到你的path中就可以了,其目的就是為了在Cmd終端中能夠鍵入執行Consul命令,如果你的環境變數已經配置成功,請在Cmd中敲擊consul,如果結果如下,那麼恭喜您,你成功進入Consul大門。

640?wx_fmt=png

 名詞解釋

Client : Consul 的 Client模式,就是客戶端模式。是 Consul 節點的一種模式,這種模式下,所有註冊到當前節點的服務會被轉發到 Server,本身是不持久化這些資訊。


Server :Consul 的 Server 模式,表明這個 Consul 是個 Server ,這種模式下,功能和 Client 都一樣,唯一不同的是,它會把所有的資訊持久化的本地,這樣遇到故障,資訊是可以被保留的。
Server-Leader:  Server 是它們的老大,它和其它 Server 不一樣的一點是,它需要負責同步註冊的資訊給其它的 Server ,同時也要負責各個節點的健康監測。
raft: Server 節點之間的資料一致性保證協議使用的是 raft,而 zookeeper 用的 paxos,etcd採用的也是raft
服務發現協議:Consul 採用 http 和 DNS 協議,etcd 只支援 http 。
服務註冊:Consul 支援兩種方式實現服務註冊,一種是通過 Consul 的服務註冊 Http API,由服務自己呼叫 API 實現註冊,另一種方式是通過 json 格式的配置檔案實現註冊,將需要註冊的服務以 json 格式的配置檔案給出。Consul 官方建議使用第二種方式。

啟動Consul

如果是在單機情況下使用開發模式啟動,在終端中輸入:

1

~ » consul agent -dev

開啟Consul 叢集

首先建立Server-Leader,即老大,那麼在終端上輸入以下命令:

640?wx_fmt=png

consul agent -server 表示以伺服器模式啟動代理。其中:

-bootstrap-expect=2 表示節點個數為2個。
-node=consul-server-1 表示節點名稱
-client=0.0.0.0 表示客戶端 IP
-bind=10.211.55.2 表示服務端 IP
-datacenter=dc1 資料中心名稱

需要注意的是,如果你啟動的Server模式的話,你一定要注意node名不要相同,否則將會替換你的項。

那麼Server-Leader已經建立了,需要別的伺服器去進行連線了,如果是Server模式,輸入以下命令,只不過是拼接了-join id.

640?wx_fmt=png

  • -data-dir=/tmp/consul 表示臨時資料儲存路徑

  • -join 10.211.55.2 表示加入 10.211.55.2 所在的叢集

這個時候如果出現Consul agent Running!!還有一大堆東西。那麼說明你已經叢集成功了,你可以去自己的通過Consul提供的UI去看節點狀況,地址為 你自己的id+8500埠,即192.168.10.6:8500或者你的子節點均可,但是如果說你的節點個數是4個,你還有幾個節點沒有放上去,那麼UI是出不來了(有可能會報500錯)。

那麼除了UI檢視節點以外,還可以通過終端輸入指令來檢視我們的節點狀態。

1

consul members

如果我們希望得到更為詳細的資訊,可以使用指令來檢視

1

consul operator raft list-peers

如果說你沒有伺服器叢集,那麼輸入以上命令就會出現以下結果:

640?wx_fmt=png

 建立.NET Core API 並註冊服務

如果你的 Consul Cluster 已經搭建完成,那麼可以接下來建立一個.NET Core API 來實現服務的註冊。

我們建立一個空的解決方案,新增解決方案資料夾 “服務註冊”,建立Api專案。

640?wx_fmt=png

 

修改啟動配置檔案

在launchSettings.json中修改啟動ip和埠。

640?wx_fmt=png

新增健康檢查控制器

在專案中新增一個名為  HealthController 的 API 控制器,用於在將服務註冊到 Consul 後的健康檢查。

640?wx_fmt=png

在專案中新增Consul,或者鍵入命令,這當然,由你選擇。

640?wx_fmt=png

註冊Consul中介軟體,修改Startup.cs檔案,這裡使用的是 Consul 的服務註冊 Http API。

640?wx_fmt=png

640?wx_fmt=png

 完成後,啟動專案,此時已成功註冊。

原文地址:https://www.cnblogs.com/ZaraNet/p/10123291.html


.NET社群新聞,深度好文,歡迎訪問公眾號文章彙總 http://www.csharpkit.com

640?wx_fmt=jpeg