IT/Blockchain2023. 2. 17. 12:29

이 문서는 Klaytn Cypress 노드를 AWS 스팟 인스턴스를 이용하여 비용 효율적으로 구축할 수 있는 방법에 대해서 설명합니다.

: EN(Endpoint Node)을 구축하는 방법을 설명합니다.

: [AWS 시스템 구축 관련] AWS 스팟 인스턴스 구성 방법

목차
0. 설치 요구 사항
1. 다운로드
2. 방화벽 설정
3. 압축 해제 및 환경 설정
4. 노드 실행 및 확인
5. Chain 데이터 활용
6. 기타
참고문서

 

0. 설치 요구사항

- 하드웨어: 8vCPU, 64 GiB Mem

- 스토리지: 3 TB SSD + 2.5 GiB/일(Chaindata를 압축해제하려면 초기 5 TiB 필요) 

- OS: Amazon Linux 2, Ubuntu 등

1. 다운로드

wget -c https://packages.klaytn.net/klaytn/v1.9.1/ken-v1.9.1-0-linux-amd64.tar.gz

wget -c https://s3.ap-northeast-2.amazonaws.com/klaytn-chaindata/cypress/klaytn-cypress-chaindata-20230215010212.tar.gz

- 패키지 다운로드 페이지 에서 최신 Cypress 노드 패키지를 다운로드 합니다.

- Klaytn Cypress Chain Data 페이지에서 체인 데이터를 다운로드 합니다. 

  : 다운로드 시간이 약 7시간 정도 소요되네요. (35 MB/s 속도 기준)

 

2. 방화벽 설정

// 노드간 블록 및 Tx 싱크 (IN, OUT 전체(0.0.0.0/0) 오픈)
P2P: 32323, 32324

// JsonRPC, WebSocket 통신 (서비스 허용할 특정 IP 오픈)
RPC: 8551 
WS: 8552

// 서비스 체인 설정
Service Chain Bridge Port: 50505

 

3. 압축 해제 및 환경 설정

// 압축 해제
tar xvfz ken-v1.9.1-0-linux-amd64.tar.gz

// pigz 설치(압축 해제 속도 향상)
sudo apt-get install pigz

// chaindata 압축 해제
nohup tar -I pigz -pxf klaytn-cypress-chaindata-20230215010212.tar.gz -C ./kend_home/ &

// 폴더 생성
mkdir kend_home

// 환경 설정
vi ~/.bash_profile

export PATH=$PATH:$HOME/ken-linux-amd64/bin

source ~/.bash_profile

 

4. 노드 실행 및 확인

// 노드 실행
kend start

// 노드 상태 확인
kend status

// 로그 확인
tail -f ~/kend_home/logs/kend.out

 

5. Chain 데이터 활용

tar xvfz klaytn-cypress-chaindata-20230215010212.tar.gz

mv [압축해제 폴더명] kend_home

kend start

* Chaindata Migration : 체인 데이터 용량을 줄이기 위한 방법을 제공한다.

 

6. 기타

- 블록체인 데이터들이 몇 년만에 수 테라바이트가 되었다.

- 상태 정보를 요약하여 용량을 줄이는 방법을 제공하지만 신뢰성과 시간, 비용을 맞바꾼 것이다.

- 블록체인은 태생적으로 여러 노드에 동일한 데이터를 저장, 검증하는 구조이기 때문에 비효율적인 면이 있다.

- 정기적으로 특정 시점의 상태 정보를 가지고 다시 시작할 수 있는 프로세스가 필요하다.  

 

[참고 문서]

1. Klaytn 노드 하드웨어 요구사항

2. Klaytn 노드 패키지 다운로드

3. Klaytn EN 설치  

 

[작성 이력]

- 2023.02.20 v1.0.0 : 초기 내용 작성

- 2023.02.21 v1.0.1 : chaindata 압축 해제 방식 수정  

 

기타 문의 사항 등은 덧글 달아주시구요.

도움이 되셨으면 ♥ 눌러주세요.   

반응형
Posted by IT반장
IT/AWS2023. 2. 16. 16:51

이 문서는 Ethereum 호환 블록체인 노드를 운영하기 위해 AWS 환경에서 비용 효율적으로 구축할 수 있는 방법에 대해서 설명합니다.

: AWS에서는 남는 자원을 활용하여 대략 65% ~ 80% 할인된 가격으로 인스턴스(서버)를 사용할 수 있는 "스팟 요청"을 제공합니다.

목차
1. 스팟 인스턴스 요청
2. 추가 시작 파라미터
3. 목표 용량
4. 네트워크
5. 인스턴스 유형
6. 기타

 

1. 스팟 인스턴스 요청

- AWS 웹 콘솔 화면에서 "EC2 > 스팟 요청 > 스팟 인스턴스 요청" 메뉴로 들어갑니다.

