การทำคลัสเตอร์อัตโนมัติให้กับ MongoDB

Ruk-Com Cloud จัดเตรียมคลัสเตอร์อัตโนมัติสำหรับ MongoDB stack ซึ่งช่วยให้คุณสร้าง replica set ที่เชื่อถือได้สำหรับฐานข้อมูลของคุณด้วยการคลิกเพียงครั้งเดียว วิธีแก้ที่นำไปใช้มีประโยชน์มากมาย:

  • ความซ้ำซ้อนและความพร้อมใช้งานของข้อมูลสูง – ทำสำเนาข้อมูลหลาย ๆ ชุดบนเซิร์ฟเวอร์ฐานข้อมูลที่แตกต่างกันช่วยให้สามารถรับความผิดพลาดในระดับสูงต่อการสูญหายของข้อมูลได้
  • ความสามารถในการปรับสเกลและการค้นหาอัตโนมัติ – โหนดใหม่ที่เพิ่มเข้ามาระหว่างการ horizontal scaling จะเชื่อมต่อกับคลัสเตอร์โดยจะใช้การปรับเปลี่ยนที่จำเป็นทั้งหมดโดยอัตโนมัติ
  • การล้มเหลวอัตโนมัติ – โหนดฐานข้อมูลที่ไม่สามารถใช้งานได้ชั่วคราวหรือมีเวลาแฝงสูงจะถูกแยกออกจากคลัสเตอร์โดยอัตโนมัติและจะเพิ่มเข้าไปใหม่เมื่อการเชื่อมต่อกลับคืนมา
MongoDB replication

ประโยชน์ทั้งหมดนี้สามารถทำได้เพียงไม่กี่คลิกภายใน topology wizard สำรวจขั้นตอนด้านล่างเพื่อเปิดใช้งานการทำคลัสเตอร์อัตโนมัติสำหรับฐานข้อมูล MongoDB ของคุณใน Ruk-Com PaaS

ข้อมูลจำเพาะของ MongoDB Auto-Clustering

Link # replica set คือกลุ่มของ MongoDB instance อย่างน้อย 3 instance ที่เก็บรักษาข้อมูลเดียวกัน มีโหนดหนึ่งของชุดถือเป็นโหนดหลักและรับผิดชอบการดำเนินการเขียนทั้งหมด บันทึกการเปลี่ยนแปลงทั้งหมดใน oplog เพื่อให้โหนดที่เหลือ (ลำดับที่สอง) สามารถสะท้อนถึงข้อมูลหลักได้อย่างถูกต้อง หากตัวหลักไม่พร้อมใช้งานรายการใหม่จะถูกเลือกโดยอัตโนมัติจากตำแหน่งรองที่ใช้งานอยู่หลังจากมีการล่าช้าไปสักครู่หนึ่ง

ค่าเริ่มต้นสำหรับการ settings ของคลัสเตอร์ที่กำหนดค่าโดยอัตโนมัติมีดังต่อไปนี้:

  • “chainingAllowed” : true – อนุญาตให้สมาชิกรองสามารถจำลองแบบจากลำดับรองอื่น ๆ ได้
  • “heartbeatIntervalMillis” : 2000 – ความถี่ในหน่วยมิลลิวินาทีสำหรับการเต้นของหัวใจ
  • “heartbeatTimeoutSecs” : 10 – การหมดเวลาเป็นหน่วยวินาทีที่สมาชิกตั้งค่าแบบจำลองรอให้การเต้นของหัวใจสำเร็จก่อนที่จะทำเครื่องหมายโหนดที่เหมาะสมว่าไม่สามารถเข้าถึงได้
  • “electionTimeoutMillis” : 10000 – การหมดเวลาเป็นมิลลิวินาทีสำหรับการตรวจสอบว่าสมาชิกหลักไม่สามารถเข้าถึงได้หรือไม่
  • “catchUpTimeoutMillis” : -1 – การหมดเวลาเป็นมิลลิวินาที (-1 สำหรับเวลาที่ไม่มีที่สิ้นสุด) สำหรับตัวหลักที่เพิ่งได้รับการคัดเลือกเพื่อติดต่อกับสมาชิกที่มีการเขียนล่าสุด
  • “catchUpTakeoverDelayMillis” : 30000 – การหมดเวลาเป็นมิลลิวินาทีของโหนดรองซึ่งอยู่ข้างหน้าโหนดหลักในปัจจุบันให้การติดตามก่อนที่จะเริ่มการคัดเลือกเพื่อเป็นโหนดหลักใหม่

