Параметри конфігурації

Файли конфігурації etcd, прапорці та змінні середовища

Ви можете налаштувати etcd за допомогою наступного:

Прапорці командного рядка

Прапорці представлені нижче у форматі --flag-name DEFAULT_VALUE.

Список прапорців, наведених нижче, може бути неактуальним через постійні зміни в розробці. Для отримання останніх доступних прапорців запустіть etcd --help або зверніться до довідки etcd.

Учасник

--name 'default'
  Зрозуміле для людини імʼя для цього учасника.
--data-dir '${name}.etcd'
  Шлях до теки з даними.
--wal-dir ''
  Шлях до виділеної теки wal.
--snapshot-count '100000'
  Кількість підтверджених транзакцій для створення знімка на диск.
--heartbeat-interval '100'
  Час (у мілісекундах) інтервалу такту.
--election-timeout '1000'
  Час (у мілісекундах) для тайм-ауту виборів. Дивіться документацію з налаштування для деталей.
--initial-election-tick-advance 'true'
  Чи слід прискорити початкові тики виборів при завантаженні для швидших виборів.
--listen-peer-urls 'http://localhost:2380'
  Список URL-адрес для прослуховування трафіку від партнерів.
--listen-client-urls 'http://localhost:2379'
  Список URL-адрес для прослуховування клієнтського grpc трафіку та http, якщо не вказано --listen-client-http-urls.
--listen-client-http-urls ''
  Список URL-адрес для прослуховування лише клієнтського http трафіку. Увімкнення цього прапорця видаляє http сервіси з --listen-client-urls.
--max-snapshots '5'
  Максимальна кількість файлів знімків для збереження (0 означає необмежено).
--max-wals '5'
  Максимальна кількість файлів wal для збереження (0 означає необмежено).
--quota-backend-bytes '0'
  Піднімає тривогу, коли розмір бекенду перевищує задану квоту (0 стандартно низька квота простору).
--backend-bbolt-freelist-type 'map'
  BackendFreelistType визначає тип freelist, який використовує бекенд boltdb (підтримуються типи array та map).
--backend-batch-interval ''
  BackendBatchInterval - це максимальний час перед комітом транзакції бекенду.
--backend-batch-limit '0'
  BackendBatchLimit - це максимальна кількість операцій перед комітом транзакції бекенду.
--max-txn-ops '128'
  Максимальна кількість операцій, дозволених у транзакції.
--max-request-bytes '1572864'
  Максимальний розмір клієнтського запиту в байтах, який сервер прийме.
--grpc-keepalive-min-time '5s'
  Мінімальний інтервал часу, який клієнт повинен чекати перед пінгом сервера.
--grpc-keepalive-interval '2h'
  Частота пінгу сервером клієнта для перевірки, чи зʼєднання живе (0 для відключення).
--grpc-keepalive-timeout '20s'
  Додатковий час очікування перед закриттям не відповідаючого зʼєднання (0 для відключення).
--socket-reuse-port 'false'
  Увімкніть, щоб встановити параметр сокета SO_REUSEPORT на слухачах, що дозволяє повторне привʼязування порту, який вже використовується.
--socket-reuse-address 'false'
  Увімкніть, щоб встановити параметр сокета SO_REUSEADDR на слухачах, що дозволяє привʼязування до адреси в стані TIME_WAIT.

Кластеризація

--initial-advertise-peer-urls 'http://localhost:2380'
  Список URL-адрес цього учасника для оголошення іншим учасникам кластера.
--initial-cluster 'default=http://localhost:2380'
  Початкова конфігурація кластера для завантаження.
--initial-cluster-state 'new'
  Початковий стан кластера ('new' або 'existing').
--initial-cluster-token 'etcd-cluster'
  Початковий токен кластера для кластера etcd під час завантаження.
  Вказання цього може захистити вас від ненавмисної взаємодії між кластерами при запуску декількох кластерів.
--advertise-client-urls 'http://localhost:2379'
  Список URL-адрес цього учасника для публічного оголошення.
  Оголошені URL-адреси клієнтів повинні бути доступні для машин, які спілкуються з кластером etcd. Бібліотеки клієнтів etcd аналізують ці URL-адреси для підключення до кластера.
--discovery ''
  URL-адреса для виявлення, використовується для завантаження кластера.
--discovery-fallback 'proxy'
  Очікувана поведінка ('exit' або 'proxy') при відмові сервісу виявлення.
  "proxy" підтримує тільки v2 API.
--discovery-proxy ''
  HTTP-проксі для використання трафіку до сервісу виявлення.
--discovery-srv ''
  Домен DNS srv, використовується для завантаження кластера.
--discovery-srv-name ''
  Суфікс до імені dns srv, запитуваного при завантаженні.
--strict-reconfig-check 'true'
  Відхиляти запити на переналаштування, які можуть призвести до втрати кворуму.
--pre-vote 'true'
  Увімкнути алгоритм попереднього голосування raft для запобігання порушенням, коли вузол, який був відокремлений, знову приєднується до кластера.
--auto-compaction-retention '0'
  Довжина автоматичного збереження. 0 означає відключення автоматичного збереження.
