Consul 簡化了分布式環境中的服務的注冊和發現流程,通過 HTTP 或者 DNS 接口發現。支持外部 SaaS 提供者等。
consul提供的一些關鍵特性:
service discovery:consul通過DNS或者HTTP接口使服務注冊和服務發現變的很容易,一些外部服務,例如saas提供的也可以一樣注冊。
health checking:健康檢測使consul可以快速的告警在集群中的操作。和服務發現的集成,可以防止服務轉發到故障的服務上面。
key/value storage:一個用來存儲動態配置的系統。提供簡單的HTTP接口,可以在任何地方操作。
multi-datacenter:無需復雜的配置,即可支持任意數量的區域(數據中心)。
系統環境:CentOS release 6.5 (Final) x64
consul最新版的下載地址
https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip
下載解壓,里面只有一個consul可執行文件,執行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
[root@localhost consul-0.6.4]# consul usage: consul [--version] [--help] <command> [<args>] Available commands are: agent Runs a Consul agent configtest Validate config file event Fire a new event exec Executes a command on Consul nodes force-leave Forces a member of the cluster to enter the "left" state info Provides debugging information for operators join Tell Consul agent to join cluster keygen Generates a new encryption key keyring Manages gossip layer encryption keys leave Gracefully leaves the Consul cluster and shuts down lock Execute a command holding a lock maint Controls node or service maintenance mode members Lists the members of a Consul cluster monitor Stream logs from a Consul agent reload Triggers the agent to reload configuration files rtt Estimates network round trip time between nodes version Prints the Consul version watch Watch for changes in Consul |
其中,最常用到的命令是agent
輸入consul agent -h 可以查看幫助。其中常見的參數解釋如下:
-advertise:通知展現地址用來改變我們給集群中的其他節點展現的地址,一般情況下-bind地址就是展現地址
-bootstrap:用來控制一個server是否在bootstrap模式,在一個datacenter中只能有一個server處于bootstrap模式,當一個server處于bootstrap模式時,可以自己選舉為raft leader。
-bootstrap-expect:在一個datacenter中期望提供的server節點數目,當該值提供的時候,consul一直等到達到指定sever數目的時候才會引導整個集群,該標記不能和bootstrap公用
-bind:該地址用來在集群內部的通訊,集群內的所有節點到地址都必須是可達的,默認是0.0.0.0
-client:consul綁定在哪個client地址上,這個地址提供HTTP、DNS、RPC等服務,默認是127.0.0.1
-config-file:明確的指定要加載哪個配置文件
-config-dir:配置文件目錄,里面所有以.json結尾的文件都會被加載
-data-dir:提供一個目錄用來存放agent的狀態,所有的agent允許都需要該目錄,該目錄必須是穩定的,系統重啟后都繼續存在
-dc:該標記控制agent允許的datacenter的名稱,默認是dc1
-encrypt:指定secret key,使consul在通訊時進行加密,key可以通過consul keygen生成,同一個集群中的節點必須使用相同的key
-join:加入一個已經啟動的agent的ip地址,可以多次指定多個agent的地址。如果consul不能加入任何指定的地址中,則agent會啟動失敗,默認agent啟動時不會加入任何節點。
-retry-join:和join類似,但是允許你在第一次失敗后進行嘗試。
-retry-interval:兩次join之間的時間間隔,默認是30s
-retry-max:嘗試重復join的次數,默認是0,也就是無限次嘗試
-log-level:consul agent啟動后顯示的日志信息級別。默認是info,可選:trace、debug、info、warn、err。
-node:節點在集群中的名稱,在一個集群中必須是唯一的,默認是該節點的主機名
-protocol:consul使用的協議版本
-rejoin:使consul忽略先前的離開,在再次啟動后仍舊嘗試加入集群中。
-server:定義agent運行在server模式,每個集群至少有一個server,建議每個集群的server不要超過5個
-syslog:開啟系統日志功能,只在linux/osx上生效
-ui-dir: 提供存放web ui資源的路徑,該目錄必須是可讀的
-pid-file: 提供一個路徑來存放pid文件,可以使用該文件進行SIGINT/SIGHUP(關閉/更新)agent
要想利用consul提供的服務實現服務的注冊與發現,我們需要建立consul cluster。
在consul方案中,每個提供服務的節點上都要部署和運行consul的agent,所有運行consul agent節點的集合構成consul cluster。
consul agent有兩種運行模式:server和client。這里的server和client只是consul集群層面的區分,與搭建在cluster之上的應用服務無關。
以server模式運行的consul agent節點用于維護consul集群的狀態,
官方建議每個consul cluster至少有3個或以上的運行在server mode的agent,client節點不限。
我們這里以安裝三個節點為例,環境配置如下
192.168.1.100 以server模式運行
192.168.1.101,192.168.1.102 以client模式運行
一:配置consul
把上面下載的文件解壓,并把consul拷貝到/opt/consul目錄,然后把/opt/consul目錄加入到環境變量(三個節點依次配置)
二:運行
1:在192.168.1.100節點上面進行
1
2
3
4
5
|
cd /opt/consul mkdir data consul agent -server -bootstrap -bind=0.0.0.0 -client=192.168.1.100 -data-dir=data -ui -node=192.168.1.100 |
這樣,就啟動了一個節點
2:在192.168.1.101節點上面進行
1
2
3
4
5
|
cd /opt/consul mkdir data consul agent -bind=0.0.0.0 -client=192.168.1.101 -data-dir=data -node=192.168.1.101 -join=192.168.1.100 |
3:在192.168.1.102節點上面進行
1
2
3
4
5
|
cd /opt/consul mkdir data consul agent -bind=0.0.0.0 -client=192.168.1.102 -data-dir=data -node=192.168.1.102 -join=192.168.1.100 |
全部節點啟動完之后
訪問http://192.168.1.100:8500/ 即可查看consul集群的管理頁面
在任意節點執行consul members 即可查看集群節點信息
這里在192.168.1.100節點執行
1
2
3
4
5
|
[root@localhost consul-0.6.4]# consul members -rpc-addr=192.168.1.100:8400 Node Address Status Type Build Protocol DC 192.168.1.101 192.168.1.101:8301 alive client 0.6.4 2 dc1 192.168.1.102 192.168.1.102:8301 alive client 0.6.4 2 dc1 192.168.1.100 192.168.1.100:8301 alive server 0.6.4 2 dc1 |
關閉節點
1
|
consul leave -rpc-addr=192.168.1.100:8400 |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/mn960mn/article/details/51753893