一、背景
consul 在啟動的時候可通過命令指定 其啟動配置所在目錄,如:consul agent -config-dir conf ,其中 conf 目錄 就是存放 consul 所有啟動所需配置文件的目錄,文件格式可以是 json,也可以是 HCL。
在 官網 https://www.consul.io/docs/agent/options#configuration_files 已經提供說明,本文主要說明這些配置項在使用的時候一些注意事項,其具體用法還是參照官網。
二、說明
1、retry_join
在配置文件中 通過 retry_join 可以列出本結點需要加入的集群中的結點。
該配置項值是一個列表,如:retry_join:["192.168.149.128:8301","192.168.149.130:8301"],其中 8301 是 serf_lan_port。
consul 結點在啟動的時候,會自動循環遍歷加入 retry_join 中列出的每個結點,但是只要有一個成功加入,則后面的就不再執行加入。若整個列表遍歷完等沒有成功加入,此時默認會等待 30s之后再次遍歷列表嘗試加入。
在遍歷不成功之后,可以看到其日志顯示:
2020-11-13T11:20:13.956+0800 [INFO] agent: Retry join is supported for the following discovery methods: cluster=LAN discovery_methods="aliyun aws azure digitalocean gce k8s linode mdns os packet scaleway softlayer tencentcloud triton vsphere" 2020-11-13T11:20:13.956+0800 [INFO] agent: Joining cluster...: cluster=LAN 2020-11-13T11:20:13.956+0800 [INFO] agent: (LAN) joining: lan_addresses=[192.168.149.128:8301] #本示例中,retry_join列表項就這個一個 2020-11-13T11:20:13.958+0800 [DEBUG] agent.server.memberlist.lan: memberlist: Failed to join 192.168.149.128: dial tcp 192.168.149.128:8301: connect: connection refused 2020-11-13T11:20:13.958+0800 [WARN] agent: (LAN) couldn't join: number_of_nodes=0 error="1 error occurred: #不成功 * Failed to join 192.168.149.128: dial tcp 192.168.149.128:8301: connect: connection refused " 2020-11-13T11:20:13.958+0800 [WARN] agent: Join cluster failed, will retry: cluster=LAN retry_interval=30s error=<nil> #顯示嘗試間隔時間為 30s 2020-11-13T11:20:21.221+0800 [ERROR] agent.anti_entropy: failed to sync remote state: error="No cluster leader" 2020-11-13T11:20:23.546+0800 [WARN] agent.server.raft: no known peers, aborting election
PS:
(1) retry_join 並不影響 consul 啟動;
(2) 要修改 retry 的間隔時間,可以使用配置項:retry_interval (具體見官方文檔)