elasticsearch network configuration

elasticsearch 클러스터를 구성할 때 2가지 종류의 IP를 설정해야 한다.

  • network.bind.host
    elasticsearch node가 바인드할 IP
    기본값: anyLocalAddress(일반적으로 0.0.0.0 또는 ::0)
  • network.publish_host
    elasticsearch 클러스터의 나머지 노드가 해당 노드에 접속할 때 사용할 IP
    기본값: 호스트 장비의 네트워크 중 loopback address가 아닌 첫 번째 IP
  • network.host
    network.bind.host와 network.publish_host가 같을 때 설정

아래는 elasticsearch를 로컬에서 노드를 실행할 때 발생한 로그다.

노드간 통신시 기본적으로 publish_address를 기반으로 하는데, 노드에 네트워크 카드가 2개가 있고, 실제 내부 통신에서 사용하는 인터페이스가 첫 번째가 아닌 두 번째인 경우, 해당 노드 실행시

  • 해당 노드는 첫 번째 인터페이스를 network.publish_host로 설정하게 되고
  • 나머지 노드에서는 /etc/hosts를 기반으로 해당 노드의 두 번째 인터페이스를 기반으로 해당 노드를 dicovery 하려고 시도한다

따라서 이 경우에는 클러스터의 노드간 통신에 문제가 발생한다.
결론적으로, 노드에 네트워크 인터페이스가 2개 이상인 경우에는, network_publish_host 정보를 적절히(${HOST_NAME} 과 같은) 설정해야 한다.

 

References

elasticsearch reference 1.4: network settings

Leave a Reply

Your email address will not be published. Required fields are marked *