เคล็ดลับ :
หากจำเป็นคุณสามารถกำหนดค่าการตั้งค่าเหล่านี้ใหม่ได้ด้วยตนเองหลังจากการติดตั้งคลัสเตอร์โดยใช้คำสั่ง rs.reconfig() ตรวจสอบส่วนด้านล่างเพื่อเรียนรู้วิธีเชื่อมต่อกับคลัสเตอร์ MongoDB ของคุณผ่าน SSH และรันคำสั่งที่จำเป็น

จุดสำคัญอีกประการหนึ่งคือความปลอดภัยและการป้องกันจากการเข้าถึงที่ไม่ต้องการ ด้วยเหตุนี้ authentication เป็นกระบวนการประกันความปลอดภัยที่สำคัญ ซึ่งบังคับให้สมาชิกของแต่ละชุดจำลองระบุตัวตนระหว่างการสื่อสารภายในโดยใช้คีย์ไฟล์การพิสูจน์ตัวตนพิเศษ แพลตฟอร์มจะใช้การกำหนดค่าที่จำเป็นโดยอัตโนมัติ (ใน /etc/mongod.conf) และสร้างคีย์ (อยู่ที่ /home/jelastic/mongodb.key) ในระหว่างการกำหนดค่าคลัสเตอร์ นอกจากนี้เพื่อให้แน่ใจว่ามีความสอดคล้องกัน ไฟล์จะถูกเพิ่มลงในไฟล์ link # redeploy.conf เพื่อให้ไฟล์ยังคงอยู่ตลอดการดำเนินการตลอดอายุการใช้งานคอนเทนเนอร์

MongoDB ใช้เครื่องมือจัดเก็บข้อมูล WiredTiger ตามค่าเริ่มต้น ช่วยให้มั่นใจได้ถึงประสิทธิภาพที่สูง (เนื่องจากอัลกอริทึม non-locking) และการใช้ต้นทุน / ทรัพยากรที่มีประสิทธิภาพ ตัวเลือกเริ่มต้นสำหรับ WiredTiger ได้รับการปรับให้เหมาะกับการรัน mongod instance เดียวต่อเซิร์ฟเวอร์ซึ่งเหมาะสำหรับคอนเทนเนอร์ Ruk-Com PaaS ,MongoDB ใช้ทั้งแคชภายใน WiredTiger และแคชของ filesystem ขนาดแคชภายในคือ 50% ของ RAM ทั้งหมดลบ 1 GB (แต่ไม่น้อยกว่า 256 MB) ในขณะที่แคชของ filesystem ทำงานในหน่วยความจำว่างที่ไม่ได้ใช้โดย WiredTiger หรือกระบวนการอื่น ๆ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ WiredTiger configs โปรดดูเอกสาร MongoDB อย่างเป็นทางการ

อีกหนึ่งคุณลักษณะที่เป็นเอกลักษณ์ของ MongoDB auto-cluster คือการตรวจหาโหนดใหม่ที่เพิ่มเข้ามาโดยอัตโนมัติผ่าน horizontal scaling และการรวมไว้ในชุดการจำลองโดยไม่ต้องดำเนินการใด ๆ ด้วย

ตนเอง ในทำนองเดียวกันโหนดจะถูกแยกออกจากคลัสเตอร์ในขณะที่ขยายสเกล

เปิดใช้งานการทำคลัสเตอร์อัตโนมัติสำหรับฐานข้อมูล

กระบวนการทั้งหมดของการสร้างคลัสเตอร์อัตโนมัติของ MongoDB สามารถทำได้ในไม่กี่คลิก

1. เปิด topology wizard ด้วยปุ่ม New Environment  ที่มุมบนซ้ายของแดชบอร์ดเลือกฐานข้อมูล MongoDB และเปิดใช้งาน Auto-Clustering ผ่านตัวสวิตซ์สลับที่เหมาะสม

เคล็ดลับ :

