Solana 메인넷 RPC - 빠른 시작

소개

Solana 메인넷 RPC를 배포하려면 SLV 커맨드라인 도구를 사용합니다. 이 빠른 시작 가이드에서는 SLV 커맨드라인 도구로 Geyser Yellowstone 플러그인을 사용하는 Solana 메인넷 RPC를 배포하는 방법을 설명합니다.
서버에 Ubuntu 24.04 LTS가 클린 설치되어 있어야 합니다.

베어메탈 서버 준비

VPS나 가상 머신(VM)에서 Solana 클라이언트를 실행하는 것도 가능하지만, 최적의 성능과 안정적인 운영을 달성하기는 어렵습니다. 특히 RPC 노드와 검증자는 고부하 조건에서 동작하므로 적절한 서버 환경의 구축이 중요합니다.
Solana는 공식적으로 베어메탈 서버 사용을 권장합니다.
RPC 노드는 워크로드에 따라 크게 다릅니다.
표준 RPC (SendTx / Geyser gRPC)와 Index RPC (풀 인덱싱)는 특히 메모리와 스토리지 요구 사항에서 크게 다릅니다.
RPC 하드웨어 요구 사항 (가이드라인)
구성 요소RPC NodeIndex RPC (참고)
CPU24 cores+ @ 2.8GHz+ / AMD Gen3+ / Intel Ice Lake+ / SHA extensions / AVX232 cores+ (고클럭 권장)
RAM512GB+1152GB+
DiskNVMe Gen3 x4 이상 / Accounts / Ledger / Snapshots 분리 권장대용량 + high TBW / 분리 권장
Network1Gbps 이상1Gbps 이상 (더 많은 대역폭이 바람직)
GPU불필요불필요
참고:
코어 수보다 클럭 속도와 실효 스루풋이 더 중요하다고 간주됩니다.
Index RPC는 메모리와 스토리지가 병목이 될 수 있으므로 충분한 용량과 높은 IOPS를 확보하세요.
인덱싱이 필요한 경우 768GB 이상을 권장하며, 안정적인 운영에는 1152GB 이상을 권장합니다.
SLV Metal은 예산 내에서 최고 성능을 제공하도록 설계된 베어메탈 서버를 제공합니다.
slv metal list 명령을 실행하면 Solana RPC 노드에 특화된 RPC 옵션을 찾을 수 있습니다.
bash
slv metal list
? 🛡️ Select SLV BareMetal Type (APP)
  📦 APP - For Trade Bot,Testnet Validator, DApp and More!
  🚀 MV - For Solana Mainnet Validator
❯ 🛡️⚡️ RPC - For Solana RPC Node
아직 베어메탈 서버를 설정하지 않았다면 베어메탈 서버 설정 가이드를 따라주세요.
또한 다음 자료도 참조하세요:

Solana RPC 노드 배포

먼저 Solana RPC 구성을 초기화합니다. 원하는 Solana 네트워크를 선택하세요.
bash
slv rpc init
? Select Solana Network (mainnet)
  testnet
  devnet
❯ mainnet
다음으로 Solana Node 호환 서버가 있는지 확인합니다.
bash
? 🛡️ Do you have a Solana Node Compatible Server? (yes)
❯ yes
  no
이 튜토리얼에서는 yes를 선택했다고 가정합니다.

서버 사용자와 IP 주소 설정

서버 사용자, IP 주소, RSA 키 경로를 설정합니다.
bash
? What's the user for the server? (root) › root
? Enter the server IP address › x.x.x.x
? What's the path to your RSA key? (~/.ssh/id_rsa)

자동 리전 감지

다음으로 시스템이 구성된 노드에서 각 블록 엔진으로 ping을 보내 가장 가까운 리전을 자동으로 감지합니다. 실제 ping 값을 측정하여 최적의 리전을 선택할 수 있습니다.
bash
🔍 Checking SSH connection...
✔︎ SSH connection succeeded

📍 Measuring latencies from x.x.x.x to mainnet regions...
  Pinging Amsterdam (amsterdam.mainnet.block-engine.jito.wtf)...
  Pinging Dublin (dublin.mainnet.block-engine.jito.wtf)...
  Pinging Frankfurt (frankfurt.mainnet.block-engine.jito.wtf)...
  Pinging London (london.mainnet.block-engine.jito.wtf)...
  Pinging New York (ny.mainnet.block-engine.jito.wtf)...
  Pinging Salt Lake City (slc.mainnet.block-engine.jito.wtf)...
  Pinging Singapore (singapore.mainnet.block-engine.jito.wtf)...
  Pinging Tokyo (tokyo.mainnet.block-engine.jito.wtf)...
  ✅ Singapore: 0.291 ms
  ✅ London: 154.071 ms
  ✅ Dublin: 167.267 ms
  ✅ Frankfurt: 149.081 ms
  ✅ Amsterdam: 154.501 ms
  ✅ New York: 228.624 ms
  ✅ Salt Lake City: 278.016 ms
  ✅ Tokyo: 376.816 ms

