replication.yml
Все настройки replication.yml.
replication.yml подключает Identica к Redis, через который прокси делят сессии, входы в процессе и другое текущее состояние. Руководство Несколько прокси объясняет, что именно делится и как это настроить.
Без репликации каждый прокси хранит это состояние в собственной памяти: другие прокси его не видят, и при перезапуске прокси оно теряется.
Принимаетtrue или false
По умолчаниюfalse
Влияет нато, подключается ли Identica к Redis
При true Identica подключается к Redis при запуске. Если Redis недоступен, запуск завершается ошибкой, и прокси отклоняет всех игроков, пока Redis не вернётся, а прокси не будет перезапущен.
Осторожно
Принимаетстроку
По умолчаниюслучайный идентификатор, записываемый при первом запуске
Влияет наимя этого прокси среди прокси сети
Дайте каждому прокси собственное имя и не меняйте его. Сессия запоминает serverId прокси, на котором находится её игрок, поэтому вход через другой прокси отключает именно этого игрока; по этому же имени каждый прокси отличает свои события от событий других.
Для опытных
Принимаетдлительность не меньше "3s"
По умолчанию"30s"
Влияет нато, как долго записи упавшего прокси остаются видны другим прокси
Прокси владеет сессией каждого игрока, подключённого через него, и удержанием ника каждого игрока, который через него входит. Пока прокси ими владеет, он продлевает их каждую треть этого времени — при значении по умолчанию раз в 10 секунд — и удаляет, как только они ему больше не нужны. Если прокси останавливается, не удалив их, например при падении, его записи исчезают через это время после остановки. До этого другие прокси всё ещё показывают эти сессии, REJECT_NEW по-прежнему отклоняет эти аккаунты, а игрок с другого адреса по-прежнему получает отказ под ником, под которым шёл вход.
Каждое продление стоит Redis трёх команд, а каждое десятое продление сессии — ещё двух. Для 1000 игроков в сети это около 360 команд Redis в секунду при значении по умолчанию. Более короткий тайм-аут быстрее освобождает аккаунты и ники упавшего прокси и пропорционально увеличивает число команд.
Значение меньше "3s" отклоняется при запуске.
redis
Принимаетстроку
По умолчанию""
Влияет напароль Redis
Если значение пустое, Identica подключается без пароля. Пользователю ACL Redis для Identica нужны команды evalsha и script; см. Игрок на двух прокси одновременно.
Принимаетчисло миллисекунд
По умолчанию0
Влияет нато, сколько может занимать подключение к Redis или ответ от него
0 — ждать без ограничения.
channels
Для опытныхКаналы Redis, через которые прокси сообщают друг другу об изменениях. Все прокси сети используют одинаковые имена; меняйте их, только чтобы запустить несколько сетей на одном Redis.
| Канал | По умолчанию | Что передаёт |
|---|---|---|
accountUpdates | "identica:accounts" | изменения аккаунтов |
sessions | "identica:sessions" | изменения сессий |
conflicts | "identica:conflicts" | конфликты ников |
events | "identica:events" | события, на которые реагируют другие прокси, например удаление аккаунта на одном из прокси; если значение пустое, используется sessions |
cache
Для опытныхИмена, под которыми прокси хранят общее состояние в Redis. Все прокси сети используют одинаковые имена; меняйте их, только чтобы запустить несколько сетей на одном Redis.
| Имя | По умолчанию | Что хранит |
|---|---|---|
reservations | "identica:reservation" | резервирования аккаунтов, общие для прокси |
instructions | "identica:handshake-instructions" | решения провайдеров запросить у подключающегося игрока собственный вход |
pipelineState | "identica:pipeline-state" | входы в процессе |
attempts | "identica:provider-attempts" | провайдеры, уже опробованные для ника и адреса |
sessions.records | "identica:sessions:records" | сессии |
sessions.accounts | "identica:sessions:accounts" | сессии каждого аккаунта |
sessions.subjects | "identica:sessions:subjects" | сессии каждой идентичности провайдера |
Пароли, которые вводят игроки, никогда не записываются в Redis. Пока регистрация ждёт повторного ввода пароля, Redis хранит его хеш.
У функций и провайдеров свои имена в их настройках, например replication.state у sentinel.
enabled: true
serverId: "proxy-1"
heartbeatTimeout: "30s"
redis:
host: "redis.internal"
port: 6379
credential: ""
ssl: false
timeout: 5000