สร้าง Cluster ด้วย Amazon OpenSearch Service (ระดับเบื้องต้น)

นี่เป็นบทความพื้นฐานเกี่ยวกับการใช้บริการ Amazon OpenSearch Service ซึ่งเปลี่ยนชื่อมาจาก Amazon Elasticsearch Service ซึ่งน่าแปลกใจที่ยังไม่ค่อยเห็นมีบทความเกี่ยวกับบริการนี้เท่าไหร่นักเลยอยากจะเขียนข้อมูลเบื้องต้นให้ทุกคนได้อ่านกันครับ 

สร้าง DOMAIN

ไปที่หน้า OpenSearch จาก AWS Management Console จากนั้นคลิก Create domain

โดยหน้าจอการสร้าง DOMAIN สามารถตั้งค่าได้ค่อนข้างละเอียดโดยเราจะมาลงลึกในส่วนนี้กันครับ

โดยจะเริ่มต้นที่ Domain name และ Custom end point กันก่อนครับ โดยให้ระบุชื่อ Domain name ก่อน
โดยในส่วนของ Custom end point จะไม่ใช่ end point ที่สร้างขึ้นโดยอัตโนมัติโดย OpenSearch แต่เป็นการตั้งค่าเพื่อใช้ end point ที่ได้ลงทะเบียนไว้กับ AWS Certificate Manager อยู่แล้ว ซึ่งในครั้งนี้เราจะไม่ได้ใช้งานส่วนนี้ครับ  

เนื่องจากครั้งนี้ต้องการดูการทำงานของ Multi AZ เลยเลือก Template เป็น Production และ Deployment option(s) เลือกเป็น Domain without standby และ 2-AZ โดยจะเลือกเวอร์ชันล่าสุดของ OpenSearch เป็น 2.11 ครับ

การปรับแต่งการทำงานโดยอัตโนมัติ (Auto-tune) เป็นฟีเจอร์ที่ปรับแต่งประสิทธิภาพของ Cluster โดยอัตโนมัติตาม workload โดยในการปรับแต่งบางส่วนจะเป็นการใช้ Blue/Green Deployment อีกด้วย

ในหัวข้อ Data nodes จะสามารถกำหนด Instance type และจำนวน nodes ได้ โดยครั้งนี้จะเลือกเป็น r6g.large.search ที่เป็น Instance type ที่เหมาะสำหรับการใช้งานหน่วยความจำ และสำหรับขนาด large จะมีค่าบริการ $0.202/ชั่วโมง, สำหรับ t3.small.search ซึ่งมีราคาถูกที่สุดจะอยู่ที่ $0.056/ชั่วโมง แต่น่าจะไม่เหมาะใช้งานกับ Elasticsearch ที่ต้องการหน่วยความจำสูง สำหรับตัวเลือกส่วนอื่นๆก็เลือกเป็นตามค่าเริ่มต้นทั้งหมด

หากต้องการทราบรายละเอียดของขนาดเพิ่มเติมสามารถดูได้จากเอกสารของ AWS ทางด้านล่างนี้ครับ
Sizing Amazon OpenSearch Service domains - Amazon OpenSearch Service

Dedicated master nodes บริการ OpenSearch ได้นำระบบคลัสเตอร์แบบกระจายมาใช้ โดยความพร้อมใช้งานจะแนะนำไว้ที่ 3 nodes โดยจะไม่สามารถเลือกได้ต่ำกว่า 3 nodes ได้

UltraWarm เป็นชั้นการเก็บข้อมูล (storage) ที่สามารถเติมเต็มข้อมูลจำนวนมากได้ด้วยราคาที่คุ้มค่า โดยคุณสมบัตินี้จะเปิดใช้งานได้จาก Amazon S3 และ AWS Nitro System รายละเอียดเพิ่มเติมตามลิ้งค์ทางด้านล่าง (ภาษาญี่ปุ่น)

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

การตั้งค่า network ในครั้งนี้จะตั้งค่าให้อยู่ใน VPC

Fine-grained access control สามารถตั้งค่า master user โดยใช้ ARN ของ IAM ที่มีอยู่แล้วหรือสร้างใหม่ได้ ซึ่งครั้งนี้เราจะตั้งค่าด้วย IAM Role ที่มีอยู่แล้วครับ

สามารถตั้งค่าการตรวจสอบสิทธิ์ด้วย SAML และ Amazon Cognito สำหรับ OpenSearch Dashboards และ Kibana ได้ นอกจากนี้ด้วยการตั้งค่า access policy ของ domain level จะทำให้สามารถควบคุมการเข้าถึงตาม IAM สำหรับคำขอที่ได้รับอนุญาตจาก security group เพื่อไปยัง cluster ได้อีกด้วย แต่ในครั้งนี้จะไม่ตั้งค่าใด ๆ ในส่วนนี้

และสุดท้ายคือEncryption เมื่อเปิดใช้งาน Fine-grained access control แล้ว การ Encryption (เข้ารหัส)ก็จะถูกเปิดใช้งานโดยอัตโนมัติ ซึ่งสามารถเลือกใช้งานได้ระหว่าง AWS owned keys และ KMS managed key โดยตามค่าเริ่มต้นจะใช้เป็น AWS owned keys ครับ

หลังจากการตั้งค่าเสร็จสิ้นแล้ว คลิกที่ Create เพื่อเริ่มต้นการทำงานของ cluster สักพักสถานะจะเปลี่ยนเป็น Active

สิ่งที่พบจาก UI

อย่างแรกเลยคือ ในกรณีที่มีการตั้งค่า Cluster ใน VPC จะไม่สามารถเข้าถึง endpoint ของ OpenSearch Dashboards ในหน้า General information ได้ โดยต้องมีการพลิกแพลงเพิ่มเติม เช่น การตั้งค่า proxy server เป็นต้น ซึ่งการตั้งค่าเซิร์ฟเวอร์เป็นอะไรที่ค่อนข้างยุ่งยากมาก และอยากให้มีการอัปเดตเพิ่มเติมในอนาคตครับ

Cluster health สามารถตรวจสอบ metric ต่างๆ และ ยังสามารถดูประสิทธิภาพที่เกี่ยวข้องกับการค้นหาเพิ่มเติมได้

Instance health สามารถตรวจสอบการใช้งาน CPU ต่างๆ และ memory pressure ในแต่ละ nodes ได้

นอกจากนี้ก็จะมีหัวข้อการตั้งค่าอื่นๆครับ โดย UI นี้หลักๆก็จะใช้ในการตรวจสอบ metric หรือ การเปลี่ยนแปลงการตั้งค่าต่างๆ
ซึ่งโดยพื้นฐานแล้วจะใช้งานค่อนข้างง่ายด้วยการเข้าถึง endpoint จาก client เท่านั้น

ความเห็นผู้เขียน

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

บทความอ้างอิง

บทความต้นฉบับ