Consul入門05 健康檢測

2021-07-14 02:23:04 字數 1708 閱讀 7829

我們已經看到了執行consul,增加節點和服務,以及查詢這些賤點和服務是多麼地簡單。在這篇教程中,我們將繼續增加對節點和服務健康監測的教程。健康監測對服務發現是乙個關鍵的元件,它避免使用不健康的服務。

本篇的步驟基於前一篇 consul集群,這裡你應該執行有兩個節點的集群。

類似於服務,可以通過乙個 檢測定義或者通過呼叫http api來註冊乙個檢測。

我們將使用檢測定義的方法,因為就像服務一樣,使用定義是乙個最為常用的方法來設定檢測。

在第二個節點的consul配置目錄中建立兩個定義檔案:

vagrant@n2:~$ echo

'}' \

>/etc/consul.d/ping.json

vagrant@n2:~$ echo

'}}' \

>/etc/consul.d/web.json

第乙個定義增加了乙個主機級別的檢測,名為"ping"。該檢測每30秒間隔執行一次,呼叫命令 ping -c1 google.com。在乙個基於指令碼的健康檢測中,該檢測使用啟動consul程序的使用者來啟動該檢測。如果檢測命令返回乙個非0的返回碼,那麼該節點將被標記為不健康。這就是任何基於 指令碼 的健康檢測的契約。

第二個命令修改名為 web 的服務,增加了乙個檢測,該檢測每10秒用curl傳送乙個請求來驗證該web服務是否可用。就像基於主機的健康檢測,如果指令碼返回乙個非0的返回碼,那該服務將被標記為不健康。

現在重啟第二個**或者向它傳送乙個 sighup 訊號。你會看到下列日誌資訊:

==> starting consul agent...

... [info] agent: synced service 'web'

[info] agent: synced check 'service:web'

[info] agent: synced check 'ping'

[warn] check 'service:web' is now critical

前面的幾行指出該**已經同步了新的定義。後面的幾行指出了被檢測的 web 服務被標記為危險。這是因為我們還沒有實際執行乙個web伺服器,所以這個curl測試標記為失敗了。

現在我們已經增加了一些檢測,我們可以使用http api來審查它們。首先,我們可以使用命令尋找任何失敗的檢測(注意,這個命了可以在任何節點上執行):

我們可以看到現在只有乙個檢測,那是我們的 web 服務的檢測,它被設定為危險狀態。

另外,我們可以嘗試使用dns查詢web服務。consul不會返回任何結果因為該服務是不健康的:

dig @127.0.0.1 -p 8600 web.service.consul

...;; question section:

;web.service.consul. in a

在本篇教程中,你學會了增加健康檢測是非常容易。通過更新配置檔案並且傳送乙個 sighup 訊號給**來更新檢測定義。還可以選擇使用http api來動態地增加,刪除,以及修改檢測。該api也可以用於乙個"dead man's switch",乙個ttl-based check。ttl檢測可以被用於乙個應用程式和consul是緊密整合的,使得業務邏輯評估是基於健康檢測的一部分。

Consul入門05 健康檢測

我們已經看到了執行consul,增加節點和服務,以及查詢這些賤點和服務是多麼地簡單。在這篇教程中,我們將繼續增加對節點和服務健康監測的教程。健康監測對服務發現是乙個關鍵的元件,它避免使用不健康的服務。本篇的步驟基於前一篇 consul集群,這裡你應該執行有兩個節點的集群。類似於服務,可以通過乙個 檢...

lvs ldirectord 實現健康檢測

rhel6.5 selinux and iptables disabled load balance 172.25.79.1 server1 virtual ip 172.25.79.100 gateway 172.25.79.1 realrerver1 172.25.79.2 server2 re...

Consul入門及技術指南

參考 服務發現 consul 的介紹 部署和使用 consul 使用手冊 基於docker的consul服務發現集群搭建 為什麼要使用consul這要從目前流行的微服務談起,微服務的概念及應用可以網上搜尋 很多 consul主要用來做分布式應用的微服務架構中服務註冊及發現功能的軟體工具。微服務中提供...