ศูนย์คู่มือ Ruk-Com PaaS

คู่มือการพัฒนา Deploy และดูแล Application บน Platform

RUK-COM PAAS / DATABASE

คู่มือการกำหนดค่า MongoDB Replication และ Automated Failover

คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี

ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง

วัตถุประสงค์

บทความนี้อธิบายการใช้งาน คู่มือการกำหนดค่า MongoDB Replication และ Automated Failover บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

  • เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
  • ตรวจสอบชื่อ Environment, Region และ Resource เป้าหมายก่อนบันทึกการเปลี่ยนแปลง
  • สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

Replica set เป็นคำที่ใช้สำหรับการกำหนด ClusterDatabase ของ Node หลาย Node ที่มีการจำลองแบบและการกำหนดค่า failover อัตโนมัติระหว่างกัน โครงสร้างดังกล่าวมักต้องการสมาชิกจำนวนคี่ไม่ว่าจะมี link # Arbiter node หรือไม่ก็ตามเพื่อให้แน่ใจว่ามีการคัดเลือก Database หลักที่ถูกต้อง Database ที่เลือกนี้จะประมวลผลการดำเนินการเขียนที่เข้ามาทั้งหมดโดยจัดเก็บข้อมูลเกี่ยวข้องภายใน oplog ซึ่งสามารถเข้าถึงและจำลองแบบโดยสมาชิก SECONDARY replica เพื่อนำไปใช้กับชุดข้อมูล ด้วยวิธีนี้ Server ทั้งหมดจะแสดงเนื้อหาเดียวกันและรับรองความพร้อมใช้งาน

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

ด้วยวิธีนี้ชุดข้อมูลจำลองจะสืบทอดประโยชน์ของ link #การจำลองแบบปกติ(เช่น ความล้มเหลวซ้ำซ้อน, ความพร้อมใช้งานของข้อมูลและความสามารถในการอ่านที่เพิ่มขึ้น, การกู้คืนระบบ ฯลฯ ) และกำจัดความซับซ้อนในการจัดการ Database จำนวนมากแยกกันไปพร้อม ๆ กัน

ดังนั้นนี่คือคำแนะนำง่าย ๆ ที่จะแสดงวิธีการสร้างและกำหนดค่าชุดจำลอง MongoDB ที่มีสมาชิกทั้ง 3 - ลักษณะดังกล่าวได้รับการพิจารณาเพื่อให้แน่ใจว่ามีความปลอดภัยของข้อมูลเพียงพอและเพียงพอที่จะจัดการกับปริมาณการดำเนินการ I/O ที่ต้องการสำหรับ Application ส่วนใหญ่ที่ใช้กันทั่วไป ด้านล่างนี้เราทราบถึงวิธีเตรียม Env ที่เหมาะสมตั้งค่าการตรวจสอบสิทธิ์ระหว่าง NodeDatabase กำหนดค่าการจำลองตัวเองและตรวจสอบให้แน่ใจว่าทุกอย่างได้รับการปรับแต่งอย่างเหมาะสม

การสร้าง Environment

ในการเริ่มต้นคุณจะต้องมี MongoDB node อย่างน้อย 3 Node เพื่อกำหนดค่าชุดการจำลอง ดังนั้นเรามาสร้าง Environment ดังกล่าวกัน ในตัวอย่างนี้เราจะจัดสรร MongoDB instance ของเวอร์ชัน 4.0.10 ภายใน Env เดียว

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

หากจำเป็นให้เปลี่ยน Env name และ link # Region ปลายทาง เมื่อการติดตั้งเสร็จสิ้นคุณต้องดูแลเกี่ยวกับความปลอดภัยของ nodes communication ด้วยความช่วยเหลือของไฟล์ authentication key

เพิ่มไฟล์ Authentication Key

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

1. เข้าสู่ระบบเข้าสู่ NodeDatabase ผ่านเว็บ SSH

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. ใช้ไฟล์คีย์ของคุณเองหรือสร้างไฟล์ด้วย link # openssl (ขนาดคีย์เป็นไบต์เช่น 741 และตั้งชื่อเช่น my.key) ด้วยคำสั่ง:

openssl rand -base64 741 > my.key

