대기증인으로 활동중인 @asbear 입니다. 저의 증인노드가 맛이가서 복구하는데 3일이나 걸렸습니다. 사실 이정도 걸릴 문제가 전혀 아니었으나 미숙한 대응으로 계속 지연이 되었습니다.
사건의 전말은 3일전으로 거슬러 올라갑니다..
3일전, 회사에서 이리저리 구르다가 갑자기 기분이 이상해서 증인노드를 체크 해 보았습니다. 그런데... 놓친 블록 개수가 0이었던것이.... 1이 되어있었습니다. 2달 반 동안 한개의 블록도 놓친적이 없었는데 이 기록이 깨지니 흠칫 했습니다. 이유 모를 식은땀이 스르륵..
사실 블록 생성 놓친것이 큰 일은 아니지만.. 왠지 가슴 한켠이 무너져내리는 아픔을 안고 회의에 들어갔습니다. 그 아름답던 "0"이라는 숫자가 계속 아른거렸지만 "퇴근하고 확인해야지" 하고 스스로를 다스리며, 평소보다 더 바쁜 업무때문에 정신없는 하루를 보내고 집에와서 아내와 맛있는 저녁을 먹고 스팀페이 코딩을 좀 한 후 그대로 누워서... 쿨쿨쿨. ㅋㅋ 그렇습니다. 까먹고 잠든것이죠. 사실 1개 놓친것은 그냥 일시적으로 놓친것이라고 생각했기에 크게 걱정하지 않았었습니다.
그런데...
새벽 5시에 왠지모를 쌔한 기분이 들어 폰을 켜보니, @clayop 님에게서 카톡이 와있었습니다.
"블록 놓치고 계시네요"
응? 아.. 하고는 후다닥 일어나서 노트북을 켜고 앉았습니다. 새벽이라 아직 공기가 차더군요.
일단 클라우드 노드에 접속하려고 하는데 ssh가 도저히 연결이 되지 않았습니다. 셸이 연결 안되는것은 노드가 거의 막장으로 치닫고 있다는걸 의미하기때문에, 클라우드 콘솔에 들어가봤습니다. 노드 상태를 보니 CPU가 폭주를 하고있더라구요. 제대로 맛이 갔습니다. 저는 백업노드가 없다보니, 이렇게 접속조차 못하게 맛가버리면 완전 새로 노드를 구성해야하는데, 지난번 경험상 거의 24 시간이 걸린 경험이 있었습니다. 평일인데다가 출근을 해야했기 때문에 일단 증인노드 중단을 브로드캐스팅 했습니다. 이렇게 중단을 선언해야 추가적인 블록 생성 루틴에 참여를 하지 않아서 블록 을 놓치며 서비스에 작은 흠집을 내는 일을 막을 수 있습니다.
다시 침대로 가서 악몽을 몇회 꾼 후 출근을 했습니다. 어떻게 지나갔는지 모를 바쁜 하루를 보내고 퇴근을 하자마자 복구 작업에 들어갔습니다. 일단 죽어가는 노드를 그대로 죽여버린후 (왠지 잔인하네요..) 증인노드를 새로 다시 구성하기 시작했습니다.
구성 과정은 몇번 경험이 있다보니 처음에 비해 훨씬 수월했습니다. 도커(Docker)를 이용해서 설치하고 설정을 마친 후 구동을 시작했습니다. 증인노드를 구동하면 블록을 다운받고 인덱싱을 하는 과정을 거치는데, 이 과정이 엄청나게 오래걸립니다. 저는 게다가 서버비용을 줄이기 위하여 RAM 대신 NVME SSD를 사용하기때문에 시간이 정말정말 많이 걸립니다. 그래도 전에 했을 때는 10시간 정도 걸렸었기에 이번에도 그정도겠거니 하고, 잠자리에 들었습니다.
그런데 다음날 일어나서 확인 해 보니, 아직도 반밖에 안되어 있더군요. 인덱싱 하는데 2달전과는 차원이 다르게 너무나 오래걸리더라구요. 누적된 데이터들 때문인지 뭣때문인지. 그리고 그렇게 열심히 인덱싱을 하던 노드가 20000000 블록 넘게 하다가 죽어버렸습니다. -_- ... 그래서 거의 하루 날렸습니다....
결국 다시 노드 새로설치하고, 다시 증인서버 구성하고, 다시 인덱싱을 했습니다. 이번에는 순조로왔으나... 21000000번 블록부터 속도가 미친듯이 느려지더니.. 인덱싱 완료하는데 거의 30시간 이상 걸렸습니다. 마지막에 21600000 블록에서 먹통이 되었으나, 다행이 노드가 죽지 않아서 재구동을 해서 인덱싱을 이어갔습니다. 그리고 드디어... 인덱싱이 완료되고 노드가 정상 구동이 시작 되었습니다. 캐감동.. ㅜ.ㅜ
그렇게 우여곡절 끝에 드디어 인덱싱이 끝나 감격스러운 마음에 맥주를 한캔 딴 후 벌컥 벌컥 들이키고는, 증인 노드 재시작을 브로드캐스팅 했습니다. 그리고 첫 블록을 생성할때까지 기다렸습니다. 시간이 흐르고.. 맥주는 줄어들고.. 취기는 오르고... 뭐가 잘못됐나... 차례가 안오네...
그러던 중!
[0m2394048ms th_a witness_plugin.cpp:606
block_production_loo ] Generated block #21972005 with timestamp 2018-04-28T20:39:54 at time
2018-04-28T20:39:54 by asbear
두둥! 드디어 블록 생성이 확인 된 순간 3일간 받은 스트레스가 확 날아갔네요.
steemdb.com에서 재확인을 하고,
https://steemian.info/witnesses 에서도 재확인을 하고,
이제야 안심하고 평화로운 주말을 보낼 수 있게 되었습니다.
이거 정말 57위 인데도 문제가 생기니 여간 스트레스를 받는것이 아닌데, 쪼기 위에 있는 분들은 참 피곤하겠네요. 그만큼 보상이 되니 어쩌면 더 나으려나요? ㅎㅎ 저도 증인 순위가 더 오르면 백업 노드를 하나 갖고싶네요. 아니면 최소한 파일서버라도 하나 둬야할것 같습니다.
인덱싱 후 총 메모리 사용량은 37G 인데요, 용량이 끊임없이 증가하고 인덱싱 하는데 소요되는 시간이 엄청나게 증가했습니다. 2월에 비해 거의 2배 이상 증가한것 같습니다. 아마 RAM 이었다면 훨씬 빨랐을텐데 RAM으로 64G 짜리 노드 쓰려면 서버비가 감당이 안되어 결국 NVME를 떠날수가 없을 것 같습니다. 아무래도 좀만 더 버텨보다가 클라우드 버리고 dedicated server를 임대 해야 할것 같습니다. 더 저렴한데 안정성과 보안에 신경을 많이 써야하는 문제가 있어서 아직은 꺼려집니다만...
.
.
.
그런데 말입니다.
@clayop님은 어찌 제가 블록 놓치는것을 아셨을까요..
소오름.......
<끝>