背景
通過在CentOS 7上部署Consul 0.6.4文章介紹制圈,我們已成功安裝了Consul,下面一起來看看 Consul CLI配置咽块。
配置參數(shù)
Consul Agent有各種各樣的配置項(xiàng)可以在命令行或者配置文件進(jìn)行定義棕诵,所有的配置項(xiàng)都是可選擇的,當(dāng)加載配置文件的時(shí)候衷恭,Consul從配置文件或者配置目錄加載配置。后面定義的配置會(huì)合并前面定義的配置纯续,但是大多數(shù)情況下随珠,合并的意思是后面定義的配置會(huì)覆蓋前面定義的配置,但是有些情況猬错,例如event句柄窗看,合并僅僅是添加到前面定義的句柄后面。Consul重新加載配置文件也支持以信號(hào)的方式接收update信號(hào)倦炒。
-advertise:通知展現(xiàn)地址用來改變我們給集群中的其他節(jié)點(diǎn)展現(xiàn)的地址烤芦,一般情況下-bind地址就是展現(xiàn)地址
-bootstrap:用來控制一個(gè)server是否在bootstrap模式,在一個(gè)datacenter中只能有一個(gè)server處于bootstrap模式析校,當(dāng)一個(gè)server處于bootstrap模式時(shí),可以自己選舉為raft leader铜涉。
-bootstrap-expect:在一個(gè)datacenter中期望提供的server節(jié)點(diǎn)數(shù)目智玻,當(dāng)該值提供的時(shí)候,consul一直等到達(dá)到指定sever數(shù)目的時(shí)候才會(huì)引導(dǎo)整個(gè)集群芙代,該標(biāo)記不能和bootstrap公用
-bind:該地址用來在集群內(nèi)部的通訊吊奢,集群內(nèi)的所有節(jié)點(diǎn)到地址都必須是可達(dá)的,默認(rèn)是0.0.0.0
-client:consul綁定在哪個(gè)client地址上,這個(gè)地址提供HTTP页滚、DNS召边、RPC等服務(wù),默認(rèn)是127.0.0.1
-config-file:明確的指定要加載哪個(gè)配置文件
-config-dir:配置文件目錄裹驰,里面所有以.json結(jié)尾的文件都會(huì)被加載
-data-dir:提供一個(gè)目錄用來存放agent的狀態(tài)隧熙,所有的agent允許都需要該目錄,該目錄必須是穩(wěn)定的幻林,系統(tǒng)重啟后都繼續(xù)存在
-dc:該標(biāo)記控制agent允許的datacenter的名稱贞盯,默認(rèn)是dc1
-encrypt:指定secret key,使consul在通訊時(shí)進(jìn)行加密沪饺,key可以通過consul keygen生成躏敢,同一個(gè)集群中的節(jié)點(diǎn)必須使用相同的key
-join:加入一個(gè)已經(jīng)啟動(dòng)的agent的ip地址,可以多次指定多個(gè)agent的地址整葡。如果consul不能加入任何指定的地址中件余,則agent會(huì)啟動(dòng)失敗,默認(rèn)agent啟動(dòng)時(shí)不會(huì)加入任何節(jié)點(diǎn)遭居。
-retry-join:和join類似啼器,但是允許你在第一次失敗后進(jìn)行嘗試。
-retry-interval:兩次join之間的時(shí)間間隔魏滚,默認(rèn)是30s
-retry-max:嘗試重復(fù)join的次數(shù)镀首,默認(rèn)是0,也就是無限次嘗試
-log-level:consul agent啟動(dòng)后顯示的日志信息級(jí)別鼠次。默認(rèn)是info更哄,可選:trace、debug腥寇、info成翩、warn、err赦役。
-node:節(jié)點(diǎn)在集群中的名稱麻敌,在一個(gè)集群中必須是唯一的,默認(rèn)是該節(jié)點(diǎn)的主機(jī)名
-protocol:consul使用的協(xié)議版本
-rejoin:使consul忽略先前的離開掂摔,在再次啟動(dòng)后仍舊嘗試加入集群中术羔。
-server:定義agent運(yùn)行在server模式,每個(gè)集群至少有一個(gè)server乙漓,建議每個(gè)集群的server不要超過5個(gè)
-syslog:開啟系統(tǒng)日志功能级历,只在linux/osx上生效
-ui-dir:提供存放web ui資源的路徑,該目錄必須是可讀的
-pid-file:提供一個(gè)路徑來存放pid文件叭披,可以使用該文件進(jìn)行SIGINT/SIGHUP(關(guān)閉/更新)agent
除了命令行參數(shù)外寥殖,配置也可以寫入文件中,在某些情況下配置文件會(huì)更簡單一些,例如:Consul被用來管理系統(tǒng)嚼贡。配置文件是json格式的熏纯,很容易編寫。配置文件不僅被用來設(shè)置Agent的啟動(dòng)粤策,也可以用來提供健康檢測和服務(wù)發(fā)現(xiàn)的定義樟澜。配置文件的一般格式如下:
{
"datacenter": "consul",
"data_dir": "/opt/consul",
"log_level": "INFO",
"node_name": "consul",
"server": true,
"watches": [
{
"type": "checks",
"handler": "/usr/bin/health-check-handler.sh"
}
]
}
詳細(xì)的配置文件參數(shù):
acl_datacenter:只用于server,指定的datacenter的權(quán)威ACL信息掐场,所有的servers和datacenter必須同意ACL datacenter
acl_default_policy:默認(rèn)是allow
acl_down_policy:
acl_master_token:
acl_token:agent會(huì)使用這個(gè)token和consul server進(jìn)行請求
acl_ttl:控制TTL的cache往扔,默認(rèn)是30s
addresses:一個(gè)嵌套對(duì)象,可以設(shè)置以下key:dns熊户、http萍膛、rpc
advertise_addr:等同于-advertise
bootstrap:等同于-bootstrap
bootstrap_expect:等同于-bootstrap-expect
bind_addr:等同于-bind
ca_file:提供CA文件路徑,用來檢查客戶端或者服務(wù)端的鏈接
cert_file:必須和key_file一起
check_update_interval:
client_addr:等同于-client
datacenter:等同于-dc
data_dir:等同于-data-dir
disable_anonymous_signature:在進(jìn)行更新檢查時(shí)禁止匿名簽名
disable_remote_exec:禁止支持遠(yuǎn)程執(zhí)行嚷堡,設(shè)置為true蝗罗,agent會(huì)忽視所有進(jìn)入的遠(yuǎn)程執(zhí)行請求
disable_update_check:禁止自動(dòng)檢查安全公告和新版本信息
dns_config:是一個(gè)嵌套對(duì)象,可以設(shè)置以下參數(shù):allow_stale蝌戒、max_stale串塑、node_ttl 、service_ttl北苟、enable_truncate
domain:默認(rèn)情況下consul在進(jìn)行DNS查詢時(shí)桩匪,查詢的是consul域,可以通過該參數(shù)進(jìn)行修改
enable_debug:開啟debug模式
enable_syslog:等同于-syslog
encrypt:等同于-encrypt
key_file:提供私鑰的路徑
leave_on_terminate:默認(rèn)是false友鼻,如果為true傻昙,當(dāng)agent收到一個(gè)TERM信號(hào)的時(shí)候,它會(huì)發(fā)送leave信息到集群中的其他節(jié)點(diǎn)上彩扔。
log_level:等同于-log-level
node_name:等同于-node
ports:這是一個(gè)嵌套對(duì)象妆档,可以設(shè)置以下key:dns(dns地址:8600)、http(http api地址:8500)虫碉、rpc(rpc:8400)贾惦、serf_lan(lan port:8301)、serf_wan(wan port:8302)敦捧、server(server rpc:8300)
protocol:等同于-protocol
recursor:
rejoin_after_leave:等同于-rejoin
retry_join:等同于-retry-join
retry_interval:等同于-retry-interval
server:等同于-server
server_name:會(huì)覆蓋TLS CA的node_name须板,可以用來確認(rèn)CA name和hostname相匹配
skip_leave_on_interrupt:和leave_on_terminate比較類似,不過只影響當(dāng)前句柄
start_join:一個(gè)字符數(shù)組提供的節(jié)點(diǎn)地址會(huì)在啟動(dòng)時(shí)被加入
statsd_addr:
statsite_addr:
syslog_facility:當(dāng)enable_syslog被提供后兢卵,該參數(shù)控制哪個(gè)級(jí)別的信息被發(fā)送逼纸,默認(rèn)Local0
ui_dir:等同于-ui-dir
verify_incoming:默認(rèn)false,如果為true济蝉,則所有進(jìn)入鏈接都需要使用TLS,需要客戶端使用ca_file提供ca文件,只用于consul server端王滤,因?yàn)閏lient從來沒有進(jìn)入的鏈接
verify_outgoing:默認(rèn)false贺嫂,如果為true,則所有出去鏈接都需要使用TLS雁乡,需要服務(wù)端使用ca_file提供ca文件第喳,consul server和client都需要使用,因?yàn)閮烧叨加谐鋈サ逆溄?watches:watch一個(gè)詳細(xì)名單
Consul Agent支持所有的網(wǎng)絡(luò)通訊進(jìn)行加密踱稍,關(guān)于加密的具體信息可以參考 官方描述 曲饱,有兩個(gè)分開的系統(tǒng),一個(gè)是gossip流量珠月,一個(gè)是RPC扩淀。
開啟gossip加密,只需要你在啟動(dòng)Consul Agent的時(shí)候設(shè)置encryption key啤挎,可以在配置文件中通過encrypt參數(shù)進(jìn)行設(shè)置驻谆,key必須是16bytes長度的base64加密,也可以通過consul keygen直接產(chǎn)生一個(gè)庆聘。注意胜臊,在同一個(gè)集群中的所有節(jié)點(diǎn)必須使用同一個(gè)key。
使用TLS為RPC加密伙判,主要是上面介紹的verify_incoming和verify_outgoing參數(shù)來設(shè)置象对。