Steem Node 정리 (Full node 2편) -설치

안녕하세요 ayogom 입니다.
이번에는 풀노드의 설치 관련해서 좀 써보도록 하겠습니다.
사실 처음 이 글을 써봐야지라고 생각했떤 이유가... 설치 방법이었는데 쓰다보니.. 개념부터 좀 이야기를 하게 되었네요.

일단 설치 방법은 한가지가 있는 것이 아니라, 여러가지 길이 있고, 목적지(설치완료/동작) 이라는 목표를 가지고 설명을 하는 것이기 때문에 조금 다를 수도 있는 부분을 사전에 알려드립니다.....

지난 시간에 풀노드의 구성이 3가지로 된다고 말씀을 드렸습니다.
Steem Node 정리 (Full node 1편)

가장 먼저 풀노드 설치 부터 설명을 드립니다.

풀노드 설치 방법

https://github.com/ayogom/steem-docker
해당 깃허브는 someguy 만든 docker에 몇가지 수정한 버전입니다. (seed 변경, remote 주소 변경 등)

아래의 docker 인스톨에서
./run.sh install 을 ./run.sh install_full 으로 변경을 해서 진행을 하시면 됩니다.
image.png

소요되는 시간은

  • dlblocks 이 약 5시간 미만 (네트워크 환경에 따라 변경)
  • replay 이 약 5일 (컴퓨터 사양에 따라 변경)

정도 예상을 하시면 되지만, 네트워크 환경 및 컴퓨터 사양에 따라 변동은 있을 수 있습니다

config.ini 설정

주석 해제

webserver-http-endpoint = 0.0.0.0:8090
webserver-ws-endpoint = 0.0.0.0:8091

plugin 추가

plugin = webserver p2p json_rpc witness account_by_key reputation market_history
plugin = database_api account_by_key_api network_broadcast_api reputation_api market_history_api condenser_api block_api rc_api

run.sh 설정

포트추가

: ${PORTS="2001,8090,8091"}

까지 수정 한 후에 리플레이를 하시면 됩니다.

만약 버전이 안 맞으면,
docker pull ety001/steem-full-mira:0.23.1
docker tag ety001/steem-full-mira:0.23.1 steem
으로 설치를 하시면 됩니다!

이렇게 시간이 걸려서 설치를 하게 되면 해당 풀노드와 외부를 연결해 줄 Jussi 를 설치 해야 합니다.

Jussi 설치 방법

  • 프론트앤드
  • 사전에 설치해야 하는 것 (docker-compose / sudo apt install docker-compose)

https://github.com/steemit/jussi

먼저 깃허브에서 해당 데이터를 받고
git clone https://github.com/steemit/jussi.git

config.ini 설정

mv DEV_config.json config.json 으로 이름 변경
기존 ""https://api.steemit.com"" 으로 적혀있는 부분을 위에서 설정했던,
풀노드의 주소 localhost가 될 수도 있고, IP가 될 수도 있습니다.. 를 포트와 함께 넣어줍니다.

image.png

docker-compose.yml 설정

아래와 같이 변경 합니다

version: "3.3"
services:
jussi:
restart: "always"
image: "steemit/jussi:latest"
ports:
- "8080:8080"
environment:
JUSSI_UPSTREAM_CONFIG_FILE: /app/config.json
JUSSI_REDIS_URL: redis://redis1:6379
volumes:
- ./config.json:/app/config.json
redis1:
restart: "always"
image: "redis:latest"
volumes:
- ./redis1:/data

그리고 동작을 시킵니다.

docker-compose up -d

여기까지 하면 기본적인 풀노드는 동작을 하게 됩니다. 추가적으로 Hivemind를 설치를 원하신다면

Hivemind 설치

https://github.com/steemit/hivemind

먼저 깃허브에서 해당 데이터를 받고
git clone https://github.com/steemit/hivemind.git

docker build -t hivemind .

docker-compose.yml 수정

version: '3'
services:
db:
image: postgres
environment:
POSTGRES_USER: steem
POSTGRES_PASSWORD: steem123
POSTGRES_DB: hivedb
volumes:
- ./data:/var/lib/postgresql/data
- ./my-postgres.conf:/etc/postgresql/postgresql.conf
restart: always
hive:
depends_on:
- db
image: ety001/hivemind
environment:
DATABASE_URL: postgresql://steem:[email protected]:5432/hivedb
LOG_LEVEL: INFO
STEEMD_URL: [풀노드 주소]
SYNC_SERVICE: 1
ports:
- 8888:8080
links:
- db:db
restart: always

수정 후
docker run -i --rm postgres cat /usr/share/postgresql/postgresql.conf.sample > my-postgres.conf

