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