安裝部署參考
<a href="http://blog.sina.com.cn/s/blog_8ea8e9d50102wwlf.html" target="_blank">http://blog.sina.com.cn/s/blog_8ea8e9d50102wwlf.html</a>
<a href="http://www.techweb.com.cn/network/system/2016-01-28/2270190.shtml" target="_blank">http://www.techweb.com.cn/network/system/2016-01-28/2270190.shtml</a>
api連接配接參考
<a href="https://github.com/JoergM/consul-examples" target="_blank">https://github.com/JoergM/consul-examples</a>
端口介紹
8500,用戶端http api接口
8600,用戶端DNS服務端口
8400,用戶端RPC通信端口
8300,叢集server RPC通信接口
8301,叢集DC内部通信接口
8302,叢集DC之間通信接口
consul的主要接口是RESTful HTTP API,該API可以用來增删查改nodes、services、checks、configguration
所有的endpoints主要分為以下類别:
<code>kv - Key</code><code>/Value</code><code>存儲</code>
<code>agent - Agent控制</code>
<code>catalog - 管理nodes和services</code>
<code>health - 管理健康監測</code>
<code>session - Session操作</code>
<code>acl - ACL建立和管理event - 使用者Events</code>
<code>status - Consul系統狀态</code>
agent endpoints:agent endpoints用來和本地agent進行互動,一般用來服務注冊和檢查注冊,支援以下接口
<code>/v1/agent/checks</code> <code>: 傳回本地agent注冊的所有檢查(包括配置檔案和HTTP接口)</code>
<code>/v1/agent/services</code> <code>: 傳回本地agent注冊的所有 服務</code>
<code>/v1/agent/members</code> <code>: 傳回agent在叢集的gossip pool中看到的成員</code>
<code>/v1/agent/self</code> <code>: 傳回本地agent的配置和成員資訊</code><code>/v1/agent/join/</code><code><address> : 觸發本地agent加入node</code><code>/v1/agent/force-leave/</code><code><node>>: 強制删除node</code>
<code>/v1/agent/check/register</code> <code>: 在本地agent增加一個檢查項,使用PUT方法傳輸一個json格式的資料</code><code>/v1/agent/check/deregister/</code><code><checkID> : 登出一個本地agent的檢查項</code><code>/v1/agent/check/pass/</code><code><checkID> : 設定一個本地檢查項的狀态為passing</code><code>/v1/agent/check/warn/</code><code><checkID> : 設定一個本地檢查項的狀态為warning</code><code>/v1/agent/check/fail/</code><code><checkID> : 設定一個本地檢查項的狀态為critical</code>
<code>/v1/agent/service/register</code> <code>: 在本地agent增加一個新的服務項,使用PUT方法傳輸一個json格式的資料</code><code>/v1/agent/service/deregister/</code><code><serviceID> : 登出一個本地agent的服務項</code>
catalog endpoints:catalog endpoints用來注冊/登出nodes、services、checks
<code>/v1/catalog/register</code> <code>: Registers a new node, service, or check</code><code>/v1/catalog/deregister</code> <code>: Deregisters a node, service, or check</code><code>/v1/catalog/datacenters</code> <code>: Lists known datacenters</code>
<code>/v1/catalog/nodes</code> <code>: Lists nodes </code><code>in</code> <code>a given DC</code>
<code>/v1/catalog/services</code> <code>: Lists services </code><code>in</code> <code>a given DC</code>
<code>/v1/catalog/service/</code><code><service> : Lists the nodes </code><code>in</code> <code>a given service</code>
<code>/v1/catalog/node/</code><code><node> : Lists the services provided by a node</code>
health endpoints:health endpoints用來查詢健康狀況相關資訊,該功能從catalog中單獨分離出來
<code>/v1/healt/node/</code><code><node>: 傳回node所定義的檢查,可用參數?</code><code>dc</code><code>=</code>
<code>/v1/health/checks/</code><code><service>: 傳回和服務相關聯的檢查,可用參數?</code><code>dc</code><code>=</code>
<code>/v1/health/service/</code><code><service>: 傳回給定datacenter中給定node中service</code>
<code>/v1/health/state/</code><code><state>: 傳回給定datacenter中指定狀态的服務,state可以是</code><code>"any"</code><code>, </code><code>"unknown"</code><code>, </code><code>"passing"</code><code>, </code><code>"warning"</code><code>, or </code><code>"critical"</code><code>,可用參數?</code><code>dc</code><code>=</code>
session endpoints:session endpoints用來create、update、destory、query sessions
<code>/v1/session/create</code><code>: Creates a new session</code>
<code>/v1/session/destroy/</code><code><session>: Destroys a given session</code>
<code>/v1/session/info/</code><code><session>: Queries a given session</code>
<code>/v1/session/node/</code><code><node>: Lists sessions belonging to a node</code>
<code>/v1/session/list</code><code>: Lists all the active sessions</code>
acl endpoints:acl endpoints用來create、update、destory、query acl
<code>/v1/acl/create</code><code>: Creates a new token with policy</code>
<code>/v1/acl/update</code><code>: Update the policy of a token</code>
<code>/v1/acl/destroy/</code><code><</code><code>id</code><code>>: Destroys a given token</code>
<code>/v1/acl/info/</code><code><</code><code>id</code><code>>: Queries the policy of a given token</code>
<code>/v1/acl/clone/</code><code><</code><code>id</code><code>>: Creates a new token by cloning an existing token</code>
<code>/v1/acl/list</code><code>: Lists all the active tokens</code>
status endpoints:status endpoints用來或者consul 叢集的資訊
<code>/v1/status/leader</code> <code>: 傳回目前叢集的Raft leader</code>
<code>/v1/status/peers</code> <code>: 傳回目前叢集中同僚</code>
服務注冊:
1. http方式
直接調用/v1/agent/service/register接口注冊即可,需要注意的是:http method為PUT送出方式
<code>curl -X PUT -d </code><code>'{"id": "jetty","name": "test1111","address": "localhost","port": 8500,"tags": ["dev"],"checks": [{"http": "http://localhost:8500/","interval": "5s"}]}'</code> <code>http:</code><code>//localhost</code><code>:8500</code><code>/v1/agent/service/register</code>
2:通過配置檔案的方式靜态注冊
建立檔案夾/etc/consul.d
.d代表有許多配置檔案在裡面
vim /consul.d/jetty.json 内容如下:
<code>{ </code>
<code> </code><code>"service"</code><code>:{ </code>
<code> </code><code>"id"</code><code>: </code><code>"jetty"</code><code>, </code>
<code> </code><code>"name"</code><code>: </code><code>"jetty"</code><code>, </code>
<code> </code><code>"address"</code><code>: </code><code>"192.168.1.200"</code><code>, </code>
<code> </code><code>"port"</code><code>: 8080, </code>
<code> </code><code>"tags"</code><code>: [</code><code>"dev"</code><code>], </code>
<code> </code><code>"checks"</code><code>: [ </code>
<code> </code><code>{ </code>
<code> </code><code>"http"</code><code>: </code><code>"http://192.168.1.200:8080/health"</code><code>, </code>
<code> </code><code>"interval"</code><code>: </code><code>"5s"</code>
<code> </code><code>} </code>
<code> </code><code>] </code>
<code> </code><code>} </code>
<code>}</code>
3. 使用python api 注冊
<a href="http://python-consul.readthedocs.io/en/v0.7.0/" target="_blank">http://python-consul.readthedocs.io/en/v0.7.0/</a>
4. 中文consul翻譯幫助文檔
<a href="http://consul.la/intro/what-is-consul" target="_blank">http://consul.la/intro/what-is-consul</a>
5. consul 服務模闆
<a href="https://github.com/hashicorp/consul-template" target="_blank">https://github.com/hashicorp/consul-template</a>
本文轉自 tianshuai369 51CTO部落格,原文連結:http://blog.51cto.com/kkkkkk/1914469