my-postgres.conf 파일도 수정

my-postgres.conf 수정

하단에 아래의 내용 추가

effective_cache_size = 12GB # 50-75% of avail memory
maintenance_work_mem = 2GB
random_page_cost = 1.0 # assuming SSD storage
shared_buffers = 4GB # 25% of memory
work_mem = 512MB
synchronous_commit = off
checkpoint_completion_target = 0.9
checkpoint_timeout = 30min
max_wal_size = 4GB

여기까지 완료되었으면, Hivemind 폴더에서 작업하는 것 완료
다시 jussi에 가서 hivemind를 jussi에 연결 해줘야 합니다.
jussi 폴더로 이동
hive_config.json 를 다운 받고
wget -c https://raw.githubusercontent.com/steemit/jussi/master/EXAMPLE_hivemind_upstream_config.json
mv EXAMPLE_hivemind_upstream_config.json hive_config.json

hive_config.json 수정

steemd 라고 쓰여진 부분을 모두 풀노드(steemd) 주소로 변경합니다.

image.png

jussi 의 docker-compose.yml 수정

volumes:
- ./hive_config.json:/app/config.json

그리고 jussi도 hivemind도 모두 재시작 해야 합니다.
docker-compose down && docker-compose up -d

Hivemind는 시작하게 되면 동기화를 시작하게 되는데 이게 또 시간이 오래 걸립니다.
소요되는 시간

  • 동기화 약 5일 (컴퓨터 사양 및 네트워크 환경에 따라 변경)

이상 여기까지 따라하면 Full node를 설정할 수 있게 됩니다. 아참 https 설정은 별도로.. 하셔야 합니다 : )

중요포인트

가장 중요한걸 놓칠뻔 했네요. 제가 이 글을 쓰게 된 주 목적....
최근에 스팀 지갑에 문제가 좀 있었는데요, 다른 풀노드도 동일한 증상을 겪었습니다.
왜 다른 풀노드도 동일한 결과가 나왔냐면 마지막 제가 첨부한 이미지를 보면
image.png

api.steemit.com을 사용 한 부분이 보이실껍니다. 이건 초기 plugin 을 설정할 떄, 용량이 많이 차지하는 일부 기능을 포함 시키지 않았기 때문에 해당 요청이 오면 api.steemit.com으로 포워딩을 시켜버린 것입니다. 그래서 풀노드가 풀노드가 아닌 일부 기능만 갖게 되어버린 것이죠 현재 제가 세팅 했던 https://api.steemzzang.com 같은 경우도 동일한 문제 입니다. 포워딩 되어 있기 때문에 api.steemit.com 에 의존을 하게 된 것입니다...

이 부분은 해당 plugin을 재 설치 해줘야 하는데, 아직 시간적 여유가 없어서 못하고 있는데 조만간 처리 할 예정입니다....

제 메뉴얼에서 이해가 안되는 부분이 있으시다면 제가 참고했던 중국 증인(@ety001) 포스팅을 참고로 남겨드립니다

위의 증인이 운영하는 데이터 (동기화시간을 줄일 수 있습니다) 서버

docker-compose 명령어

  • 시작
    docker-compose up -d
  • 중지
    docker-compose down
  • 동작중인 도커 보기
    docker-compose ps
  • 도커 로그 보기
    docker-compose logs -f --tail 100 [도커명]
Sort:  

아이구 머리야~ ㅎㅎ
좋은 오후 되세요^^

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 저도 머리아프네요 ㅋㅋㅋ
설명을 너무 못 하겟네요 ㅠㅠ

항상 애써주셔 고맙습니다 ^^ 💙

!shop

항상 행복한 💙 오늘 보내셔용~^^
2020 스팀 ♨ 이제 좀 가쥐~! 힘차게~! 쭈욱~!

가즈아~~

Hi~ ayogom!
@bluengel has gifted you 1 SHOP!

Currently you have: 4 SHOP

View or Exchange SHOP Please go to steem-engine.com.

Are you bored? Play Rock,Paper,Scissors game with me!

좋은 글 감사합니다 :)

일이 좀 한가해 지면 풀노드 설치를 해봐야 겠네요 ㅜㅜ

해보시고 ㅠㅠ 좋은 팁좀 발견해주세요 ㅋㅋ ㅠ

음~~~모르는게 많네요.풀노드의 용도를 알 수 있을까요?^^!!!

steem chain의 api를 위한 RPC 노드입니다 ㅎ

스팀 풀노드 설치도 가능하군요!

그럼요 다만... 데이터가 좀 많네요 ㅎㅎ;