Files
trade-iac/doc/step-002b-agave-validator-systemd.txt

80 lines
2.8 KiB
Plaintext

Step 002B: agave-validator pod systemd (RPC-only, non-voting) + fix na problemy z ExecStart
Ten krok naprawia 2 typowe bledy po wklejeniu unit-a:
1) "error: The subcommand '\\' wasn't recognized"
2) RPC nie startuje, bo ExecStart zostal "polamany" (brakuje --rpc-port albo --log ma sciezke do katalogu)
Przyczyna:
- W unit file kontynuacja linii w ExecStart to JEDEN backslash na koncu linii: `\`
- NIE uzywaj `\\` (dwa backslashe) bo wtedy do programu trafia literalny argument `\` i validator pada.
- Dodatkowo: unikaj bardzo dlugich linii, bo clipboard/paste potrafi je rozciac (i systemd wtedy ignoruje reszte).
0) Stop/wycisz restart loop
sudo systemctl disable --now agave-validator
sudo systemctl reset-failed agave-validator
1) Wrzuc poprawny unit (wielolinijkowy ExecStart z poprawna kontynuacja `\`)
sudo tee /etc/systemd/system/agave-validator.service >/dev/null <<'EOF'
[Unit]
Description=Agave validator (mainnet, RPC-only, non-voting)
After=network-online.target wg-quick@wg0.service
Wants=network-online.target wg-quick@wg0.service
[Service]
Type=simple
User=solana
Group=solana
WorkingDirectory=/var/lib/solana
Environment=RUST_LOG=info
LimitNOFILE=1048576
Restart=always
RestartSec=5
TimeoutStopSec=120
ExecStart=/opt/solana/bin/agave-validator \
--identity /var/lib/solana/identity.json \
--no-voting \
--private-rpc \
--ledger /var/lib/solana/ledger \
--accounts /var/lib/solana/accounts \
--log /var/log/solana/validator.log \
--bind-address 0.0.0.0 \
--rpc-bind-address 10.66.66.1 \
--rpc-port 8899 \
--dynamic-port-range 8000-8025 \
--entrypoint entrypoint.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint2.mainnet-beta.solana.com:8001 \
--entrypoint entrypoint3.mainnet-beta.solana.com:8001 \
--expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \
--full-rpc-api \
--limit-ledger-size 50000000 \
--geyser-plugin-config /etc/solana/yellowstone-geyser.json
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ReadWritePaths=/var/lib/solana/ledger /var/lib/solana/accounts /var/log/solana /var/lib/solana
[Install]
WantedBy=multi-user.target
EOF
2) Reload + start
sudo systemctl daemon-reload
sudo systemctl enable --now agave-validator
3) Weryfikacja (na hoście)
# Sprawdz, czy systemd widzi kompletne argv[] (ma byc --rpc-port 8899 i poprawna sciezka --log):
systemctl show agave-validator -p ExecStart --no-pager
sudo systemctl status agave-validator --no-pager -l
# Czy porty sluchaja (RPC/WS na wg0):
sudo ss -lntp | egrep ':8899\\b|:8900\\b' || true
# getHealth moze zwracac blad dopoki node nie dogoni klastra, wiec sprawdz getVersion:
curl -sS -H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"getVersion"}' \
http://10.66.66.1:8899 | jq .
# Logi:
sudo journalctl -u agave-validator -n 120 --no-pager