Настройки и детальное описание controller-witness
Описание
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