man

Section: Справочная страница controller-witness (1)
Updated: 30 Jun 2023
Index  

НАЗВАНИЕ

controller-witness - служба отслеживания и изменения роли репликации двух контроллеров.  

ОПИСАНИЕ

controller-witness является службой systemd, берущей настройки из конфигурационного файла. Конфигурационный файл /etc/default/controller-witness должен быть заполнен перед запуском службы. Служба пытается установить SSH-соединение к обоим указанным в параметрах серверам и далее периодически проверяет доступность и состояние серверов. Если сервер, являющийся в данный момент мастером репликации (основным контроллером), становится недоступен, служба пытается сменить роль текущего слейва репликации (резервного контроллера) на "мастер". Возможна ситуация, когда оба сервера заявляют, что у них роль "мастер". В таком случае роль мастера репликации назначается серверу, который непрерывно был мастером до этого большее время. Другой сервер при этом назначается слейвом. Таким образом, репликация восстанавливается.  

НАСТРОЙКИ

Настройки хранятся в файле /etc/default/controller-witness. При ручном изменении настроек необходимо вручную перезапустить службу командой

systemctl restart controller-witness

Файл состоит из двух секций:  

[default]

Содержит обязательные параметры. Изначально эти параметры можно заполнить интерактивно в процессе установки пакета, если имеется терминал и в системе установлен любой из пакетов whiptail или dialog. Если заданы все обязательные параметры, служба автоматически запускается. ВНИМАНИЕ! ПРОВОДИТСЯ ПРОВЕРКА НАЛИЧИЯ, НО НЕ КОРРЕКТНОСТИ ПАРАМЕТРОВ! Если не все обязательные параметры заданы, или если пакет устанавливается в неинтерактивной среде, служба не запускается. В таком случае следует заполнить конфигурационный файл, разрешить к автозапуску и запустить сервис controller-witness.service вручную.
server1
Обязательный параметр. IP-адрес (или доменное имя) первого сервера. Возможно указать также порт через двоеточие (host:port). Если порт не задан, по умолчанию принимается порт 22.
server2
Аналогично для второго сервера.
username
Имя пользователя в случае, если оно совпадает для обоих серверов. Этот пользователь ДОЛЖЕН иметь права запрашивать статус репликации и изменять роли серверов при помощи команды /usr/local/sbin/veil-controller на обоих контроллерах.
username1
Имя пользователя для подключения по SSH к первому серверу. Этот пользователь ДОЛЖЕН иметь права запрашивать статус репликации и изменять роли серверов при помощи команды /usr/local/sbin/veil-controller на первом контроллере.
username2
Аналогично для второго сервера.
password
Пароль для подключения к обоим серверам в случае, если пароли для них совпадают. Следует пропустить при аутентификации по ключу.
password1
Пароль для первого сервера. Следует пропустить при аутентификации по ключу.
password2
Аналогично для второго сервера.
pkey
Файл с расширением .pem, содержащий приватный RSA ключ, в случае, если один ключ действителен на обоих серверах. Файл создаётся и скачивается через Web-интерфейс контроллера (Безопасность/Ключи шифрования/Сгенерировать ключ). После создания ключ должен быть подключён к соответствующим серверам. Параметр следует пропустить при аутентификации по паролю.
pkey1
То же, только для первого сервера, если ключи различны.
pkey2
Аналогично для второго сервера.
id
Уникальный идентификатор экземпляра программы. Создаётся автоматически при установке пакета, поэтому нет нужды создавать или редактировать его вручную. Если всё же нужно изменить id, следует учесть, что идентификатор не может быть длиннее 50 символов, а также должен состоять только из символов из набора "0-9a-zA-Z-_".
 

[optional]

Содержит необязательные дополнительные параметры. В случае отсутствия параметров или секции целиком (секция не создаётся при установке пакета, при необходимости нужно добавить её и необходимые параметры вручную) используются значения по умолчанию.
loop_timeout
Интервал в секундах между запросами состояния каждого сервера. По умолчанию - 10.
ssh_loop_timeout
Таймаут в секундах ожидания процессами соединения SSH команд от управляющего процесса. По умолчанию - 300.
status_timeout
Таймаут в секундах ожидания ответа команды состояния сервера. По умолчанию - 30.
set_master_timeout
Таймаут в секундах ожидания ответа команды установки роли "мастер". По умолчанию - 240.
no_comm_mute
Число последовательных неудачных попыток (пере)соединения к серверам, после которого попытки будут продолжаться без записи в журнал. По умолчанию - 10.
reports_period
Интервал в секундах между периодическими сообщениями в журнал о состоянии серверов. По умолчанию - 3600 (1 час).
confirm_2similar_timeout
Таймаут в секундах для принятия решения по ситуации "2 одинаковых роли" на случай, если статус сервера запрошен в момент переключения ролей через CLI, когда возможен одинаковый ответ от обоих серверов. По умолчанию - 30.
master_failure_duration
Таймаут в секундах до переключения слейва на мастер, если один сервер -- слейв, а второй недоступен (таймаут, чтобы дать возможность мастеру стать доступным). По умолчанию - 30.
switch_flag
Путь к файлу, вызывающему при появлении принудительное переключение ролей серверов. Файл должен создаваться с правами доступа, допускающими его удаление сервисом controller-witness. По умолчанию - /tmp/role-switch.
debug
Уровень отладки. По умолчанию - 0. Может быть одно-или двузначным десятичным числом. Младший разряд управляет сообщениями о командах переключения ролей, старший командами запроса статуса серверов. В каждом разряде: 0 - нет отладочных сообщений. 1 - отчёт о коде возврата и времени выполнения команд, 2 - полный отчёт (краткий отчёт плюс вывод stdout соответствующей команды). Например: 2 - полная информация о командах переключения ролей, 12 - то же плюс краткий отчёт о выполнении команд статуса, 22 - полная информация о всех командах, отправляемых на серверы. Отладочную информацию можно увидеть в журнале службы controller-witness.
 

ПРИМЕР КОНФИГУРАЦИИ


    [default]
    server1=example.mylab.org:2222
    server2=example.mylab.org
    username1=root
    password1=MySecPass
    pkey1=
    username2=root
    pkey2=/home/user/key_key2.pem
    id=768f026b-a911-4910-835b-c9f7eedb66d5


    [optional]
    set_master_timeout=120
    status_timeout=30
    loop_timeout=10
    ssh_loop_timeout=240
    no_conn_mute=10
    reports_period=3600
    confirm_2similar_timeout=30
    switch_flag=/tmp/role-switch
    debug=0

 

ЖУРНАЛ РАБОТЫ СЛУЖБЫ

Для просмотра журнала можно пользоваться командой

journalctl -u controller-witness  

АВТОРЫ

(c) ООО "ДАКОМ-М", 2023
 

Index

НАЗВАНИЕ
ОПИСАНИЕ
НАСТРОЙКИ
[default]
[optional]
ПРИМЕР КОНФИГУРАЦИИ
ЖУРНАЛ РАБОТЫ СЛУЖБЫ
АВТОРЫ

This document was created by man2html, using the manual pages.
Time: 15:08:34 GMT, June 30, 2023