Описание и использование команды
Команда доступна с установкой пакета ecss-utils 14.15.7.24 и выше
Данная команда входит в пакет ecss-utils (устанавливается вместе с пакетом ecss-node).
Данная команда позволяет выполнять перезапуск (restart) сервиса ecss-node (mycelium, mediator, ds, core, pa-sip) на локальном хосте.
Данная команда может быть выполнена оператором вручную, либо (основное предназначение) в паре с командой ecss-detect-split (в автоматическом режиме).
ecss-restart-nodes - the utility for restarting ecss nodes on a selected host
Использование: ecss-restart-nodes [HOST] [NODE]
Аргументы:
HOST - hostname to restart nodes (hostnames or all) / имя хоста для управления нодами (конкретное имя хоста или all)
NODE - nodes to restart (nodenames or all) / имя ноды, которую нужно перезапустить (mycelium, mediator, ds, core, pa-sip или all)
- Если HOST имеет значение all, то рестарт нод будет применяться по лексикографическому порядку хостов
- Если NODE имеет значение all, то рестарт нод будет применяться по рекомендованному порядку нод: mycelium ds core mediator pa-sip
- NODE может принимать несколько нод через пробел
Доступных ноды для перезапуска:
- mycelium
- mediator
- ds
- core
- pa-sip
Примеры выполнения команды:
ecss-restart-nodes ecss1 ds mediator - restart the nodes ds and mediator on the ecss1 host / перезапуск нод ds и mediator на хосте ecss1
ecss-restart-nodes ecss2 all - restart all nodes on the ecss2 host in the recommended order / перезапуск всех нод в рекомендованном порядке на хосте ecss2
ecss-restart-nodes all pa-sip - restart the node sip1 on the all hosts / перезапуск ноды pa-sip на всех хостах кластера (например, сначала на ecss1, затем на ecss2)
Список поддерживаемых нод (CoCon names):
ds - CoCon name is ds1
pa-sip - CoCon name is sip1
core - CoCon name is core1
mediator - CoCon name is md1
mycelium - CoCon name is mycelium1
Конфигурация команды
Перед началом работы с командой необходимо настроить следующий конфигурационный файл /etc/ecss/ecss-nodes.conf (является общим для ecss-detect-split и ecss-restart-nodes):
# Конфигурация используется для ecss-restart-nodes и ecss-detect-split # Список имен пользователей узлов кластера (hostname=username) HOSTS_USERNAMES="ecss1=ecss ecss2=ecss" # Список имен пользователей для подключения к CoCon (hostname=cocon_username) COCON_USERNAMES="ecss1=admin ecss2=admin" # Список портов для подключения к CoCon (hostname=cocon_port) COCON_PORTS="ecss1=8023 ecss2=8023" # Таймаут для того, чтобы ноды и сервисы успели подняться (в секундах) # Значение по умолчанию - 60 секунд WAIT_STARTUP_TIMEOUT="60"
Для работы ecss-restart-nodes понадобится указать следующие параметры:
HOSTS_USERNAMES - соответствие имени каждого хоста кластера к имени его пользователя (через пробел)
Предварительная настройка перед использованием
Так как команда использует подключение через публичные ключи, то нужно:
- Убедиться, что хосты находятся в ~/.ssh/known_hosts обоих хостов
- При помощи ssh-keygen cформировать ключи для каждого хоста (будет создан приватный и публичный ключи в ~/.ssh/) (обычно это уже сделано в момент установки кластера)
- При помощи ssh-copy-id скопировать публичный ключ на соседний хост
Пример полной настройки
Имеется кластер из двух хостов (команда выполняется на ecss1):
- ecss1:
- username: ecss
- ecss2:
- username: ecss
Конфигурационный файл для этого примера:
# Конфигурация используется для ecss-restart-nodes и ecss-detect-split # Список имен пользователей узлов кластера (hostname=username) HOSTS_USERNAMES="ecss1=ecss ecss2=ecss" # Список имен пользователей для подключения к CoCon (hostname=cocon_username) COCON_USERNAMES="ecss1=admin ecss2=admin" # Список портов для подключения к CoCon (hostname=cocon_port) COCON_PORTS="ecss1=8023 ecss2=8023" # Таймаут для того, чтобы ноды и сервисы успели подняться (в секундах) # Значение по умолчанию - 60 секунд WAIT_STARTUP_TIMEOUT="60"
Затем нужно создать пару ключей на каждом хосте кластера и скопировать их на все хосты кластера (обычно это уже сделано в момент установки кластера):
- На ecss1 выполнить:
- ssh-keygen
- ssh-copy-id ecss@ecss2
- На ecss2 выполнить:
- ssh-keygen
- ssh-copy-id ecss@ecss1
На этом настройка закончена.
Выполнить проверку подключения по ssh , команды должны выполняться без запроса пароля:
- На ecss1 выполнить:
- ssh ecss@ecss2
- На ecss2 выполнить:
- ssh ecss@ecss1
Пример выполнения команды, подключения к хосту "ecss2":
ecss@ecss1:~$ ssh ecss@ecss2 Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-213-generic x86_64) . . . Last login: Mon Dec 16 17:18:24 2024 from 10.0.20.35
Пример лога выполнения команде на хосте ecss1 с выполнением перезапуска всех нод в рекомендованном порядке
При выполнении может быть запрошен пароль для вашего пользователя