4.1. Файл конфигурации
Конфигурация сервиса cookd и утилиты cookctl описывается в формате yaml:
# Имя кластера (обязательное значение)
cluster_name: rdbcluster
# Уникальное имя узла (обязательное значение)
node_name: node0
# Локальные опции cook (необязательная секция)
#cook:
# Адрес и порт API которые слушает cookd (по-умолчанию 0.0.0.0:5030)
#listen: 0.0.0.0:5030
# Адрес и порт API к которым предлагает подключиться cookd (по-умолчанию определяется автоматически)
# Если машина имеет несколько IP данный параметр должен быть указан
#advertise: 192.168.0.1:5030
# Проверять доступность порта API перед запуском (по-умолчанию True)
#check_port: True
# Пользователь API (необязательное значение)
#user: cook
# Пароль API (необязательное значение)
#password: cook
# Использовать SSL или нет для коммуникации между узлами cook (по-умолчанию False)
#ssl: False
# Использовать определенные алгоритмы шифрования TLS. (по-умолчанию системные)
# Возможные значения и значения по-умолчанию зависят от системы и версии Python.
# Приведены значения по-умолчанию для Python 3.12
#ciphers:
# - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
# - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
# - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
# - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
# - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
# - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
# - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
# - TLS_RSA_WITH_AES_256_GCM_SHA384
# - TLS_RSA_WITH_AES_128_GCM_SHA256
# - TLS_RSA_WITH_AES_256_CBC_SHA256
# - TLS_RSA_WITH_AES_128_CBC_SHA256
# - TLS_RSA_WITH_AES_256_CBC_SHA
# - TLS_RSA_WITH_AES_128_CBC_SHA
# Путь к SSL сертификату (необязательное значение)
#cert: /path/to/cert
# Путь к ключу сертификата (необязательное значение)
#key: /path/to/key
# Проверять сертификат входящих подключений (для сервера API, по-умолчанию False)
#verify_incoming: False
# Проверять сертификат сервера (для клиента, по-умолчанию False)
#verify_outgoing: False
# Путь к корневому сертификату (необязательное значение)
#cacert: /path/to/cacert
# Путь к файлу лога, если пустое, то логировать в stdout (необязательное значение)
#log_file: cookd.log
# Формат лога, text или json (необязательное значение)
#log_format: text
# Настройка уровней логирования (по-умолчанию INFO)
# Можно установить уровень логирования для любого логгера по его имени
#loggers:
#cook: WARNING
#cook.api: DEBUG
#urllib3: WARNING
#werkzeug: WARNING
# Использовать цветной лог (по-умолчанию True)
#color_log: True
# Изменить имя хоста для TLS (по-умолчанию значение из node_name)
# server_name: node0
# Настройка подключения к Consul (необязательная секция)
#consul:
# Адрес подключения к Consul (по-умолчанию http://localhost:8500)
#url: http://localhost:8500
# Проверять сертификат сервера (по-умолчанию False)
#verify: False
# Путь к корневому сертификату (необязательное значение)
#cacert: /path/to/cacert
# Путь к SSL сертификату (необязательное значение)
#cert: /path/to/cert
# Путь к ключу сертификата (необязательное значение)
#key: /path/to/key
# Токен API Consul (необязательное значение)
#token: secret
# Локальные настройки RedDatabase (обязательная секция)
rdb:
# Путь к каталогу с RedDatabase (по-умолчанию /opt/RedDatabase)
#home: /opt/RedDatabase
# Хост и порт на котором работает RedDatabase (по-умолчанию 0.0.0.0:3050)
#listen: 0.0.0.0:3050
# Хост и порт RedDatabase к которому предлагается подключиться (по-умолчанию определяется автоматически)
# Если машина имеет несколько IP данный параметр должен быть указан
#advertise: 192.168.0.100:3050
# Порт подключения клиентов к событиями RedDatabase (по-умолчанию 3060)
#aux_port: 3060
# Пароль для подключения к БД (обязательное значение)
password: masterkey
# PID-файл сервера (обязательное значение)
pidfile: /opt/RedDatabase/rdbserver.pid
# Общий ресурс (каталог) для хранения логов и архивов репликации (обязательное значение)
#
# Внимание, данный ресурс должен гарантировать fsync, например быть смонтирован, как WRITETHROUGH (smb)
replication_dir: /path/to/replication_dir
# Каталог для временного хранения логов на slave перед применением (обязательное значение)
slave_log_directory: /path/to/slave_log_directory
# Опция архивирования логов master
# Значение по-умолчанию для Windows: copy $(logpathname) $(archpathname)
# Значение по-умолчанию для Linux: test ! -f $(archpathname) && cp $(logpathname) $(archpathname).tmp && mv $(archpathname).tmp $(archpathname)
#archive_command: test ! -f $(archpathname) && cp $(logpathname) $(archpathname).tmp && mv $(archpathname).tmp $(archpathname)
# Печатать firebird.log и replication.log в логи cook при ошибках репликации (по-умолчанию False)
#dump_logs: False
# Количество строк для dump_logs (по-умолчанию 50)
#dump_lines: 50
# Локальные настройки fencing для master (необязательная секция)
#fencing:
# Какой модуль fencing активировать
#use: linux_watchdog
# Настройки Linux Watchdog
#linux_watchdog:
# Устройство Watchdog (по-умолчанию /dev/watchdog)
#device: /dev/watchdog
# Настройки IPMIUtil
#ipmi_watchdog:
# Путь к ipmiutil (по-умолчанию ipmiutil)
#ipmiutil_bin: ipmiutil
# Пользовательский класс fencing
#my.custom.fencing.Class:
# option_1: value_1
# option_2: value_2
# option_3: value_3
# Начальные настройки конфигурации кластера (необязательная секция)
# Узел с данной секцией инициализирует новый кластер
#init:
# Настройки cook
#cook:
# Время жизни сессии в Consul (по-умолчанию 30)
#ttl: 30
# Таймаут для повторения провалившихся задач (по-умолчанию 10)
#retry_timeout: 10
# Максимальное время ожидания между циклами узла кластера (по-умолчанию 10)
#loop_wait: 10
# Максимальный лаг архивов slave (по-умолчанию 0)
#max_lag: 0
# Время ожидания slave перед окончательным завершением master (по-умолчанию 10)
#master_wait_timeout: 10
# Регистрировать сервис в Consul или нет (по-умолчанию True)
#register_service: True
# Максимальное количество накопленных архивов (по-умолчанию 100)
#max_archives: 100
# Дополнительные опции узлов
#hints:
# Имя узла кластера
#node_name:
# Разрешить переключение этого узла в master
#allow_failover: True
# Настройки RedDatabase
#rdb:
# Список баз данных для инициализации кластера
# databases:
# Путь к файлу базы данных
# - database: /path/to/database1.fdb
# Псевдоним базы данных
# alias: myalias
# Опции базы данных в databases.conf (имена опций соответствуют опциям в RedDatabase)
# properties:
#option: value
# Опции репликации для базы данных myalias
# replication_options:
# exclude_without_pk: False
# segment_size: 16777216
# Глобальные опции firebird.conf (имена опций соответствуют опциям в RedDatabase)
# properties:
#option: value
# Глобальные опции репликации
# replication_options:
#buffer_size: 1048576
#include_filter: table1
#exclude_filter: table2
#exclude_without_pk: False
#segment_size: 16777216
#segment_count: 8
#archive_timeout: 60
#group_flush_delay: 0
#verbose: False
# Поддерживается только в 3.0
#compress_records: False
# Поддерживается только в 5.0
# sync_reconnect_timeout: 10
# Поддерживается только в 5.1
# initial_backoff_delay: 1000
# backoff_factor: 1.2
# max_backoff_delay: 30000
# backoff_lag: 20
# throttle_timeout: 0
# Анализировать firebird.log и replication.log на узлах на наличие критических ошибок (по-умолчанию True)
# При выявлении ошибки в логах узел будет остановлен
# log_analyzer: True
# Способ инициализации реплики (экспериментальная возможность, по-умолчанию nbackup)
# nbackup - копирование базы данных с master через nbackup
# as_is - использование уже существующей базы данных на slave
# shell - использование команды для копирования, указанной в slave_init_command
# disable - не инициализировать реплики
#slave_init: nbackup
# Команда для инициализации реплики
#slave_init_command:
# Сопоставление кластерной БД и файла на слейве для инициализации реплики
#slave_database_mapping:
# Можно задать как точный псевдоним базы в кластере и соответствующий локальный путь
#myalias: /path/to/database1.fdb
# Так и использовать регулярные выражения
#/myalias-(\d+)/: /path/to/database-{0}.fdb
#/anotheralias-(\d+)/: /another/path/to/database-{0}.fdb
# Генерация конфигурации Gobetween в Consul (необязательная секция))
#gobetween:
# Разрешить генерацию (по-умолчанию True)
#generate_config: True
# Имя сервера в конфигурации генерацию (по-умолчанию rdb)
#server_name: rdb
# URL Consul (по-умолчанию http://localhost:3050)
#consul_host: http://localhost:3050
# Хост и порт для прослушивания Gobetween (по-умолчанию 0.0.0.0:3050)
#bind: 0.0.0.0:3050
# Вспомогательный хост и порт для прослушивания Gobetween (по-умолчанию 0.0.0.0:3060)
#bind_aux: 0.0.0.0:3060
# Интервал для опроса состояния в Consul (по-умолчанию 10)
#interval: 10