После установки хостов и настройки IP-адресов, прописываем в файле hosts (etc/hosts) следующие записи.
10.100.102.11 etcd-1
10.100.102.12 etcd-2
10.100.102.13 etcd-3
Далее ставим ETCD
sudo apt install etcd-server && apt install etcd-client
После установки заходим на каждую ноду и заполняем конфигурационный файл /etc/default/etcd
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/default"
ETCD_LISTEN_PEER_URLS="http://10.100.102.11:2380"
ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://10.100.102.11:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://10.100.102.11:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.100.102.11:2380"
ETCD_INITIAL_CLUSTER="etcd-1=http://10.100.102.11:2380 ,etcd-2=http://10.100.102.12:2380,etcd-3=http://10.100.102.13:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
Нужно обратить внимание, что параметр ETCD_INITIAL_CLUSTER_STATE=”new” сначала заполняется га всех нодах. После успешного запуска службы на всех нодах, сменим этот параметр на “existing”.
ETCD_NAME="etcd-2"
ETCD_DATA_DIR="/var/lib/etcd/default"
ETCD_LISTEN_PEER_URLS="http://10.100.102.12:2380"
ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://10.100.102.12:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://10.100.102.12:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.100.102.12:2380"
ETCD_INITIAL_CLUSTER="etcd-1=http://10.100.102.11:2380,etcd-2=http://10.100.102.12:2380,etcd-3=http://10.100.102.13:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
ETCD_NAME="etcd-3"
ETCD_DATA_DIR="/var/lib/etcd/default"
ETCD_LISTEN_PEER_URLS="http://10.100.102.13:2380"
ETCD_LISTEN_CLIENT_URLS="http://127.0.0.1:2379,http://10.100.102.13:2379"
ETCD_ADVERTISE_CLIENT_URLS="http://10.100.102.13:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.100.102.13:2380"
ETCD_INITIAL_CLUSTER="etcd-1=http://10.100.102.11:2380,etcd-2=http://10.100.102.12:2380,etcd-3=http://10.100.102.13:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
Сперва запускаем все ноды с параметром ETCD_INITIAL_CLUSTER_STATE=”new”. Далее останавливаем службу ETCD меняем на всех нодах параметр “new” на “existing”. Запускам службу ETCD (на всех нодах). Если кластер сразу не собрался рестартуем службу на всех нодах.
Команды для проверки работы кластера:
etcdctl endpoint status –cluster -w table
+—————————+——————+———+———+———–+————+———–+————+——————–+——–+ | ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | +—————————+——————+———+———+———–+————+———–+————+——————–+——–+ | http://10.100.102.11:2379 | 2c6ec9cf688bd6be | 3.4.30 | 20 kB | true | false | 28 | 27 | 27 | | | http://10.100.102.12:2379 | 30632dcd93541458 | 3.4.30 | 20 kB | false | false | 28 | 27 | 27 | | | http://10.100.102.13:2379 | 5a2e0ef7db32fdf4 | 3.4.30 | 20 kB | false | false | 28 | 27 | 27 | | +—————————+——————+———+———+———–+————+———–+————+——————–+——–+etcdctl endpoint healt –cluster
http://10.100.102.11:2379 is healthy: successfully committed proposal: took = 1.954674ms
http://10.100.102.12:2379 is healthy: successfully committed proposal: took = 2.335493ms
http://10.100.102.13:2379 is healthy: successfully committed proposal: took = 2.24567ms
В случае ошибки запуска удаляем данные кластера. Для этого входим под sudo su (просто через sudo данные не удалятся).
sudo rm -rf /var/lib/etcd/*
После каждого неудачного запуска нужно снова удалять конфиг. Выполняем на всех нодах.
sudo systemctl daemon-reload
sudo systemctl enable etcd
sudo systemctl start etcd
sudo systemctl status etcd