3. ตอนนี้คุณต้องแจกจ่าย key ไฟล์ที่เพิ่งสร้างใน MongoDB instance ทั้งหมด:

  • คลิกที่ปุ่ม Config ถัดจาก NodeDatabase ของคุณเพื่อเข้าถึง link # File Manager
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  • ในแท็บ กำหนดค่า uration ที่เปิดอยู่ให้ค้นหาไฟล์ my.key ใต้พาธ : /home/Ruk-Com PaaS/my.key แล้วเปิด จากนั้นคัดลอกเนื้อหาลงในคลิปบอร์ด
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  • ใน Directory keys (พาธแบบเต็มคือ / var/lib Ruk-Com PaaS/keys) สร้างไฟล์ที่ MongoDB instance จะใช้เพื่อพิสูจน์ตัวตนซึ่งกันและกัน เช่น mongo-set.key
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
  • วางเนื้อหาคลิปบอร์ดลงไปและเปลี่ยนแปลงโดยการ Save instance ทั้งหมด ดังนั้นไฟล์ mongo-set.key จึงถูกแจกจ่ายไปยัง MongoDB node ทั้งหมด
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

กำหนดค่า MongoDB Replication

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

1. สลับไปที่ไฟล์mongod.confภายในโฟลเดอร์ etc ภายในแท็บ กำหนดค่า uration เดียวกันสำหรับ MongoDB node เลื่อนลงไปที่ส่วน replication จากนั้นยกเลิกการคอมเมนต์และเพิ่มสตริงต่อไปนี้ที่ระบุชื่อเฉพาะสำหรับชุดการจำลองของคุณ (ตัวอย่าง db-replication):

replSetName: db-replication

2. เพิ่ม Parameter keyFile ในส่วน security ซึ่งควรระบุพาธไปยัง key ไฟล์ของคุณ (ซึ่งในกรณีของเราคือ /var/lib/Ruk-Com PaaS/keys/mongo-set.key)

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

3. Save การเปลี่ยนแปลงสำหรับ instance ทั้งหมดทันที โดยใช้ปุ่ม appropriate ในหน้าต่าง editor

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

4. RestartNodeDatabase ของคุณเพื่อใช้ ParameterConfiguration ใหม่

หมายเหตุ :
โปรดทราบว่าเมื่อคุณตั้งค่าการจำลองเสร็จแล้วกระบวนการคัดเลือก Database หลักใหม่จะถูกเรียกใช้ในระหว่างการ RestartNode ทั้งหมดหรือการ RestartNode หลัก (เช่น การหยุดทำงานของ Database หลัก)

5. จากนั้นเข้าถึง Server MongoDB ซึ่งคุณคิดว่าจะใช้เป็นตัวหลักผ่าน Protocol SSH

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

6. เข้าถึง Database ซึ่งควรจำลองแบบด้วยข้อมูลรับรองผู้ใช้งานของผู้ดูแลระบบที่เหมาะสม:

mongo -u {user} -p {password} {DB_name}
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

โดยที่ :

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

หมายเหตุ:
ในกรณีที่การคัดเลือกใหม่เกิดขึ้น ข้อมูลประจำตัวผู้ใช้ของผู้ดูแลระบบเพื่อใช้ในการเข้าสู่ระบบ Database หลักอันใหม่จะเหมือนกับที่คุณใช้กับ Database เก่า

7. เมื่อสร้างการเชื่อมต่อแล้วให้ดำเนินการบรรทัดถัดไปเพื่อกำหนด Parameter สำหรับ MongoDB node ในปัจจุบัน และเริ่มต้น replicat set:

config = {_id : "{replica_set}", members : [{_id : 0, host:"{current_db_ip}:27017"},]}
rs.initiate()

แน่นอนว่าค่าในวงเล็บควรแทนที่ด้วยข้อมูลที่เหมาะสม กล่าวคือ:

  • {replica_set}– ชื่อของกลุ่ม Database การจำลองของคุณ ระบุไว้ที่จุดเริ่มต้นของส่วนนี้ (การจำลองแบบ db ในกรณีของเรา)
  • {ปัจจุบัน_db_ip}– ที่อยู่ IP ของ ContainerDatabase ที่เลือก
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ตัวอย่าง :

config = {_id : "db-replication", members : [{_id : 0, host:"10.100.2.203:27017"},]}
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

และต่อมาก็ป้อนคำสั่ง

rs.initiate()
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

