Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> ฐานข้อมูล

วิธีเชื่อมต่อกับโหนดไคลเอนต์ Elasticsearch หลายโหนดโดยไม่ต้องโหลดบาลานเซอร์

เผยแพร่ครั้งแรกเมื่อวันที่ 10 พฤศจิกายน 2017 ที่ ObjectRocket.com/blog

วิธีเชื่อมต่อกับโหนดไคลเอนต์ Elasticsearch หลายโหนดโดยไม่ต้องโหลดบาลานเซอร์ เนื่องจาก Rackspace ObjectRocket สำหรับคลัสเตอร์ Elasticsearch® ทั้งหมดมาพร้อมกับโหนดไคลเอนต์หลายโหนด คำถามทั่วไปที่เราได้รับจากลูกค้าของเราคือ เหตุใดเราจึงไม่มีตัวโหลดบาลานซ์เพื่อเชื่อมต่อกับพวกเขาทั้งหมด

ขึ้นอยู่กับการกำหนดลักษณะของคุณ คุณอาจเห็นการเชื่อมต่อเดี่ยวกับโหนดเดียวเป็นจุดของความล้มเหลวของคลัสเตอร์ ตัวโหลดบาลานซ์ สามารถ พิสูจน์ว่ามีประสิทธิภาพในการจัดการกลุ่มการเชื่อมต่อ อย่างไรก็ตาม Elasticsearch ได้รับการออกแบบมาให้ทำงานโดยไม่มีตัวโหลดบาลานซ์ ในบล็อกโพสต์นี้ เราจะพูดถึงวิธีใช้ไคลเอนต์ทั้งหมดที่เรามีให้ใน Elasticsearch

วิธีเชื่อมต่อกับโหนดไคลเอนต์ Elasticsearch หลายโหนดโดยไม่ต้องโหลดบาลานเซอร์

การตั้งค่า Python

มาดูการตั้งค่า 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"

เครื่องมือและไคลเอนต์ส่วนใหญ่มีให้รองรับหลายโฮสต์ เพื่อให้ง่ายสำหรับคุณ เราได้รวมข้อมูลโค้ดการเชื่อมต่อไว้ใน ObjectRocket UI สำหรับ Python®, Ruby, C#, Java®, Javascript®, Go, Logstash และ Beats เพียงเลือกเทคโนโลยีที่คุณใช้ แล้วคัดลอกข้อมูลโค้ดโดยใส่ชื่อโฮสต์ของคุณไว้ล่วงหน้า

วิธีเชื่อมต่อกับโหนดไคลเอนต์ Elasticsearch หลายโหนดโดยไม่ต้องโหลดบาลานเซอร์

ทางเลือกสำหรับแอปพลิเคชันที่ไม่ต้องใช้หลายโฮสต์

แอปพลิเคชั่นบางตัวไม่ได้สร้างรายชื่อโฮสต์ สิ่งที่น่าสังเกตมากที่สุดคือ Kibana® ซึ่งยอมรับโฮสต์เดียว ในการแก้ปัญหานี้ คุณสามารถใช้ทางเลือกอื่นได้

ชี้แต่ละส่วนของแอปไปที่ไคลเอ็นต์ที่แตกต่างกัน

สำหรับการใช้งานและแอปพลิเคชันที่ไม่สำคัญ คุณสามารถชี้ไปที่โหนดไคลเอ็นต์เดียว เว้นแต่ว่าแอปพลิเคชันจะมีอัตราคำขอที่สูงมาก ลูกค้ารายเดียวควรสามารถจัดการโหลดได้ หากคุณมีแอปพลิเคชันประเภทนี้จำนวนหนึ่ง ให้ชี้แต่ละแอปพลิเคชันไปที่ไคลเอ็นต์อื่นเพื่อสร้างสมดุลในการโหลด

โหลดบาลานซ์ในเครื่อง

ในบางกรณีที่ไคลเอ็นต์หรือแอปพลิเคชันไม่สนับสนุน และคุณต้องการความซ้ำซ้อนในการเชื่อมต่อไคลเอ็นต์ คุณสามารถตั้งค่าการจัดสรรภาระงานในเครื่องได้ คุณสามารถทำได้ด้วย nginx®, HAProxy® และอื่นๆ หรือเพียงแค่ตั้งค่าชื่อโฮสต์โลคัลในระบบชื่อโดเมน (DNS) ที่ใช้การวนรอบระหว่างไคลเอนต์ Elasticsearch เป็นอีกครั้งที่เราเห็นกรณีที่จำเป็นน้อยมาก แต่มีวิธีแก้ปัญหาเมื่อเกิดขึ้น

บทสรุป

เกือบทุกสถานการณ์ที่คุณพบจะให้คุณระบุรายชื่อโฮสต์ที่จัดการการปรับสมดุลให้กับคุณได้ แต่มีตัวอย่างที่จะช่วยให้คุณโหลดบาลานซ์ในเครื่องได้อย่างรวดเร็ว

เรียนรู้เพิ่มเติมเกี่ยวกับ Rackspace DBA Services

ใช้แท็บคำติชมเพื่อแสดงความคิดเห็นหรือถามคำถาม คุณยังสามารถคลิกแชทขาย เพื่อแชทตอนนี้และเริ่มการสนทนา