HTTP API
consul的主要接口是RESTful HTTP API,該API可以用來增刪查改nodes、services、checks、configguration。所有的endpoints主要分為以下類別:
kv - Key/Value存儲 agent - Agent控制 catalog - 管理nodes和services health - 管理健康監測 session - Session操作 acl - ACL創建和管理 event - 用戶Events status - Consul系統狀態
下面我們就單獨看看每個模塊的具體內容。
agent
agent endpoints用來和本地agent進行交互,一般用來服務注冊和檢查注冊,支持以下接口
/v1/agent/checks : 返回本地agent注冊的所有檢查(包括配置文件和HTTP接口)
/v1/agent/services : 返回本地agent注冊的所有 服務
/v1/agent/members : 返回agent在集群的gossip pool中看到的成員
/v1/agent/self : 返回本地agent的配置和成員信息 /v1/agent/join/<address> : 觸發本地agent加入node /v1/agent/force-leave/<node>>: 強制刪除node /v1/agent/check/register : 在本地agent增加一個檢查項,使用PUT方法傳輸一個json格式的數據 /v1/agent/check/deregister/<checkID> : 注銷一個本地agent的檢查項 /v1/agent/check/pass/<checkID> : 設置一個本地檢查項的狀態為passing /v1/agent/check/warn/<checkID> : 設置一個本地檢查項的狀態為warning /v1/agent/check/fail/<checkID> : 設置一個本地檢查項的狀態為critical /v1/agent/service/register : 在本地agent增加一個新的服務項,使用PUT方法傳輸一個json格式的數據 /v1/agent/service/deregister/<serviceID> : 注銷一個本地agent的服務項
catalog
catalog endpoints用來注冊/注銷nodes、services、checks
/v1/catalog/register : Registers a new node, service, or check /v1/catalog/deregister : Deregisters a node, service, or check /v1/catalog/datacenters : Lists known datacenters /v1/catalog/nodes : Lists nodes in a given DC /v1/catalog/services : Lists services in a given DC /v1/catalog/service/<service> : Lists the nodes in a given service /v1/catalog/node/<node> : Lists the services provided by a node
health
health endpoints用來查詢健康狀況相關信息,該功能從catalog中單獨分離出來
/v1/healt/node/<node>: 返回node所定義的檢查,可用參數?dc= /v1/health/checks/<service>: 返回和服務相關聯的檢查,可用參數?dc= /v1/health/service/<service>: 返回給定datacenter中給定node中service /v1/health/state/<state>: 返回給定datacenter中指定狀態的服務,state可以是"any", "unknown", "passing", "warning", or "critical",可用參數?dc=
session
session endpoints用來create、update、destory、query sessions
/v1/session/create: Creates a new session /v1/session/destroy/<session>: Destroys a given session /v1/session/info/<session>: Queries a given session /v1/session/node/<node>: Lists sessions belonging to a node /v1/session/list: Lists all the active sessions
acl
acl endpoints用來create、update、destory、query acl
/v1/acl/create: Creates a new token with policy /v1/acl/update: Update the policy of a token /v1/acl/destroy/<id>: Destroys a given token /v1/acl/info/<id>: Queries the policy of a given token /v1/acl/clone/<id>: Creates a new token by cloning an existing token /v1/acl/list: Lists all the active tokens
event
event endpoints用來fire新的events、查詢已有的events
/v1/event/fire/<name>: 觸發一個新的event,用戶event需要name和其他可選的參數,使用PUT方法 /v1/event/list: 返回agent知道的events
- 1
- 2
status
status endpoints用來或者consul 集群的信息
/v1/status/leader : 返回當前集群的Raft leader
/v1/status/peers : 返回當前集群中同事
- 1
- 2
Consul-Template
在consul-template沒出現之前,大家構建服務發現系統,大多采用的是zookeeper、etcd+confd這樣類似的系統,之前寫過一篇consul+confd的文,講的是如何動態生成配置文件的,如今consul官方推出了自己的模板系統,就是consul-template,這樣的話動態的配置系統可以分化為etcd+confd和consul+consul-template兩大陣營。consul是一個和etcd類似但又強於etcd的系統,關於etcd和consul可以翻閱以前的文章,consul-template的定位就和confd差不多一樣了,confd的后端可以是etcd或者consul,相信consul搭配consul-template能發揮更大的效果。consul-template提供了一個便捷的方式從consul中獲取存儲的值,consul-template守護進程會查詢consul實例,來更新系統上指定的任何模板,當更新完成后,模板可以選擇運行一些任意的命令。
consul template的使用場景:consul template可以查詢consul中的服務目錄、key、key-values等。這種強大的抽象功能和查詢語言模板可以使consul template特別適合動態的創建配置文件。例如:創建apache/nginx proxy balancers、haproxy backends、varnish servers、application configurations。
- 1
consul template的特性:
quiescence:consul template內制靜止平衡功能,可以智能的發現consul實例中的更改信息。這個功能可以防止頻繁的更新模板而引起系統的波動。 dry mode:不確定當前架構的狀態?擔心模板的變化會破壞子系統?無須擔心,因為consul template還有-dry模式。在dry模式,consul template會將結果呈現在STDOUT,所以操作員可以檢查輸出是否正常,以決定更換模板是否安全 CLI and Config:如果你喜歡在命令行上指定一切,consul template都可以hold住。隨着內置HCL的支持,consul template接收一個配置文件,命令行參數,或者兩者的混合。通過這種方式你可以繼續使用你現在已有的配置管理工具和consul template來配合。 verbose debugging:即使每件事你都做的近乎完美,但是有時候還是會有失敗發生。consul template可以提供更詳細的debug日志信息。