8. ดำเนินการคำสั่งต่อไปนี้สำหรับ Database ที่เหลือโดยที่ {db_ip} คือที่ IP address แต่ละ Database:

rs.add("{db_ip}:27017")
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ReplicaSet Arbiter

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

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

มาเพิ่ม Arbiter node เพิ่มเติมในชุดข้อมูลจำลองของเรากันดีกว่า:

1. ขยาย ClusterDatabase ในแนวนอนด้วย Node เดียว:

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. ใน Directoryกุญแจให้สร้าง key ไฟล์mongo-set.keyและวางเนื้อหาของไฟล์ที่คล้ายกันจาก NodeDatabase อื่น ๆ ที่กำหนดค่าไว้ก่อนหน้านี้

3. เปลี่ยนmongod.conf:

  • ยกเลิกการคอมเมนต์ในส่วนการจำลองแบบและเพิ่ม replSetName (เช่น replSetName: db-replication)
  • เพิ่ม Parameter keyFile ในส่วน security (ในกรณีของเราคือ /var/lib/Ruk-Com PaaS/keys/mongo-set.key)

4. RestartNode ที่เพิ่มใหม่เพื่อใช้ Parameter การกำหนดค่า

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

หมายเหตุ :
อย่า RestartNode ทั้งหมดเนื่องจากจะทำให้เกิดการคัดเลือกตัวหลักใหม่ เว้นแต่คุณจะระบุลำดับความสำคัญเพื่อบังคับให้ Node เฉพาะถูกเลือกเป็น NodeDatabase หลัก

5. ตอนนี้ Arbiter พร้อมที่จะเพิ่มลงในชุดการจำลองแล้ว ที่คำสั่ง PRIMARY node issue เพื่อเพิ่ม arbiter ใน Cluster:

rs.addArb("{db_ip}:27017")

โดยที่ {db_ip} คือที่ IP address ของ Node ที่เพิ่มใหม่

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

6. สุดท้ายให้ตรวจสอบว่า Node ที่เพิ่มเข้ามาใหม่กลายเป็น Arbiter หรือไม่ ในการเข้าสู่ระบบเข้าสู่ Node ใหม่ผ่าน SSH และเชื่อมต่อ MongoDB instance ด้วยข้อมูลประจำตัวจากอีเมลที่คุณได้รับเมื่อสร้าง Node

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

ดังที่คุณเห็น Node ที่เพิ่มใหม่ทำหน้าที่เป็น Arbiter ของการจำลองแบบ dbเพื่อให้มั่นใจว่าจะครบองค์ประกอบในทุกสถานการณ์

การทดสอบความพร้อมใช้งาน ClusterDatabase

Cluster MongoDB ขั้นสูงที่กำหนดค่าไว้ของเราช่วยให้คุณสามารถเชื่อมต่อและดำเนินการต่าง ๆ กับมันได้จากระยะไกล ตัวอย่างเช่นเรามาดูสถานะจริงโดยการเชื่อมต่อและดำเนินการคำสั่งตรวจสอบ 2-3 คำสั่งโดยใช้ PHP applet

เห็นได้ชัดว่าคุณต้องมี Application Server สำหรับสิ่งนั้น (เช่น Apache) ดังนั้นให้เพิ่ม Server ลงใน Env ของคุณ (ตามที่เราทำ) หรือเพียงแค่สร้างขึ้นภายใน Env ที่แยกต่างหาก

1. กดปุ่มเปลี่ยน TopologyEnvironmentและเพิ่ม Server

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. เปิดแท็บ Configuration Manager สำหรับ Server Apache ที่เพิ่มเข้ามาโดยเลือกไอคอน Config ที่อยู่ข้าง ๆ

3. ไปที่ Directory/var/www/webroot/ROOTเปิดไฟล์ index.php และวาง Code ต่อไปนี้แทนส่วนเริ่มต้น:

<?php
    try{
	$mongodbConnectionURI= "mongodb://{db_username}:{db_password}@node{NodeID}-{environment_domain}:27017,node{NodeID}-{environment_domain}:27017,node{NodeID}-{environment_domain}:27017,node{NodeID}-{environment_domain}:27017/?replicaSet={replica_set_name}&readPreference=primary";
    $manager = new MongoDB\Driver\Manager($mongodbConnectionURI);
    $command = new MongoDB\Driver\Command(['ping' => 1]);
    $cursor = $manager->executeCommand('db', $command);
    $response = $cursor->toArray()[0];
    var_dump($response);
    echo'<br><br>';
    var_dump($manager->getServers());
    } catch (Exception $e){
        echo $e->getMessage();
        }
