TL;DR
peers.json
を用意して、各 Nomad のディレクトリの raft/peers.json
に置いて再起動
症状
なぜか ISP のメンテのタイミングで Nomad クラスタのリーダーが居なくなり、”No cluster leader” になった。多分、ISP のメンテで Oracle Cloud にある Nomad ノードがリーダーで疎通が取れず投票もできなくなったんだと思う。
解決
直し方は Consul と一緒&公式ドキュメント見るべし
https://learn.hashicorp.com/tutorials/nomad/outage-recovery
node_id, ip の取得
nomad server members -verbose
で取得できる
peers.json の用意
[
{
"id": "b7038edf-11e4-6cd4-c39a-4330b8eba076",
"address": "172.16.0.2:4647",
"non_voter": false
},
{
"id": "4b4710ad-ff6b-f165-bf9b-f12bcaa07af5",
"address": "172.16.0.3:4647",
"non_voter": false
},
{
"id": "239a1fe0-5eed-cd3d-816e-f17ed4c8b80f",
"address": "192.168.20.30:4647",
"non_voter": false
},
{
"id": "9f6482e3-a847-a096-4b05-ea53c2f5492a",
"address": "192.168.20.31:4647",
"non_voter": false
},
{
"id": "e4aeaad4-3b7b-5bca-5c2e-cd3f8518deb2",
"address": "192.168.20.32:4647",
"non_voter": false
},
{
"id": "d877e20d-4630-5ac8-df92-ac33ba34f7d6",
"address": "192.168.20.114:4647",
"non_voter": false
},
{
"id": "1d1f4412-b036-722f-0b25-911fe0e551a6",
"address": "192.168.20.115:4647",
"non_voter": false
}
]
peers.json の配置
data_dir が /opt/nomad
の場合、/opt/nomad/server/raft/peers.json
に置く
Nomad 再起動
復活
$ nomad server members
Name Address Port Status Leader Raft Version Build Datacenter Region
nomad-oci01.luis.local.global 172.16.0.2 4648 alive false 3 1.3.5 luis global
nomad-oci02.luis.local.global 172.16.0.3 4648 alive false 3 1.3.5 luis global
nomad01.luis.local.global 192.168.20.30 4648 alive false 3 1.3.5 luis global
nomad02.luis.local.global 192.168.20.31 4648 alive false 3 1.3.5 luis global
nomad03.luis.local.global 192.168.20.32 4648 alive true 3 1.3.5 luis global
rpi4-01.luis.local.global 192.168.20.114 4648 alive false 3 1.3.5 luis global
rpi4-02.luis.local.global 192.168.20.115 4648 alive false 3 1.3.5 luis global