GCP에서 앱체인 노드 실행하기

Google Cloud Platform에서 Syndicate 앱체인 노드 배포 및 관리하기

이 통합은 현재 활발히 개발 중입니다. 이 가이드를 개선하거나 앱체인 노드 실행에 대한 기술 지원을 받으려면 Discord에 참여하세요. 버그를 신고하려면 https://github.com/SyndicateProtocol/syndicate-appchains/issues에서 새 이슈를 생성할 수 있습니다.

개발자 요구사항

이 가이드는 독자가 다음과 같은 사항에 익숙하다고 가정합니다.

  • 컨테이너화 및 Docker에 익숙함
  • ssh를 사용하여 원격 머신에서 명령을 실행하는 데 능숙함
  • GCP와 같은 클라우드 제공업체를 사용하여 인프라를 실행하고 유지 관리하는 데 능숙함

배경

이 가이드를 통해 Google Cloud Platform(GCP)에서 Syndicate 읽기 노드를 쉽게 배포하고 관리하여 앱체인의 온체인 데이터에 접근할 수 있습니다. 노드는 오픈 소스 Syndicate Stack의 구성 요소를 실행합니다.

읽기 노드는 기존 앱체인에 대한 상태 파생을 수행하여 트랜잭션, 잔액 및 기타 블록체인 데이터를 자체 인프라에서 직접 쿼리할 수 있게 합니다.

현재 읽기 노드 구성은 GCP 마켓플레이스를 통해 배포할 수 있습니다.

해당하는 쓰기 노드 구성도 GCP 마켓플레이스에서 곧 제공될 예정이며 현재 활발히 개발 중입니다.

RPC 노드 배포 및 구성

Google Cloud Platform에 Syndicate RPC 노드를 배포하려면 다음 단계를 수행하세요.

  1. Google Cloud Web3 포털 또는 마켓플레이스에서 "Syndicate Appchain Read Node" 제품에 접속하고 Launch 버튼을 클릭하세요.

  2. Terraform 배포 탭을 선택하고 RPC VM에 대한 설명적인 이름(예: my-appchain-rpc-node)을 제공하고 서비스 계정을 선택하거나 구성하세요.

  3. VM 인스턴스 구성 섹션에서 적절한 값을 입력하거나 선택하세요:

    • 영역: 사용자와 가까운 영역을 선택하세요(예: us-central1-a)
    • 머신 유형: 프로덕션 환경에는 최소 n2-standard-8(8 vCPU, 32GB RAM)이 권장됩니다
    • 디스크:
      • Syndicate 데이터 디스크: 프로덕션 환경에는 최소 100GB 권장
      • Nitro 데이터 디스크: 프로덕션 환경에는 최소 200GB 권장
    • 네트워킹: 이 RPC를 인터넷에 자동으로 노출하기 위한 선택적 설정. 네트워킹/방화벽 구성을 별도로 관리하려면 체크하지 마세요.
  4. 배포 버튼을 클릭하고 콘솔에서 리소스가 실행 중임을 확인할 때까지 기다리세요.

  5. Compute Engine VM에 SSH로 접속하여 다음 파일을 편집하세요. 각 파일에서 올바른 앱체인별 오버라이드를 설정하고 있는지 확인하기 위해 Syndicate와 협력하세요.

    # Set Sequencing Ingestor overrides
    sudo vi /opt/rpc-node/sequencing_ingestor.env
    
    # Set Settlement Ingestor overrides
    sudo vi /opt/rpc-node/settlement_ingestor.env
    
    # Set M-Chain overrides
    sudo vi /opt/rpc-node/mchain.env
    
    # Set Translator overrides
    sudo vi /opt/rpc-node/translator.env
    
    # Set Nitro overrides
    sudo vi /opt/rpc-node/nitro.env
    
    # Nitro chain info
    sudo vi /opt/rpc-node/config/chain_info.json
  6. 도커에서 모든 서비스를 시작하세요:

    sudo docker compose -f /opt/rpc-node/docker-compose.yml up -d
  7. 도커 컨테이너가 실행 중일 때, 노드가 제대로 작동하는지 확인하세요.

    위의 방화벽 구성을 통해 공개 액세스를 활성화한 경우, 외부 IP 주소를 사용하여 RPC를 테스트할 수 있습니다:

       curl -X POST http://[EXTERNAL_IP]:8545 \
       -H "Content-Type: application/json" \
       -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

    공개 액세스를 활성화하지 않은 경우, VM 내에서 localhost를 사용하여 RPC를 테스트할 수 있습니다:

       curl -X POST http://localhost:8545 \
       -H "Content-Type: application/json" \
       -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

    블록 번호가 포함된 JSON 응답을 받아야 합니다. 최신 블록이 아니라면 노드가 아직 동기화 중일 수 있습니다.

RPC 노드 관리하기

VM에 로그인하고 다음 명령을 실행하여 RPC 노드의 상태를 확인할 수 있습니다:

# View running containers
sudo docker ps

# Check service logs
sudo docker compose -f /opt/rpc-node/docker-compose.yml logs

RPC 노드 접근하기

위에서 공개 액세스를 활성화한 경우, RPC 노드는 다음 엔드포인트를 노출합니다:

  • HTTP: http://[EXTERNAL_IP]:8545
  • 웹소켓: ws://[EXTERNAL_IP]:8548

공개 액세스를 활성화하지 않았다면, RPC 노드는 VPC 내에서만 접근 가능합니다:

  • HTTP: http://[INTERNAL_IP]:8545
  • WebSocket: ws://[INTERNAL_IP]:8548

관측성

기본적인 관측성은 이러한 Syndicate Appchain 노드에 기본적으로 통합되어 있습니다. GCP 콘솔의 Compute Engine 메뉴에서 Observability 탭을 열어 이 노드의 메트릭과 로그를 확인하세요.


문제 해결

내 노드가 트랜잭션을 처리할 수 없는 이유는 무엇인가요? 다음과 같은 오류가 반환됩니다: error code -32000: publishing transactions not supported by this endpoint

현재 GCP 마켓플레이스에서는 Syndicate 읽기 노드만 지원됩니다. 전체 노드가 지원될 때까지 이 오류 응답은 예상된 것입니다. 그동안 트랜잭션을 처리할 수 있는 RPC 엔드포인트에 접근이 필요하시면 Syndicate에 문의하세요.

추가 지원

이 가이드에서 언급되지 않은 RPC 노드 구축 관련 문제가 발생하면 추가 지원을 위해 Discord로 문의하세요.