Цей довідник містить операційні процедури для розгортання, обслуговування та відновлення валідаторів Solana. Матеріал орієнтований на інженерів, які керують інфраструктурою безпосередньо: від вибору заліза до реагування на інциденти. Кожен розділ містить конкретні кроки, перевірки та межі застосування.
Операційні вимоги для «Валідатори та інфраструктура Solana: повний операційний довідник» перевірено 2 серпня 2026 року. Для production використовуйте тільки реліз Agave, рекомендований для конкретного кластера, і звіряйте параметри з agave-validator --help . Офіційні вимоги Anza на цю дату орієнтують операторів на Ubuntu 24.04, щонайменше 12 ядер/24 потоки, 256 ГБ RAM, окремі швидкі NVMe та симетричний канал від 2 Гбіт/с; це рекомендації, а не гарантія достатньої продуктивності.
Сервер, мережа та архітектура
Вимоги до сервера валідатора Solana
Валідатор Solana — це ресурсомісткий вузол, який обробляє транзакції в реальному часі та зберігає повний стан мережі. Мінімальні вимоги дозволяють запустити вузол, але стабільна робота на mainnet-beta потребує значного запасу.
Базові параметри для mainnet-beta (перевірте актуальні вимоги у репозиторії Agave перед розгортанням):
- CPU: 12+ фізичних ядер, 16+ рекомендовано
- RAM: 128 ГБ мінімум, 256 ГБ для комфортного запасу під час пікових навантажень
- Накопичувач: від 2 ТБ NVMe для ledger та accounts
- ОС: Ubuntu 24.04 LTS або 24.04 LTS (amd64)
Ці цифри є відправною точкою. Реальне навантаження залежить від стану мережі, кількості активних акаунтів та тривалості епохи.
Bare metal чи орендований сервер для валідатора
Для продакшн-валідатора на mainnet-beta перевага віддається bare metal. Причина — детермінованість вводу-виводу: віртуальні машини додають шар гіпервізора, який непередбачувано впливає на latency дискових операцій. Навіть незначні затримки у зчитуванні accounts збільшують skip rate.
Орендований виділений сервер підходить, якщо провайдер гарантує доступ до NVMe без шару емуляції та фіксовану прив'язку ядер до вузла. Перевірте у провайдера, чи використовується pass-through диска до PCIe слота.
Оптимальний CPU для валідатора Solana
Agave валідатор написаний на Rust і активно використовує багатопотоковість. Ключові фактори вибору CPU:
- Частота на одне ядро: впливає на швидкість обробки окремих транзакцій
- Кількість фізичних ядер: дозволяє паралельно обробляти етапи пайплайну (receive, verify, process, bank)
- Розмір L3-кешу: великий кеш зменшує звернення до пам'яті при роботі з accounts
Гіперпоточність (SMT/HT) зазвичай вимикають у продакшні: фізичні ядра дають більш стабільну latency. Конкретні моделі залежать від доступності у вашому дата-центрі — орієнтуйтеся на високу базову частоту та мінімум 12 ядер.
NVMe-накопичувачі для валідатора: вибір та налаштування
NVMe — критичний компонент. Валідатор постійно читає та записує accounts, snapshots та ledger.
Критерії вибору:
- Інтерфейс: PCIe Gen4 або Gen5 — різниця у пропускній здатності суттєва при відновленні з snapshot
- Endurance: орієнтуйтеся на DWPD не нижче 1 для робочого навантаження
- Форм-фактор: U.2 або EDSFF (E3.S/E1.S) для серверних шасі
Налаштування:
- Перевірте, що диск працює в режимі NVMe, а не SATA emulation
- Вимкніть сторожовий таймер power management для стабільності:
nvme set-feature -f 0x0a -v 0 /dev/nvme0 - Форматуйте з аліасом для зменшення write amplification:
mkfs.ext4 -O large_file -E stride=32,stripe-width=32 /dev/nvme0n1p1
Розділяти ledger та accounts на різні фізичні диски має сенс при інтенсивному навантаженні на RPC-вузли. Для валідатора достатньо одного високопродуктивного диска з розділами.
Мережеві вимоги валідатора: пропускна здатність, latency, порти
Solana використовує протокол Turbine для трансляції блоків та Gossip для обміну метаданими. Мережеві вимоги:
- Пропускна здатність: мінімум 1 Гбіт/с, рекомендовано 10 Гбіт/с — під час пікових сплесків транзакцій вузол отримує значний обсяг даних
- Latency: важлива не абсолютна величина, а стабільність (jitter). Коливання понад 5 мс між сусідніми вузлами помітно впливають на синхронізацію
- Порти (UDP та TCP): 8000–8020 для Gossip та Turbine, 8900 для RPC (якщо увімкнено)
Перевірте, що ваш провайдер не обмежує UDP-трафік на цих портах — це поширена причина проблем із Gossip.
Вибір дата-центру для розміщення валідатора
Географія впливає на latency до інших валідаторів. Solana не має фіксованої «столиці» мережі, але більшість вузлів зосереджена у певних регіонах. Орієнтуйтеся на дата-центри, де вже розміщено кілька активних валідаторів.
Критерії вибору:
- Наявність прямих peering-з'єднань з основними мережевими провайдерами
- Можливість отримати dedicated 10 Гбіт/с порт без oversubscription
- Відсутність обмежень на UDP-трафік
- Фізична безпека та доступ до колокації для заміни обладнання
Резервування інфраструктури: hot spare та автоматичний failover
Hot spare — це повністю налаштований вузол, який готовий прийняти навантаження, але не бере участі в консенсусі. Для Solana це означає:
- Ідентичне залізо в тому ж дата-центрі
- Синхронізовані ключі (identity та vote) на зашифрованому носії
- Актуальний snapshot та ledger
Автоматичний failover у Solana ускладнений тим, що два вузли з однаковим identity не можуть працювати одночасно. Практична схема: моніторинг виявляє відмову основного вузла, зупиняє його (через remote management типу IPMI), і лише після цього запускає hot spare. Ручне підтвердження перед переключенням зменшує ризик split-brain.
Архітектура RPC-вузла: призначення, навантаження, масштабування
RPC-вузол надає API для взаємодії з блокчейном. Він відрізняється від валідатора: не бере участі в консенсусі, але зберігає повний стан мережі.
Навантаження на RPC-вузол залежить від кількості клієнтів та типів запитів. Найважчі — запити, що читають багато акаунтів (наприклад, getProgramAccounts з фільтрами).
Масштабування:
- Вертикальне: більше RAM для кешування accounts, швидший NVMe
- Горизонтальне: кілька RPC-вузлів за load balancer з ротацією запитів
Розділяйте валідатор та RPC на різні фізичні машини — RPC-навантаження не повинно впливати на консенсус.
Мережева безпека валідатора: firewall, SSH, захист доступу
Базові правила:
- Firewall: дозволіть лише UDP/TCP 8000–8020 для Gossip/Turbine, TCP 22 для SSH (обмежений за IP), TCP 8900 для RPC (якщо потрібно)
- SSH: ключовий доступ лише, заборона паролів, нестандартний порт рекомендовано
- Ключі: identity та vote keypair зберігайте зашифрованими, розшифровуйте лише під час запуску або через keyring
Не відкривайте RPC-порт (8900) на валідаторі в інтернет — використовуйте окремий RPC-вузол або тунель.
Розподілена архітектура: кілька вузлів, балансування, географія
Якщо ви оперуєте кількома валідаторами, розподіляйте їх географічно. Це зменшує ризик одночасної втрати зв'язку з мережею через проблему в одному дата-центрі.
Балансування запитів між RPC-вузлами виконуйте на рівні L4 (TCP/UDP) — L7 не підходить через специфіку протоколу. Для публічних RPC-сервісів використовуйте rate limiting на рівні reverse proxy перед вузлами.
Встановлення й конфігурація
Як підготувати Linux для валідатора Solana
Середовище: Ubuntu 24.04 LTS (amd64), свіжовстановлена, без додаткових сервісів.
Кроки підготовки:
- Оновіть систему:
sudo apt update && sudo apt upgrade -y - Встановіть залежності:
sudo apt install -y build-essential pkg-config libssl-dev libudev-dev - Налаштуйте sysctl для мережі:
net.core.rmem_max = 134217728net.core.rmem_default = 16777216net.ipv4.udp_rmem_min = 8192
- Збільште ліміти файлових дескрипторів: у
/etc/security/limits.confдодайте* soft nofile 1000000та* hard nofile 1000000 - Вимкніть swap:
sudo swapoff -aта закоментуйте рядки swap у/etc/fstab
Перевірка: ulimit -n має показувати 1000000 після повторного входу.
Як безпечно створити identity та vote account
Ключі валідатора — це точка відмови. Втрата identity keypair означає втрату валідатора.
Безпечна процедура:
- Генеруйте ключі на локальній машині, не на сервері:
solana-keygen new -o ~/validator-identity.json - Генеруйте vote account:
solana-keygen new -o ~/validator-vote.json - Створіть authorized voter (може збігатися з identity або бути окремим):
solana-keygen new -o ~/validator-authority.json - Зробіть зашифровані резервні копії всіх трьох keypair-файлів на окремі носії
- Перенесіть ключі на сервер через зашифрований канал (scp з ключовою автентифікацією)
- Встановіть права доступу:
chmod 600 *.json
Ризик: якщо ключі потраплять до сторонніх, вони зможуть керувати вашим валідатором. Ніколи не зберігайте розшифровані ключі в репозиторіях або на загальнодоступних серверах.
Як перевірити identity, vote account та authorized voter перед запуском
Перед створенням vote account у блокчейні перевірте відповідність ключів:
- Отримайте публічний ключ identity:
solana-keygen pubkey ~/validator-identity.json - Отримайте публічний ключ vote account:
solana-keygen pubkey ~/validator-vote.json - Отримайте публічний ключ authorized voter:
solana-keygen pubkey ~/validator-authority.json - Запишіть ці три адреси та перевірте, що вони відповідають вашим резервним копіям
Створення vote account (виконується один раз):
solana create-vote-account ~/validator-vote.json ~/validator-identity.json ~/validator-authority.json --commission 100- Перевірте створення:
solana vote-account ~/validator-vote.json
Очікуваний результат: команда показує vote account з вашим identity як validator та correct authorized voter.
Як встановити Agave validator крок за кроком
Клієнт: Agave (форк Solana Labs validator). Перевірте актуальну стабільну версію у репозиторії Agave перед встановленням.
- Встановіть binaries через agave-install:
sh -c "$(curl -sSfL https://release.anza.xyz/stable/install)"
- Додайте до PATH:
export PATH="$HOME/.local/share/solana/install/active_release/bin:$PATH" - Перевірте версію:
agave-validator --version - Створіть робочий каталог:
mkdir -p ~/validator/ledger ~/validator/snapshots - Змонтуйте NVMe до ~/validator/ledger (або налаштуйте відповідний розділ)
Очікуваний результат: agave-validator --version показує встановлену версію Agave.
Як працюють ledger та snapshots у Solana
Ledger — це послідовний лог усіх слотів від генезису. Повний ledger mainnet-beta займає терабайти, тому валідатори використовують snapshots.
Snapshot — це стиснений зріз повного стану мережі (всі accounts та їхні дані) на певний слот. При старті валідатор:
- Завантажує останній доступний snapshot
- Відтворює ledger починаючи з слота snapshot до поточного
- Після синхронізації починає брати участь у консенсусі
Snapshots генеруються періодично (кожні кілька слотів). Розмір snapshot на mainnet-beta — десятки гігабайтів, тому швидкість NVMe критична для завантаження.
Як налаштувати systemd service для валідатора
Створіть файл /etc/systemd/system/agave-validator.service:
[Unit]
Description=Solana Validator
After=network.target
[Service]
Type=simple
User=solana
LimitNOFILE=1000000
Environment="PATH=/home/solana/.local/share/solana/install/active_release/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
ExecStart=/home/solana/.local/share/solana/install/active_release/bin/agave-validator \
--identity /home/solana/validator-identity.json \
--vote-account /home/solana/validator-vote.json \
--ledger /home/solana/validator/ledger \
--accounts /home/solana/validator/accounts \
--rpc-port 8899 \
--no-voting \
--full-rpc-api
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
Параметр --no-voting додається для первинної синхронізації. Після повного завантаження його треба прибрати.
Активація: sudo systemctl daemon-reload && sudo systemctl enable agave-validator
Конфігураційний файл валідатора: ключові параметри
Замість довгих аргументів командного рядка використовуйте конфігураційний файл (формат TOML). Створіть ~/validator/config.toml:
- identity-path: шлях до identity keypair
- vote-account-path: шлях до vote account keypair
- ledger-path: каталог ledger
- accounts-path: каталог accounts (окремо від ledger для кращої продуктивності)
- rpc-port: порт RPC (якщо потрібен локально)
- snapshot-interval-slots: частота генерації snapshot (за замовчуванням підходить для більшості випадків)
- limit-ledger-size: максимальний розмір ledger у GiB (залежить від вашого диска)
- known-validators: список pubkey надійних валідаторів для початкового з'єднання
Запуск з конфігом: agave-validator --config ~/validator/config.toml
Як запустити валідатор на mainnet-beta
Передумови: підготовлений сервер, встановлений Agave, створені ключі, vote account існує в блокчейні.
- Вкажіть кластер:
solana config set --url https://api.mainnet-beta.solana.com - Перевірте з'єднання:
solana slot— має показати поточний слот - Запустіть з
--no-votingдля первинної синхронізації:sudo systemctl start agave-validator - Моніторьте прогрес:
journalctl -u agave-validator -f - Після досягнення поточного слота зупиніть, приберіть
--no-votingз конфігурації та перезапустіть
Очікуваний результат: у логах з'являється «voting», skip rate стабілізується.
Як налаштувати snapshot-джерело та генератор
За замовчуванням валідатор завантажує snapshots з інших вузлів через Gossip. Для прискорення синхронізації можна вказати явне джерело:
- --snapshots /path/to/local/snapshots: використовувати локальні snapshot-файли
- --genesis /path/to/genesis.bin: для повної синхронізації з генезису (не рекомендовано на mainnet)
Генерація snapshot на працюючому вузлі відбувається автоматично. Щоб створити snapshot вручну (наприклад, для міграції): solana-ledger tool create-snapshot --ledger /path/to/ledger <slot> /path/to/output
Перевірте актуальний синтаксис команди у документації Agave — інтерфейс може змінюватися.
Як перенести валідатор на новий сервер без втрати даних
Передумови: новий сервер підготовлений, Agave встановлено, ключі перенесено.
- Зупиніть валідатор на старому сервері:
sudo systemctl stop agave-validator - Створіть snapshot на старому сервері
- Перенесіть snapshot та останній ledger на новий сервер (rsync через SSH або фізичний носій для великих обсягів)
- Перевірте цілісність: розмір файлів та логи завантаження
- Запустіть валідатор на новому сервері
- Перевірте, що vote account показує новий identity у блокчейні
Ризик: якщо обидва сервери запущені з однаковим identity одночасно, мережа може їх покарати. Обов'язково зупиняйте старий вузол перед стартом нового.
Оновлення, міграція та відкат
Як оновити валідатор без зайвого простою
Solana оновлюється через feature activations — нові функції активуються у певному слоті. Валідатор повинен мати версію, яка підтримує ці функції до моменту активації.
Процедура оновлення:
- Перевірте, які feature activations заплановані:
solana feature status - Перевірте, чи підтримує нова версія Agave ці функції
- Оновіть binaries:
agave-install update - Перевірте версію:
agave-validator --version - Перезапустіть сервіс:
sudo systemctl restart agave-validator
Час простою — кілька секунд (час перезапуску процесу). Snapshot та ledger залишаються сумісними.
Як підготувати план відкату валідатора
План відкату потрібен перед кожним оновленням. Елементи:
- Збереження поточних binaries: скопіюйте каталог
~/.local/share/solana/install/active_releaseдо резервної копії - Фіксація версії: запишіть поточну версію та git commit hash
- Перевірка snapshot: переконайтеся, що snapshot створено перед оновленням
- Тест відкату: на testnet перевірте, що старі binaries можуть завантажити поточний snapshot
- Часове вікно: якщо оновлення неспішне, плануйте відкат протягом перших 10–15 хвилин після перезапуску
Як перевірити нову версію Agave перед оновленням
Середовище: testnet або devnet, не mainnet-beta.
- Розгорніть тестовий вузол на testnet з тією ж конфігурацією
- Оновіть binaries до цільової версії
- Запустіть і спостерігайте за логами: відсутність panic, нормальний skip rate, стабільне голосування
- Перевірте, що вузол успішно обробляє транзакції
- Залиште тестовий вузол працювати щонайменше кілька годин перед оновленням mainnet
Як виконати відкат валідатора до попередньої версії
Попередження: відкат під час активної feature activation може призвести до delinquent статусу. Виконуйте відкат лише якщо нова версія несправна і оновлення ще не стало обов'язковим.
Кроки:
- Зупиніть валідатор:
sudo systemctl stop agave-validator - Відновіть старі binaries з резервної копії
- Перевірте версію:
agave-validator --version - Запустіть валідатор
- Моніторьте логи на предмет помилок несумісності snapshot
Якщо snapshot несумісний зі старою версією, доведеться чекати створення нового snapshot або синхронізуватися з більш раннього слота.
Як мігрувати з Solana Labs на Agave клієнт
Agave — це форк Solana Labs validator, який став основним клієнтом. Міграція зазвичай зводиться до заміни binaries:
- Зупиніть валідатор
- Встановіть Agave через офіційний інсталятор
- Перевірте, що конфігураційний файл сумісний (більшість параметрів не змінилися)
- Запустіть валідатор
Перевірте у реліз-нотах Agave, чи є breaking changes у конфігурації для вашої версії. Якщо є — внесіть зміни перед запуском.
Як налаштувати автоматичне оновлення валідатора
Автоматичне оновлення валідатора на mainnet-beta — ризикована практика. Рекомендований підхід:
- Автоматичне оновлення binaries без автоматичного перезапуску
- Сигнал (alert) при наявності нової версії
- Ручне підтвердження перезапуску після перевірки на testnet
Якщо ви все ж налаштовуєте повну автоматизацію, використовуйте agave-install update у cron з перевіркою версії та перезапуском лише за умови, що testnet-вузол вже працює на цій версії без проблем.
Як тестувати оновлення на testnet та devnet
testnet наближені до mainnet за навантаженням, devnet — для розробників. Для тестування оновлень використовуйте testnet:
- Запустіть валідатор на testnet з тією ж конфігурацією, що й mainnet
- Оновіть до цільової версії
- Спостерігайте мінімум 2–4 години: skip rate, memory usage, відсутність panic у логах
- Перевірте, що вузол не відстає за слотами
devnet підходить для швидкої перевірки запуску, але не відображає реальне навантаження.
Як працювати з резервним вузлом під час оновлення
Схема з hot spare дозволяє мінімізувати ризик:
- Оновіть резервний вузол першим
- Перевірте його стабільність на testnet або як non-voting вузол на mainnet
- Після підтвердження стабільності оновіть основний вузол
- Якщо основний вузол не піднімається після оновлення — переключте на резервний
Важливо: резервний вузол не повинен голосувати одночасно з основним. Використовуйте --no-voting на резерві до моменту переключення.
Як обробити невдале оновлення: діагностика та виправлення
Симптоми невдалого оновлення:
- Валідатор не стартує — перевірте логи systemd:
journalctl -u agave-validator -n 100 - Panic при завантаженні snapshot — ймовірно, несумісність формату
- Високий skip rate після оновлення — перевірте метрики та конфігурацію
Порядок дій:
- Зупиніть валідатор
- Збережіть логи для аналізу
- Спробуйте відкат (якщо дозволяє стан мережі)
- Якщо відкат неможливий — перевірте, чи є patch-реліз, що виправляє проблему
- Зверніться до каналу валідаторів з описом проблеми та логами
Як мігрувати ledger та accounts між клієнтами
Якщо ви переходите між клієнтами (наприклад, до альтернативної реалізації), формат ledger та accounts може відрізнятися. Загальний підхід:
- Перевірте документацію цільового клієнта щодо сумісності форматів
- Якщо формати несумісні, використовуйте інструменти міграції (якщо надаються)
- Альтернатива: синхронізуйте з нуля з snapshot цільового клієнта, якщо такі є доступні
Не намагайтеся конвертувати файли вручну — це майже гарантовано призведе до пошкодження стану.
Моніторинг та аварійне відновлення
Чому валідатор став delinquent: причини та рішення
Delinquent статус означає, що валідатор не голосував достатньо слотів протягом епохи. Причини:
- Відставання за слотами: повільний диск, недостатньо CPU, мережеві проблеми
- Зупинка процесу: OOM killer, panic, помилка конфігурації
- Несумісна версія: валідатор не підтримує активовану feature
- Проблеми з Gossip: ізоляція від мережі, блокування UDP
Рішення: діагностуйте конкретну причину за логами та метриками, усуньте її, перезапустіть валідатор. Delinquent статус знімається автоматично після відновлення стабільного голосування.
Як аналізувати skip rate валідатора
Skip rate — відсоток слотів, де валідатор не проголосував. Перевірте:
solana validator-info <identity-pubkey>— базова статистика- Логи: шукайте «skip» для конкретних слотів
- Кореляція з навантаженням: чи збігається високий skip rate з піками CPU або дискового вводу-виводу
Нормальний skip rate на mainnet-beta — зазвичай нижче 5%. Значення вище 10% свідчить про проблеми з інфраструктурою.
Моніторинг валідатора Solana: метрики, інструменти, дашборди
Ключові метрики для моніторингу:
- skip_rate: відсоток пропущених слотів
- slot_height: поточний слот валідатора порівняно з мережею
- root_slot: останній фіналізований слот
- cpu_usage, memory_usage: споживання ресурсів
- disk_iops, disk_latency: навантаження на NVMe
- gossip_peers: кількість з'єднань через Gossip
Інструменти:
- Agave експортує метрики у форматі Prometheus (
--metrics-config) - Grafana для візуалізації (існують готові дашборди від спільноти)
- Alertmanager для сповіщень
Налаштуйте збір метрик з інтервалом 10–15 секунд — частіше створює зайве навантаження.
Аварійне відновлення валідатора: стратегії та кроки
Стратегії відновлення залежать від типу відмови:
- Програмна відмова: перезапуск сервісу, відкат версії
- Відмова диска: заміна диска, відновлення з snapshot
- Відмова сервера: переключення на hot spare
- Повна втрата даних: завантаження snapshot з зовнішнього джерела, повна ресинхронізація
Базовий порядок для повної відмови:
- Оцініть масштаб проблеми за логами та моніторингом
- Якщо сервер недоступний — переключте на hot spare
- Якщо дані пошкоджено — завантажте останній валідний snapshot
- Перевірте цілісність після відновлення
- Проведіть post-mortem аналіз
Як налаштувати alerts та сповіщення для валідатора
Критичні alertи, які потребують негайного реагування:
- Валідатор зупинився (process down)
- Skip rate перевищує 10% протягом 5 хвилин
- Відставання за слотами більше ніж на 100
- Memory usage перевищує 90%
- Disk latency перевищує 10 мс
- Gossip peers впав нижче 20
Канали сповіщень: налаштуйте принаймні два незалежні канали (наприклад, Telegram та email). Перевірте, що alertи не дублюються через хибні налаштування порогів.
Як діагностувати snapshot failures
Симптоми: валідатор не створює snapshot або не може завантажити існуючий.
Діагностика:
- Перевірте вільний простір на диску:
df -h ~/validator/ - Перевірте логи на предмет «snapshot» помилок
- Перевірте права доступу до каталогу snapshots
- Якщо завантаження з мережі не працює — перевірте Gossip з'єднання
Типова причина — нестача місця на диску. Snapshot потребує місця для тимчасових файлів під час створення. Залишайте мінімум 20% вільного простору.
Як аналізувати логи валідатора Solana
Логи валідатора інформативні, але об'ємні. Ключові патерни для пошуку:
- «panic»: критична помилка, потребує негайного втручання
- «error»: помилки, які не призводять до зупинки, але вказують на проблеми
- «skip»: пропущені слоти для голосування
- «snapshot»: статус створення та завантаження snapshot
- «gossip»: проблеми з мережевим з'єднанням
Команди для аналізу:
journalctl -u agave-validator --since "1 hour ago" | grep -i "panic\|error"journalctl -u agave-validator -fдля реального часу
Налаштуйте ротацию логів, щоб вони не заповнили диск: journalctl --vacuum-size=10G
Як відновити валідатор після повної втрати даних
Попередження: ця процедура призводить до тривалої ресинхронізації (від кількох годин до доби залежно від швидкості мережі та диска).
Кроки:
- Підготуйте чистий диск з достатнім місцем
- Перевірте наявність ключів (identity та vote) — без них відновлення неможливе
- Отримайте snapshot з надійного джерела (інший ваш вузол або довірений оператор)
- Розпакуйте snapshot у каталог ledger
- Запустіть валідатор з
--no-votingдля синхронізації - Після досягнення поточного слота приберіть
--no-votingта перезапустіть
Перевірка: після відновлення переконайтеся, що vote account показує правильний identity та нормальний skip rate.
Як працює система credits та root slot у Solana
Credits — це внутрішня одиниця обліку участі валідатора. Валідатор отримує credits за кожен успішний голос (vote). Кількість credits залежить від епохи та налаштувань мережі.
Root slot — це найвищий слот, який валідатор вважає фіналізованим. Root просувається вперед, коли достатня кількість валідаторів досягли консенсусу щодо цього слота.
Для моніторингу:
- Перевірте root slot:
solana slotта порівняйте зsolana block-height - Відставання root slot від поточного слота мережі вказує на проблеми з синхронізацією
Incident runbook: типовий план реагування на інцидент валідатора
Цей runbook — шаблон для реагування. Адаптуйте його під вашу інфраструктуру.
Крок 1: Виявлення (0–2 хвилини)
- Отримайте alert з моніторингу
- Підтвердіть інцидент: перевірте статус сервісу та поточний слот
Крок 2: Оцінка (2–5 хвилин)
- Перевірте логи:
journalctl -u agave-validator -n 200 --no-pager - Визначте тип відмови: програмна, мережева, дискова, версійна
- Оцініть масштаб: чи впливає на голосування
Крок 3: Мітигація (5–15 хвилин)
- Програмна відмова: перезапуск сервісу
- Версійна проблема: відкат до останньої робочої версії
- Мережева проблема: перевірте firewall, Gossip peers, зв'язок з дата-центром
- Дискова проблема: перевірте місце, SMART-статус диска
Крок 4: Відновлення (15–60 хвилин)
- Якщо мітигація не допомогла — переключте на hot spare
- Якщо hot spare недоступний — завантажте snapshot та ресинхронізуйте
- Перевірте відновлення: skip rate, root slot, голосування
Крок 5: Post-mortem (протягом 24 годин)
- Зафіксуйте хронологію подій
- Визначте кореневу причину
- Сформулюйте дії для запобігання повторенню
- Оновіть runbook, якщо процедура була недосконалою