Параметри конфігурації
Ви можете налаштувати etcd за допомогою наступного:
- Прапорці командного рядка
- Змінні середовища: кожен прапорець має відповідну змінну середовища,
яка має таку ж назву, але з префіксом
ETCD_
і у форматі snake case. Наприклад,--some-flag
будеETCD_SOME_FLAG
. - Файл конфігурації
Увага: Якщо ви змішуєте параметри конфігурації, то застосовуються наступні правила.
- Прапорці командного рядка мають пріоритет над змінними середовища.
- Якщо ви надаєте файл конфігурації, всі прапорці командного рядка та змінні середовища ігноруються.
Прапорці командного рядка
Прапорці представлені нижче у форматі --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.
Відгук
Чи це було корисним?
Раді чути! Будь ласка, повідомте нам, як ми можемо зробити краще.
Дуже шкода це чути. Будь ласка, повідомте нам, як ми можемо зробити краще.