Информация о Valkey для Forgejo

Информация, связанная с кластером Valkey, обеспечивающим работу развёртывания Forgejo (gitforge) в Fedora.

Обзор

Этот документ охватывает всё, что вам нужно знать о готовом к эксплуатации 6-узловом кластере Valkey, используемом Forgejo (и любым другим приложением).

Контактная информация

Владелец

Команда инфраструктуры Fedora

Контакты

#fedora-admin, sysadmin-main, sysadmin-forge

Назначение

Предоставление базовой ориентации и введения в группу sysadmin

Требования

  • Администрирование Forgejo требует наличия группы sysadmin-openshift, а также доступа sysadmin-main для доступа к машинам os-control.

Обзор кластера

Установка

Установка кластера Valkey выполняется с помощью задачи/конфигурации, содержащейся в роли Ansible Forgejo. Возможно, стоит выделить это в отдельную роль, если Valkey окажется полезным и в других частях инфраструктуры.

Топология
3 главных узла + 3 реплики (по одной реплике на каждый главный узел)
Высокая доступность
  • Полное покрытие слотов (16384 слота)

  • Автоматическое переключение при отказе (повышение реплики до главной < 30 с)

  • Нет единой точки отказа

Узлы (внутренний DNS OpenShift)
valkey-0.forgejo.default.svc.cluster.local:6379  (главный)
valkey-1.forgejo.default.svc.cluster.local:6379  (главный)
valkey-2.forgejo.default.svc.cluster.local:6379  (главный)
valkey-3.forgejo.default.svc.cluster.local:6379  (реплика 0)
valkey-4.forgejo.default.svc.cluster.local:6379  (реплика 1)
valkey-5.forgejo.default.svc.cluster.local:6379  (реплика 2)

Почему все 6 узлов? → Максимальная устойчивость при запуске приложения и во время поэтапных перезапусков.

Пример Forgejo app.ini

Эти значения редактируются в файле roles/openshift-apps/forgejo/templates/values.yml. Запустите плейбук playbooks/openshift-apps/forgejo.yml, чтобы применить изменения.

    cache:
      TYPE: redis
      CONN_STR: "redis+cluster://:{{ (env == 'production') | ternary(forgejo_valkey_password, forgejo_stg_valkey_password) }}@valkey-0.forgejo.default.svc.cluster.local:6379,valkey-1.forgejo.default.svc.cluster.local:6379,valkey-2.forgejo.default.svc.cluster.local:6379,valkey-3.forgejo.default.svc.cluster.local:6379,valkey-4.forgejo.default.svc.cluster.local:6379,valkey-5.forgejo.default.svc.cluster.local:6379/0"

Быстрые проверки работоспособности

# Статус одной строкой
redis-cli -c -h valkey-0.forgejo.default.svc.cluster.local -p 6379 -a MySuperSecret123 cluster info | grep -E 'cluster_state|cluster_known_nodes'

# Полный список узлов
redis-cli -c -h valkey-0.forgejo.default.svc.cluster.local -p 6379 -a MySuperSecret123 cluster nodes

# Тест записи/чтения
redis-cli -c -h valkey-0.forgejo.default.svc.cluster.local -p 6379 -a MySuperSecret123 set grokky:test "meow" EX 60
redis-cli -c -h valkey-5.forgejo.default.svc.cluster.local -p 6379 -a MySuperSecret123 get grokky:test

Примечание о совместимости

Valkey на 100% совместим на уровне протокола с Redis 7.2/8.0. Все инструменты Redis (redis-cli, redis-benchmark, StackExchange.Redis, ioredis, go-redis и т. д.) работают без изменений.