Consul入门02 - 运行Consul代理
在Consul安裝完成后,必須先運行代理。該代理可以以服務器或者客戶端模式運行。每個數據中心必須博阿含至少一個服務器,不過一個集群推薦3或5個服務器。一個單服務器的部署在失敗的情況下會發生數據丟失因此不推薦使用。
所有其他的代理運行在客戶端模式。一個客戶端是一個非常輕量級的進程,它注冊服務,運行健康檢查,以及轉發查詢到服務器。代理必須運行在集群中的每個節點上。
更多的關于啟動一個數據中心的細節,請查看這篇指導。
啟動代理
為了簡單起見,我們將暫時在開發者模式中啟動Consul代理。這個模式可以非常容易快速地啟動一個單節點的Consul環境。當然它并不是用于生產環境下并且它也不會持久任何狀態。
$ consul agent -dev ==> Starting Consul agent... ==> Starting Consul agent RPC... ==> Consul agent running!Node name: 'Armons-MacBook-Air'Datacenter: 'dc1'Server: true (bootstrap: false)Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400)Cluster Addr: 172.20.20.11 (LAN: 8301, WAN: 8302)Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: falseAtlas: <disabled>==> Log data will now stream in as it occurs:[INFO] raft: Node at 172.20.20.11:8300 [Follower] entering Follower state [INFO] serf: EventMemberJoin: Armons-MacBook-Air 172.20.20.11 [INFO] consul: adding LAN server Armons-MacBook-Air (Addr: 172.20.20.11:8300) (DC: dc1) [INFO] serf: EventMemberJoin: Armons-MacBook-Air.dc1 172.20.20.11 [INFO] consul: adding WAN server Armons-MacBook-Air.dc1 (Addr: 172.20.20.11:8300) (DC: dc1) [ERR] agent: failed to sync remote state: No cluster leader [WARN] raft: Heartbeat timeout reached, starting election [INFO] raft: Node at 172.20.20.11:8300 [Candidate] entering Candidate state [DEBUG] raft: Votes needed: 1 [DEBUG] raft: Vote granted. Tally: 1 [INFO] raft: Election won. Tally: 1 [INFO] raft: Node at 172.20.20.11:8300 [Leader] entering Leader state [INFO] raft: Disabling EnableSingleNode (bootstrap) [INFO] consul: cluster leadership acquired [DEBUG] raft: Node 172.20.20.11:8300 updated peer set (2): [172.20.20.11:8300] [DEBUG] consul: reset tombstone GC to index 2 [INFO] consul: New leader elected: Armons-MacBook-Air [INFO] consul: member 'Armons-MacBook-Air' joined, marking health alive [INFO] agent: Synced service 'consul'你可以看到,Consul代理已經啟動并且輸出了一些日志信息。從日志信息中,你可以看到我們代理運行在服務器模式并且聲明集群的leadship。另外,本地的成員已經被標記為一個健康的集群成員。
OS X用戶注意:Consul使用你的機器名作為默認的節點名稱。如果你的機器名包涵了點,那么DNS查詢該節點會不能工作,為了避免這個問題,使用-node顯式設置你的節點名稱。
集群成員
如果你在另一個終端中運行?consul members?,你能看到Consul集群所有的節點。我們在下一部分介紹如何加入集群,但是現在你只能看到一個成員(你自己的機器):
$ consul members Node Address Status Type Build Protocol DC Armons-MacBook-Air 172.20.20.11:8301 alive server 0.6.1dev 2 dc1該命令輸出顯示你自己的節點,運行的地址,它的健康狀態,它在集群中的角色,以及一些版本信息。另外元數據可以通過?-detailed?選項來查看。
members?命令選項的輸出是基于?gossip協議?的并且其內容是最終一致。也就是說,在任何時候,你在本地代理看到的內容也許與當前服務器中的狀態并不是絕對一致的。如果需要強一致性的狀態信息,使用HTTP API向Consul服務器發送請求:
$ curl localhost:8500/v1/catalog/nodes [{"Node":"Armons-MacBook-Air","Address":"172.20.20.11","CreateIndex":3,"ModifyIndex":4}]另外對于HTTP API,DNS接口也常被用來查詢節點信息。注意你必須確信你的DNS能夠找到Consul代理的DNS服務器,Consul代理的DNS服務器默認運行在8600端口。有關DNS實體(類似于"Armons-MacBook-Air.node.consul")將在后面有更詳細的介紹。
$ dig @127.0.0.1 -p 8600 Armons-MacBook-Air.node.consul ...;; QUESTION SECTION: ;Armons-MacBook-Air.node.consul. IN A;; ANSWER SECTION: Armons-MacBook-Air.node.consul. 0 IN A 172.20.20.11停止代理
你能夠使用?Ctrl-C?(中斷信號)來優雅地停止代理。停止代理后,你可以看到它脫離集群并且關閉的信息。
為了優雅地離開集群,Consul會通知其他的集群成員自己已經脫離了。如果你強制殺死代理的進程,那么其他的集群成員需要偵測節點是否失效。當一個成員離開,它的服務以及(checks)將從目錄中移除。當一個成員失效,它的健康會簡單地標記為critical,但它并不會被從目錄中移除。Consul將自動嘗試重新連接到失效的節點,并允許它在某些網絡狀況下恢復。
另外,如果一個代理以服務器模式啟動,優雅地離開是非常重要的,因為這可以避免潛在的可用性問題,有關一致性協議,查看指南來獲取更詳細的關于如何安全的增加和移除服務器的信息。
下一步
一個簡單的Consul集群已經啟動了,讓我們獲取一些[服務]()吧!
總結
以上是生活随笔為你收集整理的Consul入门02 - 运行Consul代理的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Consul入门01 - 安装Consu
 - 下一篇: Consul入门03 - 注册服务