天天看點

consule服務注冊和發現 安裝 部署

安裝部署參考

<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>&lt;address&gt; : 觸發本地agent加入node</code><code>/v1/agent/force-leave/</code><code>&lt;node&gt;&gt;: 強制删除node</code>

<code>/v1/agent/check/register</code> <code>: 在本地agent增加一個檢查項,使用PUT方法傳輸一個json格式的資料</code><code>/v1/agent/check/deregister/</code><code>&lt;checkID&gt; : 登出一個本地agent的檢查項</code><code>/v1/agent/check/pass/</code><code>&lt;checkID&gt; : 設定一個本地檢查項的狀态為passing</code><code>/v1/agent/check/warn/</code><code>&lt;checkID&gt; : 設定一個本地檢查項的狀态為warning</code><code>/v1/agent/check/fail/</code><code>&lt;checkID&gt; : 設定一個本地檢查項的狀态為critical</code>

<code>/v1/agent/service/register</code> <code>: 在本地agent增加一個新的服務項,使用PUT方法傳輸一個json格式的資料</code><code>/v1/agent/service/deregister/</code><code>&lt;serviceID&gt; : 登出一個本地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>&lt;service&gt; : Lists the nodes </code><code>in</code> <code>a given service</code>

<code>/v1/catalog/node/</code><code>&lt;node&gt; : Lists the services provided by a node</code>

health endpoints:health endpoints用來查詢健康狀況相關資訊,該功能從catalog中單獨分離出來

<code>/v1/healt/node/</code><code>&lt;node&gt;: 傳回node所定義的檢查,可用參數?</code><code>dc</code><code>=</code>

<code>/v1/health/checks/</code><code>&lt;service&gt;: 傳回和服務相關聯的檢查,可用參數?</code><code>dc</code><code>=</code>

<code>/v1/health/service/</code><code>&lt;service&gt;: 傳回給定datacenter中給定node中service</code>

<code>/v1/health/state/</code><code>&lt;state&gt;: 傳回給定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>&lt;session&gt;: Destroys a given session</code>

<code>/v1/session/info/</code><code>&lt;session&gt;: Queries a given session</code>

<code>/v1/session/node/</code><code>&lt;node&gt;: 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>&lt;</code><code>id</code><code>&gt;: Destroys a given token</code>

<code>/v1/acl/info/</code><code>&lt;</code><code>id</code><code>&gt;: Queries the policy of a given token</code>

<code>/v1/acl/clone/</code><code>&lt;</code><code>id</code><code>&gt;: 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