소개
클레이튼은 크게 내부 Consensus Node Network (CNN)와 외부 Endpoint Node Network (ENN)로 나눠볼 수 있습니다. CNN은 블록 생성을 하고 ENN은 사용자의 transaction을 받아드리는 역할을 하고 있습니다. 사용자는 EN으로 transcation을 전송할 수 있습니다. 모든 EN에 누구나 접속을 할 수 있는 것이 아니기 때문에 사용자는 클레이튼 블록체인을 사용하기 위해서는 자신의 EN을 운영해야 합니다.
이전 글에서 언급한 데로 누구나 Klaytn 네트워크에 접속하는 EN을 운영할 수 있습니다. 이번 글에서는 직접 EN 운용을 위한 필요한 것들에 대해서 알아 보겠습니다.
- 권장 Hardware 요구 사양
- 설치
- Chain data download 받기 및 EN 실행
- ENN에 접속 하기
1. 권장 Hardware 요구 사양
Klaytn Docs에서는 EN은 아래 요구사항을 만족해야한다고 언급하고 있습니다.
해당 링크를 참고 하세요
권장 Hardware 요구 사항
vCPU | Memory (GiB) | Storage (GiB) | EBS Bandwidth (Gbps) | Network Bandwidth (Gbps) |
---|---|---|---|---|
8 | 32 | EBS-only | 3,500 | Up to 10 |
클레이튼의 EN의 요구사항에 컴퓨팅 파워가 높은 이유는 EN들이 매초마다 생성되는 블록을 받아 검증하고 저장을 해야되기 때문입니다. 최근 테스트로 보았을때 8 vCPU , 32 GB memory 의 hardware 일지라도 간혈적으로 동기화에 지연이 발생됨을 확인하였으며 계속 prefetch, state migration 기술등을 통해 균일한 성능을 보일수 있도록 개선중입니다.
왜 코어의 갯수가 많아야하나요? 블록을 검증하는 것은 컴퓨팅 자원을 많이 소모하는 작업입니다. EN 또한 블록을 받아 Transaction을 검증하는 작업을 매 블록마다 해야합니다.
검증은 두단계가 있습니다. 하나는 transaction의 서명을 검증하는 것이며 또하나는 EVM을 통해 transaction을 실행하는 과정입니다. EVM 실행시에는 순차적으로 transaction을 실행해야 함으로 많은 코어의 갯수로 인한 이득은 없지만 서명을 검증하는 과정은 동시에 여러 transaction을 처리할 수 있으므로 코어의 갯수가 많을 수록 성능향상이 됩니다.
위의 권장 Hardware 요구 사항에 맞는 물리 서버를 직접 운용 하는 것도 가능합니다.
2. 설치
Download
여기에서 클레이튼의 EN 바이너리를 다운로드 할 수 있습니다. 본인의 서버의 OS와 일치하는 바이너리를 다운 받으십시요.
설치
설치는 tar 파일을 풀어서 다음과 같은 디렉토리 구조가 나오는 것을 쉽게 확인할 수 있습니다.
.
├── bin
│ ├── ken
│ └── kend
└── conf
└── kend_baobab.conf
디렉토리 구조를 바꾸지 마십시요. EN이 제대로 실행되지 않을 수 있습니다.
편의를 위해 bin
디렉토리를 $PATH
에 추가할 수 있습니다.
만약 rpm
파일을 다운받았다면 yum install
을 통해 설치하세요. 설치된 바이너리의 위치는 /usr/bin/ken
이며 설정파일은 /etc/kend/conf/kend.conf
에 위치하게 됩니다.
Configure
kend
를 실행할때 설정파일 (연결할 네트워크에 따라서 conf/kend_baobab.conf
또는 /etc/kend/conf/kend.conf
) 을 수정해야 합니다.
자세한 내용은 링크를 참조 하십시요.
만약 ken
을 직접 실행한다면 해당 설정 파일은 실행에 영향을 미치지 않습니다.
3. Chain data 다운로드 및 EN 실행
빠른 동기화
EN운용시 가장 중요한 점은 최신 블록의 동기화를 유지하는 것입니다. 하지만 처음 EN을 실행할때에는 1900만 블록이상의 데이터를 다운받아야합니다. (2020년 2월 7일 기준)
P2P 환경에서 해당 데이터를 받는 것은 아주 느리기 때문에 빠른 동기화
방식을 추천합니다.
빠른 동기화
는 클레이튼의 chain data의 스냅샷을 통해서 동기화를 하는 것으로 아래 링크를 통해서 가장 최신의 chain data 스냇샵을 다운받을 수 있브니다.
네트워크에 따라 알맞는 데이터를 다운받은 뒤에 설정파일 (kend.conf
)에 설정한 DATA_DIR
위치에 압축을 풀도록 합니다.
EN의 실행
EN의 실행을 위해서는 kend
를 통해 실행하는 것을 권장합니다. 노드의 실행 및 정지는 아래 예제와 같이 쉽게 할 수 있습니다.
$ kend start
Staring kend: OK
$ kend stop
Shutting down kend: Killed
노드 실행시 기본 RPC의 port는 8551 그리고 klay
API를 제공합니다.
(port를 변경을 하고 싶거나 지원 API를 변경하기 위해서는 설정파일을 수정하면 됩니다.)
4. ENN에 연결하기
kend
를 통해 실행시 설정 파일에 NETWORK
또는 NETWORK_ID
항목을 어떻게 설정 하느냐에 따라서 어떤 네트워크에 연결 하는지를 설정할 수 있습니다.
기본적으로 NETWORK
를 설정하지 않은경우 NETWORK_ID
를 설정하여 특정 네트워크에 연결이 가능합니다.
Baobab 테스트 넷
Baobab 테스트 네트워크에 연결하는 경우 설정값입니다.
# cypress, baobab is only available if you don't specify NETWORK_ID.
NETWORK="baobab"
# if you specify NETWORK_ID, a private network is created.
NETWORK_ID=
Cypress 메인 넷
Cypress 메인 네트워크에 연결하는 경우 설정값입니다.
# cypress, baobab is only available if you don't specify NETWORK_ID.
NETWORK="cypress"
# if you specify NETWORK_ID, a private network is created.
NETWORK_ID=
만약 NETWORK_ID
에 값을 적는 경우 NETWORK
값은 무시가 됩니다.
특정 전용 네트워크
network ID가 3000인 특정 전용 네트워크에 연결하는 경우입니다.
# cypress, baobab is only available if you don't specify NETWORK_ID.
NETWORK=""
# if you specify NETWORK_ID, a private network is created.
NETWORK_ID=3000
결론
이제 EN을 운영할 준비가 되었습니다. EN을 통해 최신 블록을 다운로드 받고 transaction을 전파할수 있습니다. 추가적인 문의사항이 있다면 언제든지 문의를 남겨 주십시요.
감사합니다.