🎯 Nearest region: 🇸🇬 Singapore
   Latency: 0.291 ms
   Block Engine: https://singapore.mainnet.block-engine.jito.wtf
   Shred Receiver: 202.8.11.224:1002
   Relayer: http://singapore.mainnet.relayer.jito.wtf:8100
   NTP Server: ntp.singapore.jito.wtf

아이덴티티 키페어 생성

아이덴티티 키페어가 없다면 새로 생성할 수 있습니다.
bash
? Do you want to create a new identity key now? (Y/n) › Yes
🔑 Generating new identity key...
✨ Generated Key: p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
✨ Moved Key to: ~/.slv/keys/p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV.json

Solana CLI 선택

Solana CLI 버전을 선택합니다.
bash
? Select Solana CLI (jito)
  agave
❯ jito
  firedancer-agave
  firedancer-jito

RPC 타입 선택

RPC 타입을 선택합니다.
bash
? Select an RPC type
❯ Geyser gRPC
  Index RPC
  SendTx RPC
  Index RPC + gRPC
이 튜토리얼에서는 Geyser gRPC를 선택합니다.

구성 확인

마지막으로 구성을 확인합니다.
bash
✔︎ Success
✔ Inventory updated to ~/.slv/inventory.mainnet.rpcs.yml
✔ Successfully created solv user on p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
✔︎ mainnet_rpcs inventory file has been saved to ~/.slv/inventory.mainnet.rpcs.yml
Now you can deploy with:

$ slv rpc deploy -n mainnet -p p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
그 후 베어메탈 서버에 solv 사용자가 생성되고, Solana RPC 구성이 ~/.slv/inventory.mainnet.rpcs.yml에 저장됩니다.

Solana RPC 노드 배포

구성을 확인하면 배포가 시작됩니다.
bash
slv rpc deploy -n mainnet -p p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV
bash
Your mainnet RPC Nodes Settings:
┌──────────────┬─────────────────────────────────────────────┐
│ Identity Key │ p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV │
├──────────────┼─────────────────────────────────────────────┤
│ Name         │ p3tnYqjciWz8DnjApUVDPWTEhdzdX6qvqTaRCrckSLV │
├──────────────┼─────────────────────────────────────────────┤
│ IP           │ x.x.x.x.                                    │
├──────────────┼─────────────────────────────────────────────┤
│ Region       │ singapore                                   │
├──────────────┼─────────────────────────────────────────────┤
│ RPC Type     │ Geyser gRPC                                 │
├──────────────┼─────────────────────────────────────────────┤
│ Version      │ 3.0.7-jito                                  │
└──────────────┴─────────────────────────────────────────────┘
.
.
.
Successfully Deployed RPC on mainnet

You can monitor your Node with the following steps:

Log in to your server with SSH:
ssh [email protected]

Then, run the following command to monitor your node:
$ solv m
완료되었습니다! Solana RPC 노드가 배포되었습니다. Solana 네트워크와 동기화되는 데 시간이 걸립니다.

디버깅 및 모니터링

배포 후 다음 명령으로 Solana RPC 노드의 상태를 확인할 수 있습니다:
bash
ssh solv@<your-server-ip>
solv m
solv는 agave-validator -l /mnt/ledger의 alias입니다. 이 설정은 RPC 노드 배포 시 ~/.profile에 추가됩니다.

SLV RPC 명령

bash
Usage:   slv rpc
Version: 0.9.700

Description:

  🛠️ Manage Solana RPC Nodes 🛠️

Options:

  -h, --help  - Show this help.

Commands:

  init                - 🚀 Initialize a new RPC node configuration
  deploy              - 📦 Deploy RPC Nodes
  list                - 📋 List RPC Nodes
  setup:firedancer    - 🔥 Setup/Update Firedancer Validator
  update:firedancer   - 🔄 Update Firedancer Version
  build:solana-cli    - 🛠️ Build Solana CLI from Source
  install:solana      - ➡️ Install Solana CLI Binary
  update:script       - ⚙️ Update RPC Startup Config
  update:geyser       - ⚡️ Update Geyser Version
  start               - 🟢 Start RPC
  stop                - 🔴 Stop RPC
  restart             - ♻️ Restart RPC
  cleanup             - 🧹 Cleanup RPC - Remove Ledger/Snapshot Unnecessary Files
  get:snapshot        - 💾 Download Snapshot with aria2c
  update:allowed-ips  - 🛡️ Update allowed IPs for mainnet RPC nodes