Настройки и детальное описание controller-witness
Описание
controller-witness - служба отслеживания и изменения роли репликации двух контроллеров.
controller-witness является службой systemd, которая использует настройки из конфигурационного файла.
Конфигурационный файл /etc/default/controller-witness должен быть заполнен перед запуском службы.
Служба пытается установить SSH-соединение к обоим указанным в параметрах серверам
и далее периодически проверяет доступность и состояние серверов.
Если сервер, с ролью master являющийся в данный момент основным
контроллером становится недоступен, служба пытается сменить роль
slave текущего резервного контроллера на master.
Возможна ситуация, когда оба сервера выступают в роли master.
В такой ситуации роль репликации master назначается серверу, непрерывно
исполнявшему эту роль в течение более длительного времени.
Другому серверу при этом назначается роль slave. Таким образом,
репликация восстанавливается.
Настройки
Настройки хранятся в файле /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Тайм-аут в секундах до переключения slave на мастер, если один сервер - slave, а второй недоступен (тайм-аут, чтобы дать возможность мастеру стать доступным).
По умолчанию - 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