会社のプロダクトでHashiCorpのConsulやNomadを利用しているものがあるのですが、ConsulやNomadのクラスタの運用をする際、leaderがどのnodeなのかを調べるコマンドをいつも忘れてしまうので記録として残します。
結論から言うと、どちらも operator
サブコマンドを利用します。
具体的には operator raft list-peers
というサブコマンドがあるのでそれを使えば分かります。
consulコマンドの場合は以下の通りです。 IDやAddressは仮の値に変更しています。
$ consul version Consul v1.2.3 Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents) $ consul operator raft list-peers Node ID Address State Voter RaftProtocol vault-server-03 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.00.002:8300 follower true 3 vault-server-02 yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy 192.168.00.001:8300 leader true 3 vault-server-01 zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 192.168.00.000:8300 follower true 3
Stateの項目にleaderかfollowerか表示されます。
consulのバージョンが古めなのはご愛敬*1。
nomadコマンドの場合は以下の通りです。
$ nomad version Nomad v0.8.5 (90fbfaba6a6d9af7febc39082b95ed832d8b8bd6) $ nomad operator raft list-peers Node ID Address State Voter RaftProtocol vault-server-02.global 192.168.00.001:4647 192.168.00.001:4647 follower true 2 vault-server-01.global 192.168.00.000:4647 192.168.00.000:4647 follower true 2 vault-server-03.global 192.168.00.002:4647 192.168.00.002:4647 leader true 2
同じくIDやAddressは仮の値に変更しています。 Consulの時と同様、Stateにleaderかfollowerか表示されます。
Nomadの場合、serverになっているホストで nomad server members
を実行することでも分かります。
nomad server members Name Address Port Status Leader Protocol Build Datacenter Region vault-server-01.global 192.168.00.000 4648 alive false 2 0.8.5 dc1 global vault-server-02.global 192.168.00.001 4648 alive false 2 0.8.5 dc1 global vault-server-03.global 192.168.00.002 4648 alive true 2 0.8.5 dc1 global
HTTP APIで調べる場合は以下のものを利用すれば分かるのでは無いかと。 利用したことはないので確約できませんが。
*1:プライベートで用意している環境が古めのバージョンのものしか無かった