Consul 簡化了分布式環(huán)境中的服務(wù)的注冊和發(fā)現(xiàn)流程,通過 HTTP 或者 DNS 接口發(fā)現(xiàn)。支持外部 SaaS 提供者等。
consul提供的一些關(guān)鍵特性:
service discovery:consul通過DNS或者HTTP接口使服務(wù)注冊和服務(wù)發(fā)現(xiàn)變的很容易,一些外部服務(wù),例如saas提供的也可以一樣注冊。
health checking:健康檢測使consul可以快速的告警在集群中的操作。和服務(wù)發(fā)現(xiàn)的集成,可以防止服務(wù)轉(zhuǎn)發(fā)到故障的服務(wù)上面。
key/value storage:一個用來存儲動態(tài)配置的系統(tǒng)。提供簡單的HTTP接口,可以在任何地方操作。
multi-datacenter:無需復(fù)雜的配置,即可支持任意數(shù)量的區(qū)域(數(shù)據(jù)中心)。
官方網(wǎng)站:https://www.consul.io/
系統(tǒng)環(huán)境:CentOS release 6.5 (Final) x64
consul最新版的下載地址
https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip
下載解壓,里面只有一個consul可執(zhí)行文件,執(zhí)行
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 可以查看幫助。其中常見的參數(shù)解釋如下:
-advertise:通知展現(xiàn)地址用來改變我們給集群中的其他節(jié)點展現(xiàn)的地址,一般情況下-bind地址就是展現(xiàn)地址
-bootstrap:用來控制一個server是否在bootstrap模式,在一個datacenter中只能有一個server處于bootstrap模式,當一個server處于bootstrap模式時,可以自己選舉為raft leader。
-bootstrap-expect:在一個datacenter中期望提供的server節(jié)點數(shù)目,當該值提供的時候,consul一直等到達到指定sever數(shù)目的時候才會引導(dǎo)整個集群,該標記不能和bootstrap公用
-bind:該地址用來在集群內(nèi)部的通訊,集群內(nèi)的所有節(jié)點到地址都必須是可達的,默認是0.0.0.0
-client:consul綁定在哪個client地址上,這個地址提供HTTP、DNS、RPC等服務(wù),默認是127.0.0.1
-config-file:明確的指定要加載哪個配置文件
-config-dir:配置文件目錄,里面所有以.json結(jié)尾的文件都會被加載
-data-dir:提供一個目錄用來存放agent的狀態(tài),所有的agent允許都需要該目錄,該目錄必須是穩(wěn)定的,系統(tǒng)重啟后都繼續(xù)存在
-dc:該標記控制agent允許的datacenter的名稱,默認是dc1
-encrypt:指定secret key,使consul在通訊時進行加密,key可以通過consul keygen生成,同一個集群中的節(jié)點必須使用相同的key
-join:加入一個已經(jīng)啟動的agent的ip地址,可以多次指定多個agent的地址。如果consul不能加入任何指定的地址中,則agent會啟動失敗,默認agent啟動時不會加入任何節(jié)點。
-retry-join:和join類似,但是允許你在第一次失敗后進行嘗試。
-retry-interval:兩次join之間的時間間隔,默認是30s
-retry-max:嘗試重復(fù)join的次數(shù),默認是0,也就是無限次嘗試
-log-level:consul agent啟動后顯示的日志信息級別。默認是info,可選:trace、debug、info、warn、err。
-node:節(jié)點在集群中的名稱,在一個集群中必須是唯一的,默認是該節(jié)點的主機名
-protocol:consul使用的協(xié)議版本
-rejoin:使consul忽略先前的離開,在再次啟動后仍舊嘗試加入集群中。
-server:定義agent運行在server模式,每個集群至少有一個server,建議每個集群的server不要超過5個
-syslog:開啟系統(tǒng)日志功能,只在linux/osx上生效
-ui-dir: 提供存放web ui資源的路徑,該目錄必須是可讀的
-pid-file: 提供一個路徑來存放pid文件,可以使用該文件進行SIGINT/SIGHUP(關(guān)閉/更新)agent
要想利用consul提供的服務(wù)實現(xiàn)服務(wù)的注冊與發(fā)現(xiàn),我們需要建立consul cluster。
在consul方案中,每個提供服務(wù)的節(jié)點上都要部署和運行consul的agent,所有運行consul agent節(jié)點的集合構(gòu)成consul cluster。
consul agent有兩種運行模式:server和client。這里的server和client只是consul集群層面的區(qū)分,與搭建在cluster之上的應(yīng)用服務(wù)無關(guān)。
以server模式運行的consul agent節(jié)點用于維護consul集群的狀態(tài),
官方建議每個consul cluster至少有3個或以上的運行在server mode的agent,client節(jié)點不限。
我們這里以安裝三個節(jié)點為例,環(huán)境配置如下
192.168.1.100 以server模式運行
192.168.1.101,192.168.1.102 以client模式運行
一:配置consul
把上面下載的文件解壓,并把consul拷貝到/opt/consul目錄,然后把/opt/consul目錄加入到環(huán)境變量(三個節(jié)點依次配置)
二:運行
1:在192.168.1.100節(jié)點上面進行
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 |
這樣,就啟動了一個節(jié)點
2:在192.168.1.101節(jié)點上面進行
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節(jié)點上面進行
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 |
全部節(jié)點啟動完之后
訪問http://192.168.1.100:8500/ 即可查看consul集群的管理頁面
在任意節(jié)點執(zhí)行consul members 即可查看集群節(jié)點信息
這里在192.168.1.100節(jié)點執(zhí)行
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 |
關(guān)閉節(jié)點
1
|
consul leave -rpc-addr=192.168.1.100:8400 |
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/mn960mn/article/details/51753893