[증인노드] 증인노드 downtime 최소화로 빠른 업데이트 방법 (리플레이 없는 경우)

참조 : 이전글 - 비교적 손쉽게 증인노드 업데이트 하는 방법 에서 약간 수정해서 올립니다.


개요

참조 : 스팀도커 - someguy123 를 기반으로 업데이트 작업을 진행 합니다.

증인노드 업데이트 시 downtime 최소화로 빠른 업데이트 방법 (리플레이 없는 경우)을 공유 합니다.

  • 폴더 경로는 개인 설치 위치에 따라 약간씩 상이 할 수 있으니 이 점 유의 바랍니다.

TL;DR

소스 빌드 - 도커 이미지 변경 - 재시작

  • 작업경로 이동
  • .env 변경
  • 소스빌드
  • .env 변경 (위 단계에서 작업 한 경우 생략 가능)
  • 노드 재기동

상세 작업

1. 작업경로 이동

cd steem-docker

2. .env 변경

소스 빌드에 필요한 STEEM_SOURCE 정보를 변경 합니다.

vi ~/steem-docker/.env

STEEM_SOURCE="https://github.com/steem-witnesses/steem.git"

3. 소스빌드

./run.sh build 0.22.888

약 20 -30분 정도의 시간을 기다리면 소스 빌드가 완료 되며 도커 이미지가 추가 됩니다.
docker images 명령을 통해 추가된 이미지의 repository 와 tag 정보를 재 확인한다
ex) steem:0.22.888 도커 이미지가 추가 됨

REPOSITORYTAGIMAGE IDCREATEDSIZE
steem0.22.88853b81cbdbc812 hours ago1.49GB
someguy123/steemv0.22.5-mira73441fe0048d2 weeks ago1.49GB
ubuntubionic72300a873c2c6 weeks ago64.2MB

위 STEEM_SOURCE 에 명시된 태깅(TAGS) 정보를 기준으로 업데이트를 수행합니다. 위 같이 하면 0.22.888 태깅 정보를 기반으로 빌드를 수행하겠다는 이야기

4. .env 변경

구동 시킬 docker 이미지명을 변경합니다. ( 이전 .env 수정 시 미리 추가 후 본 과정을 생략해도 무방합니다. )

vi ~/steem-docker/.env

DOCKER_IMAGE="steem:0.22.888"

5. 노드 재시작

./run.sh restart

사실상 노드가 재기동 되는 시간 약 1분 이내 정도의 downtime 이 있지만 사실상 큰 문제는 아니라고 생각 해 본다.

물론 이 시간 조차 줄이고자 하는 경우 백업 노드를 가동시켜 놓고 witness_update 의 suggest_brain_key(public) 정보를 메인 노드의 것으로 변경후 메인 노드를 down 후 업데이트 이후 정상가동 후 둘의 키 정보를 원상복구 시키는 방법도 있습니다. 하지만 이 또한 순간적으로 키가 2번 사인되는 case 가 발생가능은 하니 상황에 따라 적용하면 될 것 같습니다.

맺음말

  • 소스 빌드가 완료 후 도커 이미지 변경이 핵심입니다.
  • 위와 같이 하면 downtime 을 최소화 할 수 있습니다 : )
  • 중요한건 반드시 replay 를 필요로 하지 않는 업데이트 한정적이라 볼 수 있겠습니다.
  • replay 가 필요한 경우에는 downtime 을 최소화 하기 위해서 backup node 의 운용은 필수 사항이라 볼 수 있겠습니다.
Sort:  

뭔가 어렵군요.
증인서버도 아무나 돌리는게 아닌가봐요 ㅎㅎ
근데 궁금하긴하네요

Coin Marketplace

STEEM 0.05
TRX 0.33
JST 0.080
BTC 63445.51
ETH 1688.58
USDT 1.00
SBD 0.42