[증인노드] 증인노드 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 도커 이미지가 추가 됨
| REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
|---|---|---|---|---|
| steem | 0.22.888 | 53b81cbdbc81 | 2 hours ago | 1.49GB |
| someguy123/steem | v0.22.5-mira | 73441fe0048d | 2 weeks ago | 1.49GB |
| ubuntu | bionic | 72300a873c2c | 6 weeks ago | 64.2MB |
- 스팀 소스 : STEEM_SOURCE="https://github.com/steem-witnesses/steem.git"
- 태깅 적용 : https://github.com/steem-witnesses/steem/tree/0.22.888
위 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 의 운용은 필수 사항이라 볼 수 있겠습니다.
뭔가 어렵군요.
증인서버도 아무나 돌리는게 아닌가봐요 ㅎㅎ
근데 궁금하긴하네요