- 시작 파라미터 수동 구성을 선택합니다.

- AMI 에서 리눅스 이미지를 선택합니다.

  : Amazon Linux 2, Ubuntu Server 22, 또는 이전 생성한 AMI 를 선택합니다.

- 키 페어를 선택합니다.

 : 키 페어가 없으면 EC2 > 키 페어 에서 생성합니다.

 

2. 추가 시작 파라미터

- 시스템 모니터링이 필요하면 "CloudWatch 세부 모니터링 활성화"를 체크합니다.

- 보안 그룹을 선택합니다.

  : 노드간 연결을 위한 Port 및 노드 RPC 연결을 위한 포트를 오픈합니다.

  : ex) geth 의 경우 노드간 연결은 30303, RPC는 8545 입니다. 

- 퍼블릭 IP 자동 할당을 활성화합니다.

  : IP 비용 및 자동 재실행시 블록 싱크 등에 효율적입니다. 

- 필요 시 태그를 생성합니다.

 

3. 목표 용량

- 원하는 시스템(인스턴스)의 개수(목표 용량)를 설정합니다.

- 목표 용량 유지를 체크하여 인스턴스가 중단되면 자동으로 대체되도록 설정합니다.

 

4. 네트워크

- 네트워크는 외부 통신이 가능한 Public Zone의 VPC 및 Subnet을 선택합니다.

 

5. 인스턴스 유형

- 여기서는 비용 효율적인 노드 구성을 목표로 하므로 8vCPU 정도의 메모리 16G 이상의 인스턴스 유형을 선택합니다.

  : 8개 이상 많이 사용하는 인스턴스를 선택하는 것을 권장합니다. c5.2x, m5d.2x, t3.2x 등 비용 순으로 선택합니다.

- 할당 방식은 "가격 용량 최적화(권장)"을 선택합니다.

 

6. 기타

- 해당 설정 등은 AWS Seoul 리전에서 수 개월간 Ethereum 테스트 노드들을 운영하면서 최적화한 설정입니다.

- 시스템 용량은 2 TB 이상을 권장합니다.

- 사전에 리눅스 AMI를 생성하여 노드 구성을 테스트 한 후에 AWS Spot 구성을 하여 비용 효율적으로 운영하는 것을 추천합니다.

- 시스템 비용은 시간당 약 $0.13 이므로 월간 $100 로 안정적으로 이더리움 호환 노드를 운영할 수 있습니다.

- 스토리지 비용은 2 TB SSD 약 단가 $0.114 * 2,000 GiB = $228 입니다.

 

기타 문의 사항 등은 덧글 달아주시구요.

도움이 되셨으면 ♥ 눌러주세요.   

반응형
Posted by IT반장
카테고리 없음2022. 10. 19. 21:27

안녕하세요. IT반장입니다.

이번 글에서는 AWS 환경에서 간단하게 네트워크(VPC) 구성 및 시스템(리눅스) 구축 방법에 대해서 설명하고자 합니다.

- 아래 예제는 이더리움 테스트 노드를 동작시키기 위한 사양 등을 고려하였습니다.

 

목차

1. VPC 생성
2. Security Group 생성
3. EC2 인스턴스 생성
4. 탄력적 IP 주소 할당
5. 접속 테스트

 


1.  VPC 생성

- AWS에 시스템을 구축하려면 가장 먼저 VPC(Virtual Private Cloud)를 구축해야합니다.

- VPC에는 기본적으로 네트워크(서브넷, 게이트웨이, 라우터 등)를 포함합니다. 참고[1]

* VPC 생성 메뉴 > "VPC 등" 선택 > 태그 자동 생성 입력 "blockchain" 으로 하고 나머지는 기본으로 설정하여 생성

 

2.  Security Group 생성

- 시스템을 생성하기 전에 해당 시스템에 접근 제어 정책을 생성하는 단계 입니다.

 * 이름, 설명, VPC 를 작성하고, 필요한 포트를 추가하여 생성합니다. 

 * SSH로 시스템에 접근할 "소스 주소"등은 가능하면 지정하는 것이 좋습니다. 

 

3.  EC2 인스턴스 생성

- 여기서는 EC2 인스턴스(시스템)을 리눅스 OS로 설정하는 예제를 보여줍니다. 원하는 사양과 이미지를 선택하여 생성하면 됩니다.

* 키 페어는 사전에 EC2 > 키 페어 메뉴에서 생성한 후에 EC2를 생성합니다.

* 여기서는 블록체인 테스트 노드를 동작시키기 위하여 c5.xlarge, 200g SSD로 설정하였습니다.

* 외부와 다이렉트로 통신해야하는 블록체인 노드이므로 public 서브넷에 구성하였습니다.

 

