Computer >> Máy Tính >  >> Lập trình >> Cơ sở dữ liệu

Cách kết nối với nhiều nút khách Elasticsearch mà không cần bộ cân bằng tải

Được xuất bản lần đầu vào ngày 10 tháng 11 năm 2017, tại ObjectRocket.com/blog.

Cách kết nối với nhiều nút khách Elasticsearch mà không cần bộ cân bằng tải Vì tất cả Rackspace ObjectRocket cho Elasticsearch®clusters đều có nhiều nút khách hàng, một câu hỏi phổ biến mà 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 bộ cân bằng tải để kết nối với tất cả chúng.

Tùy thuộc vào tùy chọn của bạn, bạn có thể xem một kết nối đến một nút duy nhất là điểm lỗi của cụm. Một bộ cân bằng tải có thể chứng minh hiệu quả để quản lý một nhóm các kết nối. Tuy nhiên, Elasticsearch được thiết kế để hoạt động mà không cần bộ cân bằng tải. Trong bài đăng blog này, chúng tôi xem xét cách sử dụng tất cả các khách hàng mà chúng tôi cung cấp trong Elasticsearch.

Cách kết nối với nhiều nút khách Elasticsearch mà không cần bộ cân bằng tải

Thiết lập Python

Hãy xem cách thiết lập 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(),
)

Đối số đầu tiên cho bạn thấy rằng Elasticsearch chấp nhận một danh sách các máy chủ. Điều đó có nghĩa là khách hàng có thể tự mình tiếp tục thiết lập. Việc thiết lập tương tự như các công cụ khác, chẳng hạn như Beats. Tập lệnh thiết lập sẽ tương tự như 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ác công cụ và ứng dụng khách có sẵn đều hỗ trợ nhiều máy chủ. Để giúp bạn dễ dàng hơn, chúng tôi đưa các đoạn mã kết nối vào giao diện người dùngObjectRocket cho Python®, Ruby, C #, Java®, Javascript®, Go, Logstash và Beats. Chỉ cần chọn công nghệ bạn đang sử dụng và sau đó sao chép đoạn mã với tên máy chủ của bạn được điền sẵn.

Cách kết nối với nhiều nút khách Elasticsearch mà không cần bộ cân bằng tải

Các lựa chọn thay thế cho các ứng dụng sẽ không sử dụng nhiều máy chủ

Một số ứng dụng không tạo danh sách các máy chủ. Đáng chú ý nhất là Kibana®, chấp nhận một máy chủ duy nhất. Để giải quyết vấn đề này, bạn có thể sử dụng một số lựa chọn thay thế.

Trỏ từng phần của ứng dụng vào một ứng dụng khách khác

Đối với các ứng dụng và ứng dụng không mang tính chất quan trọng, bạn có thể chỉ vào một nút máy khách. Trừ khi ứng dụng có tỷ lệ yêu cầu quá cao, một ứng dụng khách sẽ 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ỏ từng ứng dụng vào một ứng dụng khách khác nhau để cân bằng tải.

Cân bằng tải cục bộ

Trong một số trường hợp máy khách hoặc ứng dụng không hỗ trợ nó và bạn cần dự phòng trong các kết nối máy khách, bạn có thể thiết lập cân bằng tải cục bộ. Bạn có thể thực hiện việc này với nginx®, HAProxy® và các ứng dụng khác, hoặc chỉ cần thiết lập Hệ thống tên miền tên miền máy chủ lưu trữ cục bộ (DNS) sử dụng luân chuyển giữa các máy khách Elasticsearch. Một lần nữa, chúng tôi thấy rất ít trường hợp điều này là cần thiết, nhưng có những giải pháp sẵn có khi nó xuất hiện.

Kết luận

Hầu hết mọi tình huống bạn gặp phải đều cho phép bạn cung cấp danh sách các máy chủ quản lý việc cân bằng cho bạn, tuy nhiên, có một số ví dụ có sẵn để giúp bạn cân bằng tải cục bộ.

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

Sử dụng tab Phản hồi để đưa ra bất kỳ nhận xét hoặc đặt câu hỏi nào. Bạn cũng có thể nhấp vào Trò chuyện bán hàng để trò chuyện ngay bây giờ và bắt đầu cuộc trò chuyện.