--auto-compaction-mode 'periodic'
  Інтерпретувати 'auto-compaction-retention' як один з: periodic|revision. 'periodic' для збереження на основі тривалості, стандартно години, якщо не вказано одиницю часу (наприклад, '5m'). 'revision' для збереження на основі номера ревізії.
--enable-v2 'false'
  Приймати запити клієнтів etcd V2. Застаріло і буде виведено з експлуатації у v3.6.
--v2-deprecation 'not-yet'
  Фаза виведення з експлуатації v2store. Дозволяє вибрати режим вищої сумісності.
  Підтримувані значення:
    'not-yet'                // Видає попередження, якщо v2store має значущий вміст (стандартно у v3.5)
    'write-only'             // Користувацький стан v2 не дозволений (планується стандартно у v3.6)
    'write-only-drop-data'   // Користувацький стан v2 буде ВИДАЛЕНО!
    'gone'                   // v2store більше не підтримується. (планується стандартно у v3.7)

Безпека

--cert-file ''
  Шлях до файлу сертифіката TLS клієнтського сервера.
--key-file ''
  Шлях до файлу ключа TLS клієнтського сервера.
--client-cert-auth 'false'
  Увімкнути автентифікацію сертифіката клієнта.
  Рекомендується увімкнути автентифікацію сертифіката клієнта, щоб запобігти атакам від неавтентифікованих клієнтів (наприклад, CVE-2023-44487), особливо при запуску etcd як публічної служби.
--client-crl-file ''
  Шлях до файлу списку відкликаних сертифікатів клієнта.
--client-cert-allowed-hostname ''
  Дозволене імʼя хоста TLS для автентифікації сертифіката клієнта.
--trusted-ca-file ''
  Шлях до файлу довіреного сертифіката CA TLS клієнтського сервера.
  Зверніть увагу, що встановлення цього параметра автоматично увімкне автентифікацію сертифіката клієнта незалежно від значення, встановленого для `--client-cert-auth`.
--auto-tls 'false'
  TLS клієнта з використанням згенерованих сертифікатів.
--peer-cert-file ''
  Шлях до файлу сертифіката TLS сервера партнера.
--peer-key-file ''
  Шлях до файлу ключа TLS сервера партнера.
--peer-client-cert-auth 'false'
  Увімкнути автентифікацію сертифіката клієнта партнера.
  Рекомендується увімкнути автентифікацію сертифіката клієнта партнера, щоб запобігти атакам від неавтентифікованих підроблених партнерів (наприклад, CVE-2023-44487).
--peer-trusted-ca-file ''
  Шлях до файлу довіреного сертифіката CA TLS сервера партнера.
--peer-cert-allowed-cn ''
  Необхідний CN для сертифікатів клієнтів, що підключаються до точки доступу партнера.
--peer-cert-allowed-hostname ''
  Дозволене імʼя хоста TLS для автентифікації між партнерами.
--peer-auto-tls 'false'
  TLS партнера з використанням самозгенерованих сертифікатів, якщо не надано --peer-key-file та --peer-cert-file.
--self-signed-cert-validity '1'
  Термін дії сертифікатів клієнта та партнера, які автоматично генеруються etcd при вказанні ClientAutoTLS та PeerAutoTLS, одиниця виміру - рік, стандартно 1.
--peer-crl-file ''
  Шлях до файлу списку відкликаних сертифікатів партнера.
--cipher-suites ''
  Список підтримуваних наборів шифрів TLS між клієнтом/сервером та партнерами, розділений комами (порожній буде автоматично заповнений Go).
--cors '*'
  Список дозволених джерел для CORS, або обміну ресурсами між різними джерелами, розділений комами (порожній або * означає дозволити всім).
--host-whitelist '*'
  Прийнятні імена хостів із запитів HTTP клієнтів, якщо сервер не захищений (порожній або * означає дозволити всім).
--tls-min-version 'TLS1.2'
  Мінімальна версія TLS, підтримувана etcd.
--tls-max-version ''
  Максимальна версія TLS, підтримувана etcd (порожній буде автоматично заповнений Go).

Автентифікація

--auth-token 'simple'
  Вкажіть тип токена автентифікації v3 та специфічні параметри токена, особливо для JWT.
  Його формат "type,var1=val1,var2=val2,...". Можливі типи 'simple' або 'jwt'. Можливі змінні:
  'sign-method' для вказання методу підпису jwt (можливі значення 'ES256', 'ES384', 'ES512',
  'HS256', 'HS384', 'HS512', 'RS256', 'RS384', 'RS512', 'PS256', 'PS384', або 'PS512'), 'pub-key'
  для вказання шляху до публічного ключа для перевірки jwt, 'priv-key' для вказання шляху до
  приватного ключа для підпису jwt, та 'ttl' для вказання TTL токенів jwt.
--bcrypt-cost 10
  Вкажіть вартість / силу алгоритму bcrypt для хешування паролів автентифікації. Дійсні значення від 4 до 31.
--auth-token-ttl 300
  Час (у секундах) auth-token-ttl.

