2016-06-13 33 views
1

正在使用gliderlabs /註冊者容器運行progrium/consul容器。我正在嘗試創建運行狀況檢查,以監視泊塢窗容器是打開還是關閉。不過,我注意到一些非常奇怪的活動,並且能夠進行健康檢查。下面是我用來創建健康檢查的命令:運行領事碼頭健康檢查的問題

curl -v -X PUT http://$CONSUL_IP_ADDR:8500/v1/agent/check/register -d @/home/myUserName/health.json 

這裏是我的health.json文件:

{ 
"id": "docker_stuff", 
"name": "echo test", 
"docker_container_id": "4fc5b1296c99", 
"shell": "/bin/bash", 
"script": "echo hello", 
"interval": "2s" 
} 

首先,我注意到,這個檢查將自動刪除服務時,容器被停止正確的,但是當容器被不正確地停止時(即在節點失效時)什麼也不做。

第二,我注意到docker_container_id根本就沒有問題,這個運行狀況檢查將自己附加到它所連接的領事節點上運行的每個容器。

我想只對運行在consul節點上的每個docker容器都運行tcp或http運行狀況測試(是的,我知道我的上面的json文件運行腳本,我剛剛創建了一個跟在文檔示例後面的腳本)。我只想讓領事能夠判斷一個容器是停止還是運行。我不希望我的服務在健康檢查失敗時自行刪除。我將如何做到這一點。

注意:我發現代理健康檢查的領事documentation非常缺乏,模糊和不準確。所以請不要只是鏈接到它,並告訴我去閱讀它。我正在尋找關於如何正確設置碼頭健康檢查的完整說明。

更新:下面是如何與官方領事容器的最新版本開始領事服務器(現在它的開發版本,很快就生病的生產版本更新):

#bootstrap server 
docker run -d \ 
-p 8300:8300 \ 
-p 8301:8301 \ 
-p 8301:8301/udp \ 
-p 8302:8302 \ 
-p 8302:8302/udp \ 
-p 8400:8400 \ 
-p 8500:8500 \ 
-p 53:53/udp \ 
--name=dev-consul0 consul agent -dev -ui -client 0.0.0.0 

#its IP address will then be the IP of the host machine 
#lets say its 172.17.0.2 

#start the other two consul servers, without web ui 
docker run -d --name --name=dev-consul1 \ 
-p 8300:8300 \ 
-p 8301:8301 \ 
-p 8301:8301/udp \ 
-p 8302:8302 \ 
-p 8302:8302/udp \ 
-p 8400:8400 \ 
-p 8500:8500 \ 
-p 53:53/udp \ 
consul agent -dev -join=172.17.0.2 

docker run -d --name --name=dev-consul2 \ 
-p 8300:8300 \ 
-p 8301:8301 \ 
-p 8301:8301/udp \ 
-p 8302:8302 \ 
-p 8302:8302/udp \ 
-p 8400:8400 \ 
-p 8500:8500 \ 
-p 53:53/udp \ 
consul agent -dev -join=172.17.0.2 

# then heres your clients 
docker run -d --net=host --name=client0 \ 
-e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' \ 
consul agent -bind=$(hostname -i) -retry-join=172.17.0.2 

https://hub.docker.com/r/library/consul/

回答

0

因此,使用領事容器的任何版本圍繞着一個解決方案是在主機上只安裝直接領事。這可以通過以下步驟從https://sonnguyen.ws/install-consul-and-consul-template-in-ubuntu-14-04/來完成:

sudo apt-get update -y 
sudo apt-get install -y unzip curl 
sudo wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip 

sudo unzip consul_0.6.4_linux_amd64.zip 
sudo rm consul_0.6.4_linux_amd64.zip 

sudo chmod +x consul 
sudo mv consul /usr/bin/consul 

sudo mkdir -p /opt/consul 
cd /opt/consul 
sudo wget https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_web_ui.zip 
sudo unzip consul_0.6.4_web_ui.zip 
sudo rm consul_0.6.4_web_ui.zip 

sudo mkdir -p /etc/consul.d/ 

sudo wget https://releases.hashicorp.com/consul-template/0.14.0/consul-template_0.14.0_linux_amd64.zip 
sudo unzip consul-template_0.14.0_linux_amd64.zip 
sudo rm consul-template_0.14.0_linux_amd64.zip 
sudo chmod a+x consul-template 
sudo mv consul-template /usr/bin/consul-template 


sudo nohup consul agent -server -bootstrap-expect 1 \ 
    -data-dir /tmp/consul -node=agent-one \ 
    -bind=$(hostname -i) \ 
    -client=0.0.0.0 \ 
    -config-dir /etc/consul.d \ 
    -ui-dir /opt/consul/ & 

echo 'Done with consul install!!!' 

再經過你這樣做創建領事健康檢查JSON文件,就如何做到這一點的信息,可以發現here.您創建的JSON文件,只是把它們後在/etc/consul.d目錄中,並重新啓用領事consul reload。如果在重新加載consul之後沒有添加新的運行狀況檢查,那麼您的json文件的語法有問題。回去編輯它們並重試。