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 노드를 배포하려면 다음 단계를 수행하세요.
-
Google Cloud Web3 포털 또는 마켓플레이스에서 "Syndicate Appchain Read Node" 제품에 접속하고 Launch 버튼을 클릭하세요.
-
Terraform 배포 탭을 선택하고 RPC VM에 대한 설명적인 이름(예:
my-appchain-rpc-node)을 제공하고 서비스 계정을 선택하거나 구성하세요. -
VM 인스턴스 구성 섹션에서 적절한 값을 입력하거나 선택하세요:
- 영역: 사용자와 가까운 영역을 선택하세요(예:
us-central1-a) - 머신 유형: 프로덕션 환경에는 최소
n2-standard-8(8 vCPU, 32GB RAM)이 권장됩니다 - 디스크:
- Syndicate 데이터 디스크: 프로덕션 환경에는 최소 100GB 권장
- Nitro 데이터 디스크: 프로덕션 환경에는 최소 200GB 권장
- 네트워킹: 이 RPC를 인터넷에 자동으로 노출하기 위한 선택적 설정. 네트워킹/방화벽 구성을 별도로 관리하려면 체크하지 마세요.
- 영역: 사용자와 가까운 영역을 선택하세요(예:
-
배포 버튼을 클릭하고 콘솔에서 리소스가 실행 중임을 확인할 때까지 기다리세요.
-
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 -
도커에서 모든 서비스를 시작하세요:
sudo docker compose -f /opt/rpc-node/docker-compose.yml up -d -
도커 컨테이너가 실행 중일 때, 노드가 제대로 작동하는지 확인하세요.
위의 방화벽 구성을 통해 공개 액세스를 활성화한 경우, 외부 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 logsRPC 노드 접근하기
위에서 공개 액세스를 활성화한 경우, 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로 문의하세요.