ข้อมูลโทโพโลยีบางส่วนของคลัสเตอร์ MongoDB มีดังต่อไปนี้:

  • รองรับการทำคลัสเตอร์อัตโนมัติตั้งแต่เวอร์ชัน 4.x.x
  • แนะนำให้ใช้ RAM 4 GiB (32 cloudlets) เพื่อการทำงานที่เหมาะสมของโหนดชุดจำลอง ตามค่าเริ่มต้นจำนวน cloudlets เหล่านี้จะถูกเพิ่มเป็นลิมิตการปรับสเกลแบบไดนามิก ดังนั้น you won’t be charged unless resources are actually consumed
  • จำนวนโหนดขั้นต่ำที่จำเป็นสำหรับ MongoDB auto-cluster คือ 3
  • กำหนดค่าพารามิเตอร์อื่น ๆ ตามความต้องการของคุณ (link # public IPs, link # region ฯลฯ ) แล้วคลิก Create

2. รอสักครู่เพื่อให้แพลตฟอร์มกำหนดค่าคลัสเตอร์ให้คุณ

3. หลังจากติดตั้งสำเร็จคุณจะได้รับอีเมลเกี่ยวกับการกำหนดค่าชุดข้อมูลจำลองที่ประสบความสำเร็จ:

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

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

นี่คือตัวอย่างสตริงการเชื่อมต่อในกรณีของแอปพลิเคชัน node.js:

client = new MongoClient(
	"mongodb://admin:[email protected]:27017,
	node254968-mongo-cluster.jelastic.com:27017,
	node254969-mongo-cluster.jelastic.com:27017/admin", 
	{
		useUnifiedTopology: true, 
		readPreference:'primaryPreferred',
		replicaSet:'rs0'
	}
);

โดยที่ :

  • useUnifiedTopology: true – บังคับให้ mongodb ใช้เครื่องมือค้นหาและตรวจสอบเซิร์ฟเวอร์ใหม่
  • readPreference:’primaryPreferred’ – ส่วนใหญ่ดำเนินการอ่านจากตัวหลัก แต่ถ้าไม่พร้อมใช้งานการดำเนินการจะอ่านจากสมาชิกรอง
  • replicaSet:’rs0′ – โดยค่าเริ่มต้นชื่อชุดการจำลองคือ rs0 ใน Ruk-Com คุณอาจสังเกตชื่อชุดการจำลองที่ cluster node ในไฟล์ mongod.conf หรือใน mongo shell prompt

การเชื่อมต่อแอปพลิเคชันที่ระบุไว้ข้างต้นถือเป็นการสร้างขึ้นภายในแพลตฟอร์ม one hosting แต่ถ้าจำเป็นคุณสามารถเชื่อมต่อแอปพลิเคชันภายนอกกับแบบจำลองที่ตั้งค่าผ่าน SLB ได้ ในกรณีนี้คุณต้องรักษาการเชื่อมต่อกับโหนดหลักสำหรับการอ่าน / เขียนผ่าน link # Ruk-Com Endpoints เท่านั้น

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

client = new MongoClient(
"mongodb://admin:[email protected]:11035/admin", 
{ useUnifiedTopology: true }
);

4. โดยค่าเริ่มต้น auto-cluster จะใช้พาเนลแอดมิน Mongo Express มีมาให้กับแพคเกจ

5. นอกจากนี้คุณสามารถเชื่อมต่อกับฐานข้อมูลของคุณผ่าน mongo shell ได้โดยตรงในเทอร์มินัลของคุณ (ตัวอย่างเช่นการใช้ตัวเลือก Web SSH แบบบิวท์อิน)

mongo -u {user} -p {password} {DB_name}

โดยที่ :

  • {user} – ชื่อผู้ใช้ของผู้ดูแลระบบ (ส่งไปยังอีเมลของคุณโดยค่าเริ่มต้นคือ admin)
  • {password} – รหัสผ่านสำหรับผู้ใช้ฐานข้อมูลที่เกี่ยวข้อง (สามารถพบได้ในอีเมลเดียวกัน)
  • {DB_name} – ชื่อฐานข้อมูลที่คุณต้องการเข้าถึง (เราจะใช้ admin เป็นค่าเริ่มต้น)

6. คุณสามารถตรวจสอบสถานะชุดการจำลองด้วยคำสั่งที่เหมาะสม:

rs.status()

อย่างที่คุณเห็นชุดการจำลอง (ที่มีชื่อ rs0 เป็นค่าเริ่มต้น) พร้อมใช้งานแล้ว สามารถดู replica set commands อื่น ๆ ได้ที่เอกสารของออฟฟิเชียล ตัวอย่างเช่นใช้การดำเนินการ rs.conf() หากคุณต้องการดูการกำหนดค่าชุดการจำลอง

รับชุด MongoDB replica ที่มีความพร้อมใช้งานสูงของคุณเองด้วย Ruk-Com Cloud