В standalone-установке Stronghold работает как сервис Linux (systemd) на отдельных серверах. Здесь администратор сам управляет конфигурацией, TLS-сертификатами, распечатыванием и сетью. Пошаговая установка описана в разделе «Установка», параметры конфигурационного файла — в разделе «Настройка».
Варианты развёртывания
| Вариант | Состав | Хранилище | Назначение |
|---|---|---|---|
| Одноузловой сервер | Один сервер, подготовленный командой stronghold bootstrap service | Raft на одном узле или filesystem | Тестирование, разработка, небольшие некритичные установки |
| HA-кластер | Три и более сервера: один активный узел, остальные standby | Интегрированное хранилище Raft | Production-установки с отказоустойчивостью |
Бэкенд filesystem не поддерживает режим HA. Для HA используйте Raft.
По умолчанию stronghold bootstrap service создаёт конфигурацию с хранилищем Raft.
Команда stronghold bootstrap также генерирует Helm-чарт и Docker-образ для развёртывания в стороннем Kubernetes. Подробнее — в разделе «Быстрый старт».
Схема HA-кластера
На схеме показан HA-кластер standalone-установки:

- Один узел получает блокировку в хранилище и становится активным, остальные переходят в режим standby.
- Запросы, пришедшие на standby-узел, пересылаются на активный узел или клиент перенаправляется на
api_addrактивного узла — в зависимости от настроек и состояния кластера. В Stronghold EE performance standby-узлы обслуживают чтения локально. Подробнее — в разделе «Performance standby». - Raft реплицирует данные между всеми узлами: каждый узел хранит полную копию данных, зашифрованных барьером.
- Для кворума нужно как минимум три сервера. Кворум рассчитывается как
floor(n/2)+1голосующих узлов, гдеn— число голосующих узлов. Узлы, присоединённые сretry_join_as_non_voter = true(флаг-non-voter), не участвуют в голосовании.
Узел кластера
На каждом сервере:
- бинарный файл и конфигурация:
/opt/stronghold/stronghold,/opt/stronghold/config.hcl; - данные Raft:
/opt/stronghold/dataс правами0700, владелец — системный пользовательstronghold; - TLS: сертификат и ключ узла и корневой CA в
/opt/stronghold/tls. Для каждого узла выпускается свой сертификат; - systemd-unit
/etc/systemd/system/stronghold.service, сервис запускается от имени пользователяstrongholdс capabilityCAP_IPC_LOCK.
Основные параметры конфигурации узла:
# Адрес для Raft и пересылки запросов.
cluster_addr = "https://10.20.30.10:8201"
# Адрес для клиентов и перенаправления.
api_addr = "https://10.20.30.10:8200"
disable_mlock = true
listener "tcp" {
address = "0.0.0.0:8200"
tls_cert_file = "/opt/stronghold/tls/node-1-cert.pem"
tls_key_file = "/opt/stronghold/tls/node-1-key.pem"
}
storage "raft" {
path = "/opt/stronghold/data"
node_id = "raft-node-1"
retry_join {
leader_api_addr = "https://10.20.30.11:8200"
leader_ca_cert_file = "/opt/stronghold/tls/stronghold-ca.pem"
}
}api_addrанонсируется другим узлам для перенаправления клиентов.cluster_addrанонсируется для связи между узлами. Трафик между участниками кластера всегда идёт по TLS, схема в адресе игнорируется.- Блоки
retry_joinперечисляют узлы, к которым новый узел пытается присоединиться при старте. Присоединение выполняется через API узла-лидера (порт8200). - С Raft задайте
disable_mlock = trueи отключите своп на сервере. Отключённый своп не даёт записать на диск расшифрованные данные из памяти. Отдельныйha_storageс Raft не объявляйте.
Инициализация и распечатывание
Администратор инициализирует и распечатывает standalone-кластер в следующем порядке:
- Кластер инициализируется один раз, на первом узле. По умолчанию ключ распечатывания делится на 5 долей, для распечатывания нужно 3 (
-key-shares,-key-threshold). - При Shamir seal каждый узел распечатывается отдельно после каждого перезапуска.
- Чтобы не распечатывать узлы вручную, настройте автоматическое распечатывание:
- HSM через PKCS#11 (
seal "pkcs11", Stronghold EE); - Yandex Cloud KMS (
seal "yandexcloudkms", Stronghold EE); seal "inner-cluster"(Stronghold EE) — распечатанные узлы распечатывают остальные, без внешнего KMS.
- HSM через PKCS#11 (
Seal pkcs11 и yandexcloudkms доступны только в standalone-установке. В Deckhouse Platform seal inner-cluster в Stronghold EE настраивает сам модуль stronghold.
Резервное копирование
Доступны два способа резервного копирования:
- Снимки Raft создаются вручную. Подробнее — в разделе «Резервное копирование в Stronghold».
- В Stronghold EE доступны автоматические снимки по расписанию на локальный диск или в S3-совместимое хранилище. Снимки создаёт активный узел, поэтому для production храните их во внешнем объектном хранилище.
Порядок восстановления при потере кворума — на странице «Восстановление после потери кворума».
Межкластерная репликация
Несколько standalone-кластеров Stronghold EE можно связать performance-репликацией (PR) или репликацией для аварийного восстановления (DR). Для этого secondary-кластеру нужен доступ к кластерному порту primary. Архитектура и топологии описаны на странице «Архитектура репликации: Stronghold и Stronghold EE», сетевые требования — на странице «Сетевые порты».