4. 탄력적 IP 주소 할당

- 탄력적 IP(Elastic IP, 공인IP)를 할당하여 생성한 EC2 시스템에 할당하여 외부에서 접근할 수 있도록 합니다.

 

 

5. 접속 테스트

- 정상적으로 시스템에 ssh로 접속이 되는지 키파일로 접속 테스트를 해봅니다.

ssh -i ~/.ssh/keypair.pem ubuntu@10.10.10.10

# 여기서 IP는 연결할 시스템의 공인IP(탄력적IP)를 입력합니다.

 


참고 목록

[1] VPC: https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.html

[2] Security Group: https://docs.aws.amazon.com/ko_kr/AmazonElastiCache/latest/mem-ug/SecurityGroups.Creating.html

 


문서 이력

- v1.0 (20221019) :  최초 등록

 


도움이 되셨다면 

 눌러 주세요.^^


 

반응형
Posted by IT반장
IT/Blockchain2022. 10. 18. 18:02

안녕하세요. IT반장입니다.

이번 시간에는 이더리움 테스트를 위한 테스트 노드 Goerli 설치하는 방법을 소개하겠습니다.

 

 

목차

1. 기본 환경 설정
2. geth 노드 설치 및 실행
3. prysm 모듈 설치 및 실행
4. 기타



0. 설치 환경

- 하드웨어: 최소 CPU 4 core, Mem 8 G, SSD 400 G (AWS c5.xlarge, c5.2xlarge)

- OS: 리눅스(Ubuntu20.04 등)

 

1. 기본 환경 설정

# 관련 패키지 설치
sudo apt-get install
sudo apt-get update

sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum

# geth 버전 확인
geth version

#---------------------------
Geth
Version: 1.10.25-stable
Git Commit: 69568c554880b3567bace64f8848ff1be27d084d
Architecture: amd64
Go Version: go1.18.5
Operating System: linux
GOPATH=
GOROOT=go
#---------------------------

 

2. geth 노드 설치 및 실행

# 디렉토리 생성
mkdir ethereum
cd ethereum
mkdir consensus
mkdir execution
cd consensus
mkdir prysm
cd prysm

# 키 생성
openssl rand -hex 32 | tr -d "\n" > "jwt.hex"

# geth 실행
nohup geth --goerli --http --http.api eth,net,engine,admin --authrpc.jwtsecret ./jwt.hex > geth.log &

# --syncmode snap/full/light 선택 가능
# 백그라운드 실행 설정(nohup ... &) 및 로깅 설정( > geth.log)은 필요시 사용한다.

# 로그 확인
tail -f geth.log

 

3. prysm 모듈 설치 및 실행

# 신규 터미널에서 prysm 다운로드
cd ethereum/consensus/prysm
curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh
wget https://github.com/eth-clients/eth2-networks/raw/master/shared/prater/genesis.ssz

# prysm 실행
./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --prater --jwt-secret=./jwt.hex --genesis-state=genesis.ssz --suggested-fee-recipient=0x01234567722E6b0000012BFEBf6177F1D2e9758D9

# 관련 동의 후 백그라운드 실행
nohup ./prysm.sh beacon-chain --execution-endpoint=http://localhost:8551 --prater --jwt-secret=./jwt.hex --genesis-state=genesis.ssz --suggested-fee-recipient=0x01234567722E6b0000012BFEBf6177F1D2e9758D9 > prysm.log &

# 수수료 수신할 주소는 변경한다.
# 백그라운드 실행 설정(nohup ... &) 및 로깅 설정( > prysm.log)은 필요시 사용한다.

# 로그 확인
tail -f prysm.log

 

4. 기타

# 블록을 Sync 하는데 약 4-5일 소요된다. 
[2022-10-18 08:05:33]  INFO p2p: Peer summary activePeers=39 inbound=0 outbound=39
[2022-10-18 08:05:36]  INFO initial-sync: Processing block batch of size 63 starting from  0x0f88f3c9... 156800/4131028 - estimated time remaining 116h12m19s blocksPerSecond=9.5 peers=39

# 따라서 geth 실행시 --syncmode light 등을 적용하여 목적에 맞게 노드를 운영한다.
 

 


참고 목록

[1] https://notes.ethereum.org/@launchpad/goerli

[2] https://docs.prylabs.network/docs/install/install-with-script 

[3] https://goerli.net/

[4] https://eth-clients.github.io/checkpoint-sync-endpoints/#goerli

[5] https://goerli-faucet.pk910.de/

 


문서 이력

- v1.0 (20221018) :  최초 등록

- v1.1 (20221027) :  설치 환경 추가

 


도움이 되셨다면 

 눌러 주세요.^^

 


 

반응형
Posted by IT반장