그동안 솔라나 밸리데이터를 testnet, devnet 에서 각각 구성해서 돌려보았는데, 메인넷에 올리기 전에는 어떤 점을 염두에 두고 실행을 해야 효율적일지를 생각해볼 수 있었다. 비용이 부담스러워 메인넷에 직접 올리기는 어려울 것 같지만 혼자 묵히는 것보다는 게시하는 게 나을 것 같아 정리해보았다.
- 밸리데이터는 하루에 최대 1.1 SOL 씩 투표비(voting fee)를 지불한다.
그러므로 밸리데이터가 잘 돌아가는지 먼저 확인하기 위해, 처음 실행 시--no-voting
옵션을 걸어줘서 네트워크나 설정 오류 등의 문제점을 먼저 파악 및 해결한 후 해당 옵션을 지우고 실행하는 것이 경제적으로 좋을 것으로 보인다.
- 밸리데이터에 10 SOL 이상이 없으면 balance 부족 에러가 뜨고, 최소 100 SOL은 셀프 스테이킹해놔야 리더 배정이 가능하다. 안하면 투표비만 빠지고, 밸리데이터에 스테이킹된 Active SOL 이 많아야 리더로 배정 받을 확률이 높아지므로 참고하자.
- ledger와 accounts 를 받아오는 위치는 각각 다른 SSD를 마운트한 경로면 좋으며, 해당 폴더들은 사용자명으로 접근권한이 있어야 생성 및 삭제가 가능하다. Permission denied 오류에 걸린 경우엔 chmod, chown 등을 설정해 사용자에게 권한을 줄 수 있다.
- Keybase에 밸리데이터 정보를 등록해야 한다.
- Ledger 용량이 다 차면 Validator가 에러를 뱉으며 정상적으로 작동하지 못한다.
나는 아래와 같은 에러를 접했다.
... error: Err(Kind(TimedOut)) thread 'main' panicked at 'Load from snapshot failed:
UnpackError(Io(Custom { kind: Storage Full, error: TarError { desc:
"failed to unpack `accounts/135351228.511304` into `/home/sol/ledger/accounts/accounts
/135351228.511304`", io: Os { code: 28, kind: StorageFull, message : "No space left on device" }
} }))', ledger/src/bank_forks_utils.rs:233:10
원래는 ledger가 다 차면 용량을 늘리거나 백업을 해둬야 한다고 한다. ledger 삭제는 최후의 수단이지만 오류내용 상 snapshots, slots, blocks 등이 손상됐을 가능성이 있어 보여서 나는 그냥 밀었다. 추후 메인넷에서는 어떻게 할지 결정해둬야 할 것으로 보인다.
* ledger를 비우면 당장의 문제는 해결되지만, 내 ledger와 accounts가 없으면 자신의 스냅샷을 받아온 다른 검증자들에게 필요한 shred를 줄 수 없다. 네트워크의 health와 안정성을 위해 모든 사람이 ledger와 accounts를 지우지는 말아야 한다. 모든 사람이 지우면 시작 포인트가 없어지기 때문에 문제가 생긴다고 한다...
- 모니터링 툴에 측정항목이 표시가 안된다면 validator 실행 파일에
--full-rpc-api
옵션을 걸어보자. devnet에서는 해당 옵션이 없어도 표시가 됐던 것 같은데, testnet에서는 표시가 되지 않아 헤맸었다.
- 튜토리얼에서 accounts 를 ramdisk 에 저장하게끔 되어있어서 그렇게 설정을 해뒀었는데, 커뮤니티 대화를 서핑하다보니 account를 ramdisk에 저장하지 말란 말이 있었다. 받아온 accounts가 휘발되는 것을 좋지 않게 여겨서였는지 접근이 너무 쉬워서였는지 잘 기억나지는 않는데 좀 더 확인이 필요할 것 같다.
- 솔라나는 슬랙, 디스코드, 텔레그램 웹훅 api를 지원하기 때문에 메신저 알림을 보낼 수가 있다.
나는 watchtower와 validator의 정상 작동여부를 확인하는 시스템 데몬을 구성해두었는데, 내용은 아래에 접어두었다.더보기- watchtower 꺼져있고 validator 켜져있으면 : watchtower를 켠 후 켰다고 슬랙을 보낸다.
- watchtower와 validator가 둘 다 꺼져있으면 : 5분마다 validator가 꺼져있다고 슬랙을 보낸다.
- watchtower 켜져있고 validator 꺼져있으면 : watchtower를 끈 후 껐다고 슬랙을 보낸다.
위와 같은 방법으로 서버 내에서 watchtower와 validator가 정상적으로 동작하는지를 확인할 수 있다.
하지만 서버 자체가 다운될 경우 알림이 오지 않기 때문에 다른 서버에서 해당 서버의 health를 체크하고 꺼져서 켜지지 않을 시 해당 밸리데이터를 동작시킬 수 있는 second validator 서버를 두는 것도 좋다고 한다.
그 외 알아두면 좋을 내용
- validator가 catchup 작업을 마친 것은 작업 대기열을 클리어한 것이고, 스냅샷에서 다시 시작했다면 대기열을 건너뛴 것이라고 한다.
- validator 로그 내용 중 grep --ignore-case --extended-regexp -w 'ERROR' ~/log/validator.log
했을 때 나오는
...INFO solana_metrics::metrics] datapoint: replay-stage-mark_dead_slot
error="error: InvalidBlock(TooFewTicks)" slot=138858056i
는 다른 밸리데이터들 로그에서도 관찰되는 흔한 에러라고 한다. 원인은 정확히 밝혀지지 않은 듯 하다.
- 투표를 열심히 하다 보면 로그에 My Next leader... 같은 내용과 함께 자신이 배정받을 예정인 슬롯을 볼 수 있다. 만약 그 슬롯 시간대에 validator가 delinquent 상태로 들어가면 리더스케줄에서 쫓겨나므로(ㅠㅠ) 노드를 꾸준히 모니터링하는 것이 좋다.
'Solana > Validator - 공부' 카테고리의 다른 글
[Solana] 밸리데이터 돌릴 때 참고 문서 정리 (0) | 2022.06.28 |
---|---|
[Solana] 솔라나 밸리데이터를 운영하려면 (0) | 2021.12.21 |
[Solana] 솔라나 벨리데이터 자동 재시작, 모니터링, 디스코드 (0) | 2021.11.22 |
[Solana] Validating - 5. 검증인 정보 게시 (0) | 2021.11.08 |
[Solana] Validating - 4. 벨리데이터 모니터링 (0) | 2021.11.05 |