Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Kết Nối Liền Mạch Đến Nhiều Node Elasticsearch Không Cần Load Balancer

Bài viết gốc đăng tải ngày 10 tháng 11 năm 2017 tại ObjectRocket.com/blog.

Kết Nối Liền Mạch Đến Nhiều Node Elasticsearch Không Cần Load Balancer Vì tất cả cluster Rackspace ObjectRocket cho Elasticsearch® đều đi kèm nhiều client node, một câu hỏi phổ biến chúng tôi nhận được từ khách hàng là tại sao chúng tôi không cung cấp load balancer để kết nối với tất cả chúng.

Tùy thuộc vào sở thích của bạn, bạn có thể xem kết nối đơn lẻ đến một node đơn lẻ là điểm thất bại của cluster. Load balancer có thể chứng minh hiệu quả để quản lý pool kết nối. Tuy nhiên, Elasticsearch được thiết kế để hoạt động không cần load balancer. Trong bài blog này, chúng tôi đi qua cách sử dụng tất cả các client chúng tôi cung cấp trong Elasticsearch.

Kết Nối Liền Mạch Đến Nhiều Node Elasticsearch Không Cần Load Balancer

Cấu hình Python

Hãy xem cấu hình 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(), ) 

Tham số đầu tiên cho thấy Elasticsearch chấp nhận danh sách host. Nghĩa là client có thể tiếp tục thiết lập trên chính mình. Thiết lập tương tự các công cụ khác, như Beats. Script thiết lập sẽ tương tự ví dụ sau:

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" 

Hầu hết công cụ và client có sẵn đều hỗ trợ nhiều host. Để làm cho bạn dễ dàng, chúng tôi bao gồm connection snippet trong UI ObjectRocket cho Python®, Ruby, C#, Java®, Javascript®, Go, Logstash và Beats. Chỉ cần chọn công nghệ bạn đang dùng và sao chép snippet với hostname đã điền sẵn.

Kết Nối Liền Mạch Đến Nhiều Node Elasticsearch Không Cần Load Balancer

Giải pháp thay thế cho ứng dụng không chấp nhận nhiều host

Một vài ứng dụng không làm danh sách host. Đáng chú ý nhất là Kibana®, chỉ chấp nhận một host đơn lẻ. Để khắc phục điều này, bạn có thể sử dụng một vài phương án thay thế.

Trỏ mỗi phần của app đến client khác nhau

Cho việc sử dụng không mission-critical và ứng dụng, bạn có thể trỏ đến một client node đơn lẻ. Trừ khi ứng dụng có tỷ lệ request siêu cao, một client đơn lẻ nên có thể quản lý tải. Nếu bạn có một số loại ứng dụng này, chỉ cần trỏ mỗi cái đến một client khác nhau để cân bằng tải.

Cân bằng tải cục bộ (Load balance locally)

Trong vài trường hợp client hoặc ứng dụng không hỗ trợ, và bạn cần redundancy trong kết nối client, bạn có thể thiết lập local load-balancing. Bạn có thể làm điều này với nginx®, HAProxy®, và những cái khác, hoặc chỉ thiết lập hostname cục bộ trong Domain Name System (DNS) sử dụng round-robin giữa các client Elasticsearch. Một lần nữa, chúng tôi thấy rất ít trường hợp cần thiết, nhưng có giải pháp khi nó xuất hiện.

Kết luận

Gần như mọi kịch bản bạn gặp cho phép bạn cung cấp danh sách host xử lý việc cân bằng cho bạn, nhưng, trong trường hợp khẩn cấp, có ví dụ để giúp bạn cân bằng tải cục bộ.

Tìm hiểu thêm về Dịch Vụ DBA của Rackspace.

Sử dụng tab Phản Hồi để đưa ra bình luận hoặc đặt câu hỏi. Bạn cũng có thể nhấp vào Sales Chat để trò chuyện ngay và bắt đầu cuộc hội thoại.