cchaining / qna

0 stars 0 forks source link

Geth Private 구성시 Node 데이터 싱크관련 문제 #6

Open gloryan0829 opened 5 years ago

gloryan0829 commented 5 years ago

우선 AWS EC2 컨테이너 3대 정도 셋업한다음에 Ethereum 소스 빌드 후 Geth를 프라이빗으로 구성해보았습니다.

노드끼리 같은 네트웍에 같은 블록체인 데이터를 쌓기 위해 genesis.json 내용은 맞춰주고 실제 띄워서 Peer를 연결해 봤는데 연결은 잘 되더군요..

1번 노드에서 채굴을 한 후 block size가 2, 3번 노드에서 싱크가 맞는지 확인해본 결과 2대 중 한대는 블록 사이즈가 여전히 0으로 나와서 피어가 연결이 안되어있는지 확인해보았습니다.

확인해 본 결과 블록은 싱크가 맞지 않지만 피어는 연결되어있는 상태입니다.

image 위의 이미지 중 한 대는 우선 Geth를 중지한 상태에서 캡처한 것입니다.

문제가 있는 노드의 geth log를 trace 해본 결과 아래와 같이 나오더라구요...

image

[로그 내용] INFO [10-22|08:14:51.794] Imported new block headers count=0 elapsed=1.311ms number=3478 hash=bf00b7…1627b7 age=6h35m51s ignored=63 WARN [10-22|08:14:51.796] Node data write error err="state node 1ebf97…2f9f26 failed with all peers (1 tries, 1 peers)" WARN [10-22|08:14:51.797] Synchronisation failed, retrying err="state node 1ebf97…2f9f26 failed with all peers (1 tries, 1 peers)"

위의 로그를 기준으로 추측을 해보자면 실제 가장 긴 체인을 가지고 있는 노드로 부터 데이터를 Syncing 합니다.. Syncing 과정에서 해당 Node data를 Writing할때 에러가 발생합니다. 그리고 Synchronisation failed이 발생하면서 다시 retrying을 합니다. 이 과정은 계속 무한 반복됩니다. 혹여나 문제가 있는 노드의 --datadir 옵션으로 지정되어있는 chaindata 폴더의 권한 문제가 있을까 권한은 777로 줘보고도 해봤고... 잘되는 Peer의 노드를 AWS에서 이미지를 만들어보고 genesis.json 도 문제가 있을까 여러번 확인했는데도 안되네요..;;

위의 문제를 StackOverflow에서도 검색을 해봤는데 몇몇의 Thread가 나오긴 했지만 명확한 솔루션이 없어 체이닝 QnA에 등록해 봅니다.!

karriz-dev commented 5 years ago

한 노드에서만 채굴하지마시고 다른 노드에서도 같이 채굴을 진행하시면 새로 블록 넘버가 기록이되고 정상적으로 블록이 쌓입니다 ! 그러면 위 에러가 사라질거에요 ~~