Профілювання та моніторинг

--enable-pprof 'false'
  Увімкнути дані профілювання часу виконання через HTTP сервер. Адреса знаходиться за клієнтською URL + "/debug/pprof/"
--metrics 'basic'
  Встановити рівень деталізації для експортованих метрик, вкажіть 'extensive', щоб включити метрики гістограми grpc на стороні сервера.
--listen-metrics-urls ''
  Список URL-адрес для прослуховування метрик та кінцевих точок здоров'я.

Логування

--logger 'zap'
  Наразі підтримується лише 'zap' для структурованого логування.
--log-outputs 'default'
  Вкажіть 'stdout' або 'stderr', щоб пропустити логування journald навіть при запуску під systemd, або список цілей виводу, розділених комами.
--log-level 'info'
  Налаштовує рівень логування. Підтримуються лише debug, info, warn, error, panic або fatal.
--enable-log-rotation 'false'
  Увімкнути ротацію логів для одного файлу цілі log-outputs.
--log-rotation-config-json '{"maxsize": 100, "maxage": 0, "maxbackups": 0, "localtime": false, "compress": false}'
  Налаштовує ротацію логів, якщо увімкнено, за допомогою конфігурації JSON логера. MaxSize(MB), MaxAge(дні,0=без обмежень), MaxBackups(0=без обмежень), LocalTime(використовувати локальний час комп'ютера), Compress(gzip)".

Експериментальне розподілене трасування

--experimental-enable-distributed-tracing 'false'
  Увімкнути експериментальне розподілене трасування.
--experimental-distributed-tracing-address 'localhost:4317'
  Адреса колектора розподіленого трасування.
--experimental-distributed-tracing-service-name 'etcd'
  Назва служби розподіленого трасування, повинна бути однаковою для всіх екземплярів etcd.
--experimental-distributed-tracing-instance-id ''
  Ідентифікатор екземпляра розподіленого трасування, повинен бути унікальним для кожного екземпляра etcd.
--experimental-distributed-tracing-sampling-rate '0'
  Кількість зразків для збору на мільйон спанів для OpenTelemetry Tracing (якщо увімкнено прапорцем experimental-enable-distributed-tracing).

Проксі v2

--proxy 'off'
  Налаштування режиму проксі ('off', 'readonly' або 'on').
--proxy-failure-wait 5000
  Час (у мілісекундах), протягом якого кінцева точка буде утримуватися у стані відмови.
--proxy-refresh-interval 30000
  Час (у мілісекундах) інтервалу оновлення кінцевих точок.
--proxy-dial-timeout 1000
  Час (у мілісекундах) для тайм-ауту набору номера.
--proxy-write-timeout 5000
  Час (у мілісекундах) для тайм-ауту запису.
--proxy-read-timeout 0
  Час (у мілісекундах) для тайм-ауту читання.

Експериментальні функції

--experimental-initial-corrupt-check 'false'
  Увімкнути перевірку пошкодження даних перед обслуговуванням будь-якого клієнтського/партнерського трафіку.
--experimental-corrupt-check-time '0s'
  Тривалість часу між перевірками пошкодження кластера.
--experimental-enable-v2v3 ''
  Обслуговувати запити v2 через бекенд v3 під заданим префіксом. Застаріло і буде виведено з експлуатації у v3.6.
--experimental-enable-lease-checkpoint 'false'
  ExperimentalEnableLeaseCheckpoint дозволяє основному орендодавцю зберігати залишковий час оренди, щоб запобігти безкінечному автоматичному поновленню довгострокових оренд.
--experimental-compaction-batch-limit 1000
  ExperimentalCompactionBatchLimit встановлює максимальну кількість ревізій, видалених у кожній партії ущільнення.
--experimental-peer-skip-client-san-verification 'false'
  Пропустити перевірку поля SAN у сертифікаті клієнта для з'єднань між партнерами.
--experimental-watch-progress-notify-interval '10m'
  Тривалість періодичного повідомлення про прогрес спостереження.
--experimental-warning-apply-duration '100ms'
  Попередження генерується, якщо запити займають більше цього часу.
--experimental-txn-mode-write-with-shared-buffer 'true'
  Увімкнути використання спільного буфера для запису транзакцій у операціях перевірки тільки для читання.
--experimental-bootstrap-defrag-threshold-megabytes
  Увімкнути дефрагментацію під час завантаження сервера etcd за умови, що вона звільнить принаймні вказаний поріг дискового простору. Потрібно встановити ненульове значення, щоб набуло чинності.

Небезпечні функції

--force-new-cluster 'false'
  Примусово створити новий одночленний кластер.
--unsafe-no-fsync 'false'
  Вимикає fsync, небезпечно, призведе до втрати даних.

Файл конфігурації

Файл конфігурації etcd складається з YAML map, де ключі є назвами прапорців командного рядка, а значення — значеннями прапорців. Щоб використовувати цей файл, вкажіть шлях до файлу як значення прапорця --config-file або змінної середовища ETCD_CONFIG_FILE.

Для прикладу дивіться зразок etcd.conf.yml.