2017년 11월 10일 ObjectRocket.com/blog에 처음 게시되었습니다.
모든 Rackspace ObjectRocket for Elasticsearch® 클러스터는 여러 클라이언트 노드와 함께 제공되기 때문에 고객으로부터 받는 일반적인 질문은 다음과 같습니다. 왜 우리는 그들 모두에 연결하기 위해 로드 밸런서를 제공하지 않습니까?
기본 설정에 따라 클러스터 실패 지점으로 단일 노드에 대한 단일 연결이 표시될 수 있습니다. 로드 밸런서는 할 수 있습니다 연결 풀을 관리하는 데 효과적인 것으로 입증되었습니다. 그러나 Elasticsearch는 로드 밸런서 없이 작동하도록 설계되었습니다. 이 블로그 게시물에서는 Elasticsearch에서 제공하는 모든 클라이언트를 사용하는 방법을 살펴봅니다.

파이썬 설정
Python® 설정을 살펴보겠습니다.
from elasticsearch import Elasticsearch
Import certifi
es = Elasticsearch(['dc-port-0.es.objectrocket.com', 'dc-port-1.es.objectrocket.com', 'dc-port-2.es.objectrocket.com', 'dc-port-3.es.objectrocket.com'],
http_auth=('YOUR_USERNAME', 'YOUR_PASSWORD'),
port=12345,
use_ssl=True,
verify_certs=True,
ca_certs=certifi.where(),
)
첫 번째 인수는 Elasticsearch가 호스트 목록을 수락한다는 것을 보여줍니다. 즉, 클라이언트가 자체적으로 설정을 계속할 수 있습니다. 설정은 Beats와 같은 다른 도구와 유사합니다. 설정 스크립트는 다음 예와 유사합니다.
output:
elasticsearch:
hosts: ["https://dc-port-0.es.objectrocket.com:port", "https://dfw-port-1.es.objectrocket.com:port", "https://dfw-port-2.es.objectrocket.com:port", "https://dfw-port-3.es.objectrocket.com:port"]
# HTTP basic auth
username: "YOUR_USERNAME"
password: "YOUR_PASSWORD"
사용 가능한 대부분의 도구와 클라이언트는 여러 호스트를 지원합니다. 쉽게 사용할 수 있도록 Python®, Ruby, C#, Java®, Javascript®, Go, Logstash 및 Beats용 ObjectRocket UI에 연결 스니펫이 포함되어 있습니다. 사용 중인 기술을 선택한 다음 호스트 이름이 미리 채워진 스니펫을 복사하기만 하면 됩니다.

여러 호스트를 사용하지 않는 애플리케이션을 위한 대안
일부 응용 프로그램은 호스트 목록을 만들지 않습니다. 가장 주목할만한 것은 단일 호스트를 허용하는 Kibana®입니다. 이 문제를 해결하기 위해 몇 가지 대안을 사용할 수 있습니다.
앱의 각 부분을 다른 클라이언트로 지정
중요하지 않은 용도 및 응용 프로그램의 경우 단일 클라이언트 노드를 가리킬 수 있습니다. 애플리케이션의 요청 속도가 매우 높지 않은 경우 단일 클라이언트가 로드를 관리할 수 있어야 합니다. 이러한 유형의 응용 프로그램이 여러 개 있는 경우 각 응용 프로그램이 다른 클라이언트를 가리키도록 하여 부하를 분산시키십시오.
로컬 부하 분산
클라이언트 또는 응용 프로그램이 지원하지 않고 클라이언트 연결에 중복성이 필요한 몇 가지 경우에 로컬 로드 밸런싱을 설정할 수 있습니다. nginx®, HAProxy® 및 기타를 사용하여 이 작업을 수행하거나 Elasticsearch 클라이언트 간에 라운드 로빈을 사용하는 DNS(Domain Name System)에 로컬 호스트 이름을 설정할 수 있습니다. 다시 한 번 말씀드리지만, 이것이 필요한 경우는 거의 없지만 문제가 발생하면 사용할 수 있는 솔루션이 있습니다.
결론
접하는 거의 모든 시나리오에서 균형을 처리하는 호스트 목록을 제공할 수 있지만, 상황에 따라 로컬에서 로드 균형을 조정하는 데 도움이 되는 예제가 있습니다.
Rackspace DBA 서비스에 대해 자세히 알아보십시오.
피드백 탭을 사용하여 의견을 작성하거나 질문하십시오. 영업 채팅을 클릭할 수도 있습니다. 지금 채팅하고 대화를 시작하세요.