안녕하세요 ayogom 입니다.
어제 최신 Full node 설치 1편 에 이어서 오늘도 Full node 설치에 대해서 설명을 해드리고자 합니다. 현재 저는 @rnt (@zzan.witnesses) 팀원으로 API Node 와 AH Node를 운영하고 있고 추가적으로 Hive mind Node 도 설치 중에 있습니다. 어제 포스팅에서는 Hive mind Node에 대해서 약 100G 정도라고 판단을 했는데, 동기화가 어느정도 끝났더니 이미 200G를 넘어선 상황입니다. 아마 300G 미만으로 되지 않을까 싶긴 한데, 아직도 동기화 중이라 정확한 데이터는 아직 공개 할 수가 없네요. Hive mind Node 의 용량에 따라 이것을 어떻게 처리 할 것인지 판단이 조금 필요할 것 같습니다. 서버 용량이 2T SSD로 어쩌면 모든 기능을 다 돌리기에는 부담스러울 수 있을 듯 해서요. 아무튼 오늘 예정이었던 Jussi Node 설정에 대해서 소개 하겠습니다.
Jussi Node 의 역활은 각각 분리되어 있는 API Node 와 AH Node 그리고 Hive mind Node를 통합하는 역활을 하고 있습니다. 즉 각각 노드로 접속을 해야 하지만, Jussi Node로 접속하면 Jussi Node가 알아서 해당 API로 전달을 해주는 역활입니다.
1. 설치.
git 을 통해 최신 Jussi 를 복사해옵니다.
git clone https://github.com/steemit/jussi.git
관련 Config 파일을 수정 합니다.
nano DEV_config.json
여기가 가장 중요한 부분입니다. 이 부분의 설정에 따라 동작하는 형태가 달라집니다. 즉 호출된 API를 어떻게 처리 시킬지 연결 하는 부분입니다.
이전에 우리는 API Node와 AH Node를 설치 하였기 때문에 그 기준으로 알려드립니다.
{
"limits": {
"accounts_blacklist": [
"accounttoblock"
]
},
"upstreams": [
{
"name": "steemd",
"translate_to_appbase": true,
"urls": [
[
"steemd",
"http://172.17.0.2:8091"
]
],
"ttls": [
[
"steemd",
3
],
[
"steemd.login_api",
-1
],
[
"steemd.network_broadcast_api",
-1
],
[
"steemd.follow_api",
10
],
[
"steemd.market_history_api",
1
],
[
"steemd.database_api",
3
],
[
"steemd.database_api.get_block",
-2
],
[
"steemd.database_api.get_block_header",
-2
],
[
"steemd.database_api.get_content",
1
],
[
"steemd.database_api.get_state",
1
],
[
"steemd.database_api.get_state.params=['/trending']",
30
],
[
"steemd.database_api.get_state.params=['trending']",
30
],
[
"steemd.database_api.get_state.params=['/hot']",
30
],
[
"steemd.database_api.get_state.params=['/welcome']",
30
],
[
"steemd.database_api.get_state.params=['/promoted']",
30
],
[
"steemd.database_api.get_state.params=['/created']",
10
],
[
"steemd.database_api.get_dynamic_global_properties",
1
]
],
"timeouts": [
[
"steemd",
5
],
[
"steemd.network_broadcast_api",
0
]
]
},
{
"name": "appbase",
"urls": [
[
"appbase",
"http://172.17.0.2:8091"
],
[
"appbase.account_history_api",
"http://172.17.0.3:8092"
],
[
"appbase.condenser_api.get_account_history",
"http://172.17.0.3:8092"
],
[
"appbase.condenser_api.get_ops_in_block",
"http://172.17.0.3:8092"
],
[
"appbase.condenser_api.get_followers",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_following",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_follow_count",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_discussions_by_trending",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_discussions_by_hot",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_discussions_by_promoted",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_discussions_by_created",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_discussions_by_blog",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_discussions_by_feed",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_discussions_by_comments",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_replies_by_last_update",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_trending_tags",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_discussions_by_author_before_date",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_post_discussions_by_payout",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_comment_discussions_by_payout",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_blog",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_blog_entries",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_account_votes",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_state",
"https://hivemind.steemitdev.com"
],
[
"appbase.condenser_api.get_state.params=['witnesses']",
"http://172.17.0.3:8092"
],
[
"appbase.condenser_api.get_state.params=['/witnesses']",
"http://172.17.0.3:8092"
],
[
"appbase.condenser_api.get_state.params=['/~witnesses']",
"http://172.17.0.3:8092"
],
[
"appbase.condenser_api.get_state.params=['~witnesses']",
"http://172.17.0.3:8092"
],
[
"appbase.follow_api",
"https://hivemind.steemitdev.com"
],
[
"appbase.tags_api",
"https://hivemind.steemitdev.com"
]
],
"ttls": [
[
"appbase",
3
],
[
"appbase.block_api",
-2
],
[
"appbase.database_api",
1
],
[
"appbase.login_api",
-1
],
[
"appbase.network_broadcast_api",
-1
],
[
"appbase.follow_api",
10
],
[
"appbase.market_history_api",
1
],
[
"appbase.condenser_api",
3
],
[
"appbase.condenser_api.get_block",
-2
],
[
"appbase.condenser_api.get_block_header",
-2
],
[
"appbase.condenser_api.get_content",
1
],
[
"appbase.condenser_api.get_state",
1
],
[
"appbase.condenser_api.get_state.params=['/trending']",
30
],
[
"appbase.condenser_api.get_state.params=['trending']",
30
],
[
"appbase.condenser_api.get_state.params=['/hot']",
30
],
[
"appbase.condenser_api.get_state.params=['/welcome']",
30
],
[
"appbase.condenser_api.get_state.params=['/promoted']",
30
],
[
"appbase.condenser_api.get_state.params=['/created']",
10
],
[
"appbase.condenser_api.get_dynamic_global_properties",
1
]
],
"timeouts": [
[
"appbase",
3
],
[
"appbase.network_broadcast_api",
0
],
[
"appbase.chain_api.push_block",
0
],
[
"appbase.chain_api.push_transaction",
0
],
[
"appbase.condenser_api.broadcast_block",
0
],
[
"appbase.condenser_api.broadcast_transaction",
0
],
[
"appbase.condenser_api.broadcast_transaction_synchronous",
0
],
[
"appbase.condenser_api.get_account_votes",
20
],
[
"appbase.condenser_api.get_ops_in_block.params=[2889020,false]",
20
],
[
"appbase.account_history_api.get_ops_in_block.params={\"block_num\":2889020,\"only_virtual\":false}",
20
]
]
}
]
}
현재 제 설정은 위와 같습니다. Hive mind Node를 아직 설정 하지 않았기 때문에 Hive minde 관련 호출시 https://hivemind.steemitdev.com
로 전달을 하고 있습니다.
그리고 http://172.17.0.2:8091
는 제 API Node 이고, http://172.17.0.3:8092
AH Node 입니다.
현재 동작중인 API와 AH Docker의 IP를 알아야 합니다.
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' "Node name"
이 주소를 위의 DEV_config.json
에 넣어주시는 겁니다.
이렇게 하고
screen -R jussi
Jussi 를 위한 별도릐 screen을 호출 합니다. 그리고 도커를 동작 시킵니다.
docker run -it --env JUSSI_UPSTREAM_CONFIG_FILE=/app/config.json -v /root/jussi/DEV_config.json:/app/config.json -p 8080:8080 steemit/jussi:latest
를 통해 동작을 시킬 수 있습니다. 다만 이 경우 백그라운드에서 되는 것이 아니기 때문에 가급적이면 screen 을 사용하시는게 좋습니다. Screen에서 다시 원래 화면으로 돌아가려면 Ctrl + A + D
으로 돌아가실 수 있습니다.
정상적으로 설정을 하셨다면 동작을 할 것입니다.
동작을 확인하는 방법으로는
curl -s --data '{"jsonrpc":"2.0", "method":"condenser_api.get_block", "params":[8675309], "id":1}' http://localhost:8080
으로 확인 할 수 있습니다.
만약 정상적이라면 아래와 같이 응답을 확인 할 수 있습니다. (https://api.steemzzang.com:8080 사용)
여기까지 해서 Jussi를 동작시켜봤습니다.
이후 도메인 설정이라든지, SSL 설정은 별도로 해주셔야 합니다.
Hive mind Node에 대한 설정은 모든 데이터가 동기화가 끝나면 작성하도록 하겠습니다.
작성 예정인 글 List
- Nodejs 를 이용한 스팀 API 사용해보기 (계속)
누군가에게는 도움이 될 수 있는 글
스팀잇 기본 이야기
- 복잡한 키&패스워드는 그만 손쉬운 로그인 키체인의 사용법
- 계정 옆의 숫자 평판? "reputation" 이란
- 스팀잇 내부 거래 사이트, 마켓
- 오랜만에 스팀잇에 돌아왔더니 로그인이 안됩니다 (Logging in with non-posting key)
- 스팀잇에 기존 사용하던 트론 지갑을 연결하는 방법
- 스팀 체인의 패스워드 / 키의 역활
- Steemit의 태그 사용법과 커뮤니티스 사용법
- Steemit 프로필 변경 방법
- 스팀파워 임대가 안된다 왜?
- 스팀잇 계정 만들기
- 스팀잇 저장 보상의 종류와 뭐가 좋을지
- 스팀잇 속닥속닥 비밀 메모 사용하기!
- 스팀/스달 입금, 출금 그리고 업비트 이용방법
- 갑자기 steemit 사이트가 접속이 안된다면?
- 스팀잇 내에 붉은 글씨 사용법
- 스팀잇 지갑에 접속이 되지 않을 때
- 스팀잇 글 작성 문법 [마크다운편]
- 스팀잇 글 작성 문법 [HTML]
- 스팀잇 가독성 및 작성을 편하게 해주는 "Steemit.com Enhancer" 툴
- 스팀 키 권한을 해제 해 보자
니트로스 (SCT, ZZAN 등 ) 이야기
- Steem체인의 또하나의 커뮤니티 "zzan"
- Steem체인의 또하나의 커뮤니티 "sct"
- [요청] 스팀엔진 Explorer 가 접속이 되지 않아요
- [요청] 스팀엔진 사용방법
- SCT 포스팅피 납부 확인 및 납부 방법
- 니트로스(SCT, ZZAN, AAA) 에 대한 설정 확인해보기
스팀잇 심화 이야기
- 스팀의 인플레이션에 대해서
- 하루에 스팀 리워드 풀에 포함되는 스팀은 얼마나 될까?
- 하루에 도대체 어느정도의 스팀은 생성될까요?
- 내가 보팅 했더니 보상이 떨어졌다? 왜?
- 스팀달러가 1달러를 유지하는 방법
- 글이 써지지 않아요 왜? Resource Credits!? Your transaction failed to process
- 스팀잇 에서의 $ 는 USD(미국달러) 인가요?
- 스팀은 DPOS 기반의 블록체인입니다. 그럼 DPOS가 뭔가요?
- 증인에 역활은 무엇일까
- 스팀 증인 노드 세팅하기 1탄
- 스팀 증인 노드 세팅하기 2탄
- Steem Node 정리 (Full node 1편)
- Steem Node 정리 (Full node 2편) -설치
- 최신 Full node 설치 1편
- 증인 노드 feed price 업데이트 방법
스팀잇 보상과 연결되는 이야기
해킹과 관련된 이야기
개발과 관련된 이야기
- Nodejs 가 무엇인지 그리고 어떻게 설치 하는지?
- [NodeJS] API 사용 법 1편 스팀 라이브러리 설치
- [NodeJS] API 사용 법 2편 보팅을 해볼까?
- [NodeJS] API 사용 법 3편 포스팅을 해볼테다!
- [NodeJS] API 사용 법 4편 예약 포스팅 해보기
- [NodeJS] API 사용 법 5편 예약 포스팅 해보기 -2편 (포스팅 수정)
- [NodeJS] API 사용 법 6편 예약 포스팅 해보기 -3편 (매일매일 글쓰기)
- [NodeJS] API 사용 법 7편 스팀 블럭 모니터링 하기
- [NodeJS] API 사용 법 8편 스팀 블럭 모니터링 하기 2편
- [NodeJS] API 사용 법 9편 Nodejs가 가지는 불편함 (콜백지옥)
- [NodeJS] API 사용 법 10편 간단한 보팅 봇 만들기
- [NodeJS] API 사용 법 11편 Steem enjin API 사용해보기 (설치편)
- [NodeJS] API 사용 법 12편 Steem enjin API 사용해보기 (자동 파워업!)
[US$80.50](▼16%)[SONGJING]SONGJING SJ-125E 제습기 / 송징 SJ-125E 제습기 / 36평적용 / 165W 고출력 / 대용량 물탱크 / 관부가
WWW.QOO10.COMDownvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
start success go! go! go!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@banguri님이 당신을 멘션하였습니다.
https://www.steemit.com/@banguri/6-10
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@ayogom transfered 10 KRWP to @krwp.burn. voting percent : 9.12%, voting power : 60.53%, steem power : 1785755.30, STU KRW : 1200.
@ayogom staking status : 825 KRWP
@ayogom limit for KRWP voting service : 1.65 KRWP (rate : 0.002)
What you sent : 10 KRWP
Refund balance : 8.35 KRWP [54506657 - c2081ad738e7d97fd6c11ef8c81d9b8db831e103]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@akiri00님이 당신을 멘션하였습니다.
https://www.steemit.com/@akiri00/2021-06-10-steemit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
@akiri00님이 당신을 멘션하였습니다.
https://www.steemit.com/@akiri00/3ye3eh-2021-06-10-steemit
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit