Операційні вимоги для «Як працювати з резервним вузлом під час оновлення» перевірено 2 серпня 2026 року. Для production використовуйте тільки реліз Agave, рекомендований для конкретного кластера, і звіряйте параметри з agave-validator --help . Офіційні вимоги Anza на цю дату орієнтують операторів на Ubuntu 24.04, щонайменше 12 ядер/24 потоки, 256 ГБ RAM, окремі швидкі NVMe та симетричний канал від 2 Гбіт/с; це рекомендації, а не гарантія достатньої продуктивності.
Резервний вузол (hot standby) — це повноцінна копія вашого валідатора, яка синхронізується з мережею в реальному часі, але не голосує. Під час оновлення основного вузла саме резервний забезпечує безперервність роботи: якщо оновлення піде не за планом, ви переключаєте голосування на резерв за хвилини, а не відновлюєте вузол з нуля годинами. Нижче — повний операційний цикл від архітектури до зворотного переключення.
Архітектура з резервним вузлом
Схема передбачає два фізичні сервери в різних точках присутності, кожен із власним identity-ключем. Ключі налаштовуються так, що обидва identity можуть голосувати від імені одного валідаторного акаунта — для цього на аккаунті валідатора реєструється обидва public key через інструкцію authorize.
Базова топологія:
- Вузол A (основний) — активний, голосує, обслуговує RPC (якщо застосовується), приймає інгрес-трафік.
- Вузол B (резервний) — синхронізований, не голосує, слухає мережу, готовий прийняти роль основного.
- Загальне — обидва підключені до однакових наборів ingress-пірів, мають однакову конфігурацію ledger та accounts.
Критична вимога: identity-ключі мають бути різними, але обидва авторизовані на валідаторному аккаунті. Не використовуйте один і той самий ключ на двох вузлах одночасно — це призведе до дублювання голосів і штрафів.
Передумови для реалізації:
- Два сервери з однаковими або еквівалентними характеристиками (CPU, RAM, NVMe).
- Два окремі identity-ключові пари.
- Авторизація обох ключів на валідаторному аккаунті (зверніть увагу на поточні правила авторизації в документації клієнта — вони можуть змінюватися).
- Моніторинг синхронізації обох вузлів (slot, epoch, skip rate).
Синхронізація резервного вузла
Резервний вузол запускається як звичайний валідатор, але без прапорця голосування. Він завантажує снапшоти, відтворює леджер і тримає стан accounts на рівні з мережею.
Ключові параметри запуску резервного вузла (Agave, перевірено на Ubuntu 24.04 LTS):
- --no-voting — вузол не відправляє голоси.
- --identity — вказується окремий ключ резервного вузла.
- --known-validator — список довірених валідаторів для ingress-фільтрації (ідентичний до основного).
- --expected-genesis-hash — обов'язково, щоб уникнути підключення до неправильного кластера.
Перевірка стану синхронізації:
- solana slot — має збігатися з поточним слотом мережі з відхиленням не більше ніж кілька слотів.
- solana catchup — має показувати yes або відсутність відставання.
- Лог вузла — відсутність повідомлень "skipping slot" у великій кількості.
Типова проблема: резервний вузол відстає через недостатню пропускну здатність диска або мережі. Якщо відставання перевищує 100–200 слотів стабільно, резервний непридатний для переключення — спочатку усуньте причину відставання.
Оновлення основного вузла з активним резервом
Коли резервний підтверджено синхронізованим, ви можете безпечно зупинити основний вузол для оновлення. Процедура:
- Перевірте стан резервного — виконайте solana slot і solana catchup на вузлі B. Переконайтеся, що відставання мінімальне.
- Зупиніть голосування на вузлі A — виконайте solana validator withdraw-all-stake або просто зупиніть сервіс (systemctl stop solana). Вузол перестане голосувати, і мережа не буде очікувати його голосів.
- Оновіть бінарний файл на вузлі A — завантажте нову версію клієнта, замініть бінарник, перевірте версію командою agave-validator --version.
- Запустіть вузол A без голосування — додайте --no-voting до конфігурації або запуску. Дайте йому синхронізуватися до поточного слота.
- Перевірте стабільність — переконайтеся, що вузол A не крашиться, логи чисті, слот наздоганяє мережу.
- Увімкніть голосування на вузлі A — приберіть --no-voting і перезапустіть сервіс.
Ризик: якщо на кроці 4 вузол A не може синхронізуватися (наприклад, несумісність леджера з новою версією), ви маєте працюючий резервний вузол B, на який можна переключити голосування негайно.
Попередження: ніколи не залишайте обидва вузли з увімкненим голосуванням одночасно. Це призведе до дублювання голосів і потенційного slashing.
Переключення ролей при проблемах
Якщо після оновлення основний вузол не стартує, крашиться під час синхронізації або показує аномальну поведінку, виконайте аварійне переключення:
- Підтвердьте, що вузол A не голосує — перевірте процеси, логи, статус сервісу. Якщо є сумніви, вбийте процес примусово.
- Увімкніть голосування на вузлі B — приберіть --no-voting з конфігурації та перезапустіть сервіс: systemctl restart solana.
- Перевірте, що вузол B голосує — виконайте solana validators або перевірте лог на наявність записів "vote sent".
- Зафіксуйте проблему на вузлі A — збережіть логи, зробіть копію леджера (якщо потрібно для діагностики), але не видаляйте нічого, поки проблема не зрозуміла.
Час переключення за нормальної роботи інфраструктури — 2–5 хвилин. Основний споживач часу — перевірка того, що вузол A дійсно мовчить.
Типова помилка: переключення на резервний, який фактично відставав, але ви цього не перевірили. Результат — резервний починає голосувати з відставанням, пропускає слоти, репутація валідатора страждає. Завжди перевіряйте solana catchup перед увімкненням голосування.
Зворотне переключення після успішного оновлення
Коли вузол A успішно оновлено, стабільно працює і синхронізований, поверніть його в активну роль:
- Перевірте синхронізацію вузла A — solana slot і solana catchup мають показувати повну готовність.
- Зупиніть голосування на вузлі B — додайте --no-voting і перезапустіть, або зупиніть сервіс.
- Увімкніть голосування на вузлі A — приберіть --no-voting, перезапустіть.
- Перевірте голосування вузла A — логи, solana validators.
- Переконайтеся, що вузол B не голосує — фінальна перевірка логів вузла B.
Після зворотного переключення резервний вузол продовжує працювати в режимі --no-voting, підтримуючи синхронізацію. Це його стандартний стан між оновленнями.
Вартість та складність резервного вузла
Резервний вузол — це повноцінний сервер з тими самими апаратними вимогами, що й основний. Він споживає ресурси постійно: процесор на відтворення леджера, мережевий трафік, дисковий I/O, оперативну пам'ять. Тобто ви фактично подвоюєте інфраструктурні витрати на валідатор.
Складність управління включає:
- Підтримку двох серверів — оновлення ОС, моніторинг, заміна дисків, мережове обслуговування — все подвоюється.
- Синхронізацію конфігурації — будь-яка зміна списку known-validator, параметрів мережі, правил фаєрвола має бути застосована на обох вузлах.
- Авторизацію ключів — додаткова операційна складність при ротації ключів або зміні авторизованих identity.
- Моніторинг двох точок — алерти мають покривати обидва вузли, а панель моніторингу має чітко показувати, який вузол активний, а який резервний.
Резервний вузол виправданий для операторів, які:
- підтримують RPC-інфраструктуру з жорсткими SLA;
- керують великими стейками, де кожна пропущена епоха означає значні втрати;
- мають клієнтські зобов'язання щодо доступності.
Для невеликих валідаторів з обмеженим бюджетом альтернативою є ретельне тестування оновлень на testnet та devnet (див. Як тестувати оновлення на testnet та devnet) та наявність перевіреної процедури відновлення з снапшота. Якщо оновлення все ж пішло не за планом, наступний крок — діагностика та виправлення (див. Як обробити невдале оновлення: діагностика та виправлення).