# PN, EN 노드간 static\_node.json 설정 관련

**URL:** <https://devforum.kaia.io/t/pn-en-static-node-json/723>\
**Category:** Kaia\
**Tags:** klaytn\
**Created:** [3월 2, 2021, 3:15오전 UTC](https://devforum.kaia.io/t/pn-en-static-node-json/723 "2021-03-02T03:15:19Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![benjamin](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/benjamin/32/368_2.png) [@benjamin](https://devforum.kaia.io/u/benjamin)\
**Post date:** [3월 2, 2021, 3:15오전 UTC](https://devforum.kaia.io/t/pn-en-static-node-json/723/1 "2021-03-02T03:15:19Z")

</div>

안녕하세요.  
저희가 현재 PN, EN을 운영 중에 있는데, 추가로 EN을 더 설정하려고 하는 중에 문의가 있습니다.

\<현재 상태\>  
PN \<-\> EN (서로 static\_node.json 에 kni:IP:Port 목록이 있음)

\<추가 EN\>  
EN\_new 의 static\_node.json에 현재 PN의 kni:IP:Port를 넣음.

(문의 1)  
klaytn Doc 상에는 PN에 대해서만 static\_node.json 사용법이 나와있는데요. EN에 static\_node.json을 쓰는 것이 효과가 있는지요?

(문의 2)  
EN\_new의 로그를 살펴보니 static\_node.json에 써놓은 기존의 PN과 연결을 못하고 Add dial candite만 계속 하고 있습니다. admin.Peers 로 살펴봐도 static에 적어놓은 PN과 연결되지 못하고 있습니다. 관련하여 기존 PN내의 static\_node.json에는 새로운 EN\_new에 대해서는 적어놓지 않았습니다. 혹시 쌍방향으로 적어놓지 않아서 연결이 안되는건가요? (참고로 기존의 PN \<-\> EN 간에는 static\_node.json에 서로 다 적혀있긴 합니다. 그래서 연결된 노드 목록에 나옵니다.)

(문의 3)  
만약 EN\_new에 PN에 대해 static\_node.json 설정하고, PN에도 EN\_new의 IP를 static\_node.json에 설정한 후에 EN\_new 안에 No\_Discory=1 로 하면 새로운 EN\_new는 PN하고만 p2p 통신을 하도록 설정할 수 있을까요? 그러면 혹시 서로 같은 위치에 있는 서버라서 저희 EN\_new의 통신간의 이점이 있을까요?

감사합니다.

---

<div class="post-metadata">

**Author:** ![colin.kim](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/colin.kim/32/55_2.png) [@colin.kim](https://devforum.kaia.io/u/colin.kim)\
**Post date:** [3월 4, 2021, 8:42오전 UTC](https://devforum.kaia.io/t/pn-en-static-node-json/723/2 "2021-03-04T08:42:36Z")

</div>

> (문의 1)  
> klaytn Doc 상에는 PN에 대해서만 static\_node.json 사용법이 나와있는데요. EN에 static\_node.json을 쓰는 것이 효과가 있는지요?

네, 효과 있습니다.

> (문의 2)  
> EN\_new의 로그를 살펴보니 static\_node.json에 써놓은 기존의 PN과 연결을 못하고 Add dial candite만 계속 하고 있습니다. admin.Peers 로 살펴봐도 static에 적어놓은 PN과 연결되지 못하고 있습니다. 관련하여 기존 PN내의 static\_node.json에는 새로운 EN\_new에 대해서는 적어놓지 않았습니다. 혹시 쌍방향으로 적어놓지 않아서 연결이 안되는건가요? (참고로 기존의 PN ↔ EN 간에는 static\_node.json에 서로 다 적혀있긴 합니다. 그래서 연결된 노드 목록에 나옵니다.)

아뇨, 쌍방향으로 적지 않아도 되는데, PN쪽에도 적어주시면 서로 dialing을 할테니 연결이 맺어질 가능성이 좀 더 높을 것 같습니다. 혹시 방화벽 문제는 없는지 확인 부탁드립니다. 또한, EN의 nodekey가 잘 설정되어 있는지도 확인 부탁드리겠습니다.

> (문의 3)  
> 만약 EN\_new에 PN에 대해 static\_node.json 설정하고, PN에도 EN\_new의 IP를 static\_node.json에 설정한 후에 EN\_new 안에 No\_Discory=1 로 하면 새로운 EN\_new는 PN하고만 p2p 통신을 하도록 설정할 수 있을까요? 그러면 혹시 서로 같은 위치에 있는 서버라서 저희 EN\_new의 통신간의 이점이 있을까요?

NO\_DISCOVERY=1로 설정하시면 boot node에서 동적으로 다른 full node를 검색해서 추가하는 동작이 실행되지 않고 static-nodes.json에 있는 파일을 기준으로만 dial을 맺게 됩니다. 따라서 다른 노드들이 해당 노드와 연결될 수 없습니다. 만약 PN의 성능이 충분하고 네트웍 대역폭도 충분하다면 굳이 다른 노드와 연결될 필요는 없습니다만, 해당 PN의 sync가 지연되거나 네트웍 대역폭 때문에 패킷 전송이 지연될 경우, 다른 노드를 통한 블록 다운로드가 불가능하여 EN\_new의 sync도 지연될 가능성이 있으니 참고 부탁드리겠습니다.

감사합니다.

---

<div class="post-metadata">

**Author:** ![benjamin](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/benjamin/32/368_2.png) [@benjamin](https://devforum.kaia.io/u/benjamin)\
**Post date:** [3월 4, 2021, 9:04오전 UTC](https://devforum.kaia.io/t/pn-en-static-node-json/723/3 "2021-03-04T09:04:45Z")

</div>

문의 2번 관련하여 쌍방향으로 적지 않아도 된다고 하셨는데, 방화벽은 0.0.0.0/0 (32323, 32324) 로 다 열려있는 상황입니다. 그렇다면 저희 EN이 PN에 대해 다른 노드보다 굳이 연결할 필요가 없다고 생각해서 시도만 하고 계속 연결을 안하는 상황일까요? 관련 소스 로직 부분을 알려주시면 더 감사하겠습니다.

---

<div class="post-metadata">

**Author:** ![Winnie](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/winnie/32/247_2.png) [@Winnie](https://devforum.kaia.io/u/Winnie)\
**Post date:** [3월 4, 2021, 1:15오후 UTC](https://devforum.kaia.io/t/pn-en-static-node-json/723/4 "2021-03-04T13:15:57Z")

</div>

안녕하세요 GroundX 플랫폼팀에 Winnie입니다.

static-nodes.json에 있는 모든 주소는 30초에 한번 Dial 시도합니다. 즉, EN은 계속 시도하고 있지만, PN에서 거절고 있거나 PN에 도달하지 못하고 있습니다.  
Dial 실패 원인 로그는 `logger.Debug("[Dial] Failed dialing", "task", t, "err", err)` [(코드 위치 링크)](https://github.com/klaytn/klaytn/blob/e5f5133f19caec8460c7b83e09388ab5f459900d/networks/p2p/dial.go#L492)에서 확인하실 수 있습니다.  
EN을 실행하실 때, 저 부분의 log level을 Info 이상으로 올리시거나 또는 `kend.conf`에서 `VERBOSITY=2`로 수정하시면 로그로 연결 실패 원인을 파악하실 수 있습니다.

로그 확인 공유 부탁드립니다.  
감사합니다. 🙂
