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