Screen Shot 2558-08-23 at 9.25.09 PM
ปัญหาหลักของการนำ Elasticsearch ไปใช้งานบน production server
นั่นก็คือ เราจะต้องทำการปรับแต่งค่า หรือ configuration อะไรกันบ้าง ?

ดังนั้น เรามาตรวจสอบด้วย checklist ดังนี้กันหน่อย
เพื่อทำให้เรา และ ระบบมั่นใจนะครับ

1. ควรใช้ Software ตัวล่าสุด ตรวจสอบซะ

2. มาดู Configuration ของ Elasticsearch กันบ้าง

  • ชื่อ cluster ต้องไม่ใช่ elasticsearch
  • ชื่อ node ควรเป็นชื่อที่มีความหมาย ไม่ใช่ค่า default นะ
  • ทำการกำหนด data path สำหรับเก็บข้อมูลอย่างชัดเจน
  • กำหนดให้ Elasticsearch server ทำการ start ตอนที่ OS เริ่มต้นทำงาน
  • ใช้ Unicast แทน Multicast ด้วยนะ อย่าลืมเด็ดขาด
  • อย่าลืมกำหนดค่าของ gateway.recover_after_nodes ให้มีค่าเท่ากับจำนวน node ใน cluster ด้วย ไม่เช่นนั้นเมื่อ restart cluster แล้วอาจจะทำให้การกระจายข้อมูลผิดพลาดได้
  • อย่าลืมกำหนดค่าของ discovery.zen.minimum_master_nodes ให้มีค่าเท่ากับ (node/2) +1 โดยที่ n คือจำนวน node เพื่อลดภาระการทำงานของ master node ลงไป
  • เรื่องการ backup ก็ห้ามลืม ดูวิธีการได้ที่นี่ Backup your cluster

3. เนื่องจาก Elasticsearch มันทำงานบน JVM ดังนั้นเรื่องขนาดของ HEAP จึงสำคัญมาก

  • ES_HEAP_SIZE กำหนดไว้ประมาณ 50% ของ memory ที่ว่าง
  • ES_HEAP_SIZE ต้องมีขนาดน้อยกว่าเท่ากับ 32 GB นะ
  • ให้ monitoring การทำงานของ Garbage collector ด้วยล่ะ ถ้าใช้ memory มากกว่า 90% อยู่ตลอดเวลาควรเพิ่ม node หรือ memory ได้แล้ว

4. การ Configuration OS

  • เนื่องจาก Elasticsearch ทำการเปิดไฟล์เป็นจำนวนมาก ดังนั้นควรเพิ่มจำนวนในแต่ละ os ให้เพียงพอด้วย
  • ไม่ควรให้เครื่อง server เข้าถึงจากโลกข้างนอกได้ ดังนั้นให้เป็นเครื่องใน private zone เถอะนะ

5. เรื่องของ Hardware ที่ใช้งาน

  • ให้จัดเต็มเรื่อง CPU และ Memory
  • ใช้ SSD Disk เลยนะ ถ้าเป็นไปได้
  • ใช้ Network ที่มีค่า latency ต่ำแบบสุด ๆ

6. REST APIs สำหรับการ monitoring cluster ที่ควรรู้ไว้บ้าง

  • /_status สำหรับดูข้อมูลของ index
  • /_nodes สำหรับดูข้อมูลของ node ใน cluster
  • /_stats สำหรับดูสถิติการใช้งานทั้งหมด เช่น การอ่าน การเขียนข้อมูล
  • /_cluster/health สำหรับดูข้อมูล และ สถานะของ cluster

ดังนั้น ถ้าใครนำ Elasticsearch ไปใช้งานบน production server
ก็ลองนำ checklist ไปตรวจสอบดูกัน
ว่าต้องปรับปรุง และ แก้ไขอะไรบ้าง

ถ้าใครมีเทคนิคดี ๆ ก็แนะนำมาได้นะครับ