Identica

replication.yml

Все настройки replication.yml.

replication.yml подключает Identica к Redis, через который прокси делят сессии, входы в процессе и другое текущее состояние. Руководство Несколько прокси объясняет, что именно делится и как это настроить.

Без репликации каждый прокси хранит это состояние в собственной памяти: другие прокси его не видят, и при перезапуске прокси оно теряется.

enabled

Принимаетtrue или false

По умолчаниюfalse

Влияет нато, подключается ли Identica к Redis

При true Identica подключается к Redis при запуске. Если Redis недоступен, запуск завершается ошибкой, и прокси отклоняет всех игроков, пока Redis не вернётся, а прокси не будет перезапущен.

serverId

Осторожно

Принимаетстроку

По умолчаниюслучайный идентификатор, записываемый при первом запуске

Влияет наимя этого прокси среди прокси сети

Дайте каждому прокси собственное имя и не меняйте его. Сессия запоминает serverId прокси, на котором находится её игрок, поэтому вход через другой прокси отключает именно этого игрока; по этому же имени каждый прокси отличает свои события от событий других.

heartbeatTimeout

Для опытных

Принимаетдлительность не меньше "3s"

По умолчанию"30s"

Влияет нато, как долго записи упавшего прокси остаются видны другим прокси

Прокси владеет сессией каждого игрока, подключённого через него, и удержанием ника каждого игрока, который через него входит. Пока прокси ими владеет, он продлевает их каждую треть этого времени — при значении по умолчанию раз в 10 секунд — и удаляет, как только они ему больше не нужны. Если прокси останавливается, не удалив их, например при падении, его записи исчезают через это время после остановки. До этого другие прокси всё ещё показывают эти сессии, REJECT_NEW по-прежнему отклоняет эти аккаунты, а игрок с другого адреса по-прежнему получает отказ под ником, под которым шёл вход.

Каждое продление стоит Redis трёх команд, а каждое десятое продление сессии — ещё двух. Для 1000 игроков в сети это около 360 команд Redis в секунду при значении по умолчанию. Более короткий тайм-аут быстрее освобождает аккаунты и ники упавшего прокси и пропорционально увеличивает число команд.

Значение меньше "3s" отклоняется при запуске.

redis

host

Принимаетстроку

По умолчанию"localhost"

Влияет наадрес сервера Redis

port

Принимаетцелое число

По умолчанию6379

Влияет напорт сервера Redis

credential

Принимаетстроку

По умолчанию""

Влияет напароль Redis

Если значение пустое, Identica подключается без пароля. Пользователю ACL Redis для Identica нужны команды evalsha и script; см. Игрок на двух прокси одновременно.

ssl

Принимаетtrue или false

По умолчаниюfalse

Влияет нато, использует ли подключение к Redis TLS

timeout

Принимаетчисло миллисекунд

По умолчанию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

На этой странице