?>

โดยที่ควรแทนที่ค่าต่อไปนี้ด้วยข้อมูลที่เกี่ยวข้อง:

  • {replica_set_name} – ชื่อชุดการจำลองของคุณ
  • {db_username} – ผู้ดูแลระบบของ Database หลักที่เลือก (ค่าเริ่มต้นคือ admin)
  • {db_password} – รหัสผ่านของผู้ใช้ที่ระบุข้างต้น
  • {NodeID} – หมายเลขประจำตัวของ Node ที่เกี่ยวข้องซึ่งสามารถพบได้ที่ Dashboard Ruk-Com
  • {environment_domain} – Domain Env ที่สามารถพบได้ที่ Dashboard Ruk-Com
ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

หมายเหตุ :
คุณต้องระบุ ID ของทุก Node ที่รวมอยู่ในชุดการจำลองของคุณภายในส่วน mongodbConnectionURI ที่เหมาะสม

ด้วยเหตุนี้คุณจะได้รับชุดสตริงที่คล้ายกัน:

อย่าลืม Save ไฟล์นี้

4. Apache ต้องการโมดูลพิเศษเพื่อให้สามารถโต้ตอบกับ Server MongoDBได้ ดังนั้นคุณต้องเพิ่มเข้าไปภายในการกำหนดค่า

จากนั้นไปที่โฟลเดอร์ etc และเปิดไฟล์php.iniค้นหาส่วน[mongodb]และลบเซมิโคลอนก่อนบรรทัดส่วนขยาย=mongodb.soเพื่อเปิดใช้งานส่วนขยายนี้

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

5. ในการใช้การกำหนดค่าใหม่ให้คลิกบันทึกภายในหน้าต่าง editor และกดปุ่มRestartNodeถัดจาก Application Server ของคุณ

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

6. สุดท้ายคลิกไอคอน Open in Browser ที่อยู่ใกล้ ๆ

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

บรรทัดแรกแสดงผลการตรวจสอบความพร้อมใช้งานของชุดข้อมูลจำลองซึ่งดำเนินการโดยคำสั่ง "ping" (บรรทัดที่ 6 ของดัชนี.php):

object(stdClass)#11 (3) { ["ok"]=> float(1) }

ซึ่งหมายความว่าชุดการจำลองได้รับการทดสอบแล้ว

ในบล็อกถัดไปของเอาต์พุตข้อมูลทั้งหมดเกี่ยวกับ Host ชุดการจำลองจะปรากฏขึ้น ซึ่งได้มาจากฟังก์ชันรับ Server(บรรทัดที่ 11 ของดัชนี.php) ตัวอย่างเช่นคุณสามารถตรวจสอบค่าบางอย่างที่กำหนดระหว่างขั้นตอนการสร้างชุดข้อมูลจำลองนี้:

  • Host– IP address ของ Database เฉพาะ
  • Port– Port สมาชิกจำลองปัจจุบัน
  • ["is_primary"] และ ["is_secondary"] - Parameter ที่ระบุสถานะของ Server (ค่า correspondent สำหรับ Server MongoDB อันหลักที่เลือกเป็นจริง/เท็จและสำหรับ Server MongoDB อีกสอง Server – เท็จ/จริงตามลำดับ)

นอกจากนี้คุณสามารถเริ่มและหยุด NodeDatabase ของคุณและ Refresh หน้านี้เพื่อติดตามการเปลี่ยนแปลง ด้วยวิธีนี้คุณสามารถตรวจสอบให้แน่ใจว่า Cluster MongoDB ของคุณพร้อมใช้งานและทำงานได้ตามที่ตั้งใจไว้ ดังนั้นจึงสามารถนำไปใช้กับกรณีจริงได้ในขณะนี้

รับชุดแบบจำลอง MongoDBที่พร้อมใช้งานสูงของคุณเองด้วยรักคอม Cloudเพียงสมัครทดลองใช้ฟรีที่หนึ่งในผู้ให้บริการแล้วทำตามคำแนะนำ