Consul入门05 - 健康检测
我們已經(jīng)看到了運(yùn)行Consul,增加節(jié)點(diǎn)和服務(wù),以及查詢這些賤點(diǎn)和服務(wù)是多么地簡(jiǎn)單。在這篇教程中,我們將繼續(xù)增加對(duì)節(jié)點(diǎn)和服務(wù)健康監(jiān)測(cè)的教程。健康監(jiān)測(cè)對(duì)服務(wù)發(fā)現(xiàn)是一個(gè)關(guān)鍵的組件,它避免使用不健康的服務(wù)。
本篇的步驟基于前一篇?Consul集群,這里你應(yīng)該運(yùn)行有兩個(gè)節(jié)點(diǎn)的集群。
定義檢測(cè)
類似于服務(wù),可以通過一個(gè)?檢測(cè)定義或者通過調(diào)用HTTP API來注冊(cè)一個(gè)檢測(cè)。
我們將使用檢測(cè)定義的方法,因?yàn)榫拖穹?wù)一樣,使用定義是一個(gè)最為常用的方法來設(shè)置檢測(cè)。
在第二個(gè)節(jié)點(diǎn)的Consul配置目錄中創(chuàng)建兩個(gè)定義文件:
vagrant@n2:~$ echo '{"check": {"name": "ping","script": "ping -c1 google.com >/dev/null", "interval": "30s"}}' \>/etc/consul.d/ping.jsonvagrant@n2:~$ echo '{"service": {"name": "web", "tags": ["rails"], "port": 80,"check": {"script": "curl localhost >/dev/null 2>&1", "interval": "10s"}}}' \>/etc/consul.d/web.json第一個(gè)定義增加了一個(gè)主機(jī)級(jí)別的檢測(cè),名為"ping"。該檢測(cè)每30秒間隔運(yùn)行一次,調(diào)用命令?ping -c1 google.com。在一個(gè)基于腳本的健康檢測(cè)中,該檢測(cè)使用啟動(dòng)Consul進(jìn)程的用戶來啟動(dòng)該檢測(cè)。如果檢測(cè)命令返回一個(gè)非0的返回碼,那么該節(jié)點(diǎn)將被標(biāo)記為不健康。這就是任何基于?腳本?的健康檢測(cè)的契約。
第二個(gè)命令修改名為?web?的服務(wù),增加了一個(gè)檢測(cè),該檢測(cè)每10秒用curl發(fā)送一個(gè)請(qǐng)求來驗(yàn)證該web服務(wù)是否可用。就像基于主機(jī)的健康檢測(cè),如果腳本返回一個(gè)非0的返回碼,那該服務(wù)將被標(biāo)記為不健康。
現(xiàn)在重啟第二個(gè)代理或者向它發(fā)送一個(gè)?SIGHUP?信號(hào)。你會(huì)看到下列日志信息:
==> 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前面的幾行指出該代理已經(jīng)同步了新的定義。后面的幾行指出了被檢測(cè)的?web?服務(wù)被標(biāo)記為危險(xiǎn)。這是因?yàn)槲覀冞€沒有實(shí)際運(yùn)行一個(gè)web服務(wù)器,所以這個(gè)curl測(cè)試標(biāo)記為失敗了。
檢測(cè)健康狀態(tài)
現(xiàn)在我們已經(jīng)增加了一些檢測(cè),我們可以使用HTTP API來審查它們。首先,我們可以使用命令尋找任何失敗的檢測(cè)(注意,這個(gè)命了可以在任何節(jié)點(diǎn)上運(yùn)行):
vagrant@n1:~$ curl http://localhost:8500/v1/health/state/critical [{"Node":"agent-two","CheckID":"service:web","Name":"Service 'web' check","Status":"critical","Notes":"","ServiceID":"web","ServiceName":"web"}]我們可以看到現(xiàn)在只有一個(gè)檢測(cè),那是我們的?web?服務(wù)的檢測(cè),它被設(shè)置為危險(xiǎn)狀態(tài)。
另外,我們可以嘗試使用DNS查詢web服務(wù)。Consul不會(huì)返回任何結(jié)果因?yàn)樵摲?wù)是不健康的:
dig @127.0.0.1 -p 8600 web.service.consul ...;; QUESTION SECTION: ;web.service.consul. IN A下一步
在本篇教程中,你學(xué)會(huì)了增加健康檢測(cè)是非常容易。通過更新配置文件并且發(fā)送一個(gè)?SIGHUP?信號(hào)給代理來更新檢測(cè)定義。還可以選擇使用HTTP API來動(dòng)態(tài)地增加,刪除,以及修改檢測(cè)。該API也可以用于一個(gè)"dead man's switch",一個(gè)TTL-based check。TTL檢測(cè)可以被用于一個(gè)應(yīng)用程序和Consul是緊密集成的,使得業(yè)務(wù)邏輯評(píng)估是基于健康檢測(cè)的一部分。
接下來,我們將瀏覽[Consul的鍵/值存儲(chǔ)]()。
總結(jié)
以上是生活随笔為你收集整理的Consul入门05 - 健康检测的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Consul入门04 - Consul集
- 下一篇: Consul入门06 - 键/值对数据