การใช้งาน Nextcloud ที่มีความพร้อมใช้งานสูงด้วย Galera นั้นเป็นระบบที่มีการประสานงานกัน ไม่ใช่แค่เซิร์ฟเวอร์ฐานข้อมูลสามเครื่อง คุณยังต้องการโหนดแอปพลิเคชัน Nextcloud ที่ซ้ำซ้อน เลเยอร์ข้อมูลไฟล์ที่ใช้ร่วมกันและทนทาน การแคชและการล็อกไฟล์แบบกระจาย การปรับสมดุลโหลด การตรวจสอบ และการสำรองข้อมูลที่ผ่านการทดสอบแล้ว Galera สามารถทำให้บริการฐานข้อมูลยังคงใช้งานได้หลังจากโหนดฐานข้อมูลล้มเหลวเมื่อยังคงมีโควรัมอยู่ แต่ไม่สามารถทำให้ส่วนประกอบอื่นๆ เหล่านั้นมีความพร้อมใช้งานสูงได้
คู่มือนี้ใช้การออกแบบ Linux ที่ไม่ขึ้นกับผู้จำหน่ายรายใดรายหนึ่ง โดยใช้ MariaDB Galera และพร็อกซีแบบย้อนกลับหรือตัวกระจายโหลด ชื่อแพ็กเกจ ชื่อบริการ เส้นทางผู้ให้บริการ Galera คำสั่งบูตสแตรป และการรวมการตรวจสอบสถานะพร็อกซีจะแตกต่างกันไปตามการแจกจ่ายและรุ่นของ MariaDB โปรดตรวจสอบกับเอกสารรุ่นที่แน่นอนก่อนการใช้งาน คู่มือการดูแลระบบเวอร์ชันเสถียรปัจจุบันของ Nextcloud ระบุว่า PostgreSQL และ MariaDB เป็นเอนจินฐานข้อมูลที่แนะนำ และเตือนว่าเวอร์ชันที่รองรับอาจแตกต่างกันไป โปรดตรวจสอบข้อกำหนดของระบบ Nextcloudสำหรับรุ่นที่คุณวางแผนจะใช้งาน บทความนี้ได้รับการตรวจสอบกับคู่มือ Nextcloud 35 เวอร์ชันเสถียรเมื่อวันที่ 6 ตุลาคม 2026
ภาพรวมเชิงแนวคิดของระบบความพร้อมใช้งานสูงของ Nextcloud ทั้งหมด แต่ละส่วนประกอบที่มีสถานะจำเป็นต้องมีแผนความพร้อมใช้งานของตนเอง
เลือกรูปแบบการให้บริการที่เหมาะสมก่อน
Galera คือการจำลองแบบซิงโครนัสหลายโหนดหลักสำหรับเซิร์ฟเวอร์ที่เข้ากันได้กับ MySQL ธุรกรรมจะได้รับการรับรองทั่วทั้งคลัสเตอร์ ซึ่งช่วยให้สมาชิกมีความสอดคล้องกัน แต่จะเพิ่มภาระในการประสานงาน และธุรกรรมที่ขัดแย้งกันอาจถูกปฏิเสธ การเพิ่มโหนดฐานข้อมูลไม่ได้ทำให้ประสิทธิภาพของ Nextcloud เพิ่มขึ้นโดยอัตโนมัติ คำแนะนำสำหรับนักพัฒนาของ Nextcloud ระบุว่าคลัสเตอร์มีต้นทุนด้านประสิทธิภาพ และฐานข้อมูลและพื้นที่จัดเก็บข้อมูลยังคงเป็นทรัพยากรที่ใช้ร่วมกันที่สำคัญ
| ทางเลือกในการออกแบบ | พอดีเป๊ะ | ข้อแลกเปลี่ยนหลัก |
|---|
| เซิร์ฟเวอร์ MariaDB หรือ PostgreSQL หนึ่งเครื่อง | การติดตั้งขนาดเล็กที่ต้องการการดำเนินการที่ง่ายที่สุด | การบำรุงรักษาหรือความล้มเหลวของฐานข้อมูลอาจทำให้การให้บริการหยุดชะงัก |
| MariaDB กับ Galera | ทีมที่ต้องการความซ้ำซ้อนของโหนดฐานข้อมูล และสามารถดำเนินการตามขั้นตอน Quorum, เครือข่าย, พร็อกซี และการกู้คืนได้ | มีองค์ประกอบที่เคลื่อนไหวมากขึ้น การประสานงานในการเขียน การจัดการความขัดแย้ง และความซับซ้อนในการกู้คืน |
| โหนดฐานข้อมูลสองโหนด บวกกับตัวตัดสินหนึ่งตัว | เว็บไซต์ที่มีโฮสต์ฐานข้อมูลสองตัว แต่มีโดเมนสำรองสำหรับกรณีเกิดข้อผิดพลาดเพื่อใช้ลงคะแนนเสียงให้ครบองค์ประชุม | ผู้ตัดสินช่วยให้ครบองค์ประชุม ไม่ได้จัดเก็บข้อมูลหรือแทนที่สำเนาฐานข้อมูลที่สาม |
| Galera ที่อยู่เบื้องหลังพร็อกซีที่รองรับฐานข้อมูล | การใช้งานที่ต้องการจุดเชื่อมต่อที่เสถียรและการกำหนดเส้นทางที่ควบคุมได้ | การตรวจสอบสถานะพร็อกซีและกฎการกำหนดเส้นทางกลายเป็นบริการอีกอย่างหนึ่งที่ต้องดำเนินการ |
สำหรับการติดตั้งใหม่ คลัสเตอร์ Galera ที่มีโหนดข้อมูลสามโหนดกระจายอยู่บนโฮสต์อิสระเป็นจุดเริ่มต้นที่นิยมใช้กัน หากทีมปฏิบัติการสามารถให้การสนับสนุนได้ เกณฑ์การทำงานของ Galera ต้องการเสียงข้างมาก: คลัสเตอร์สองโหนดไม่สามารถสลับการทำงานได้อย่างปลอดภัยโดยอัตโนมัติหลังจากที่สมาชิกตัวใดตัวหนึ่งหายไป คลัสเตอร์สามโหนดสามารถรองรับสมาชิกที่ไม่พร้อมใช้งานได้หนึ่งตัว ในขณะที่อีกสองตัวยังคงเชื่อมต่ออยู่ ควรวางโหนดไว้ในโดเมนความล้มเหลวที่ทำได้จริง แต่ไม่ควรใช้การจำลองแบบซิงโครนัสผ่านลิงก์ที่มีความหน่วงสูงโดยไม่ทำการทดสอบก่อน สำหรับสภาพแวดล้อมที่มีความซับซ้อนต่ำ ควรเลือกใช้ฐานข้อมูลเดียวที่ได้รับการสนับสนุน พร้อมกับแผนสำรองและกู้คืนที่ผ่านการทดสอบมาเป็นอย่างดี
ก่อนการติดตั้ง: ตัดสินใจว่า “ความพร้อมใช้งานสูง” หมายถึงอะไร
จดบันทึกความล้มเหลวที่คุณตั้งใจจะให้เกิดขึ้น: กระบวนการเว็บ, โฮสต์เว็บ, โฮสต์ฐานข้อมูล, โหลดบาลานเซอร์, จุดเชื่อมต่อจัดเก็บข้อมูล, เส้นทางเครือข่าย หรือเว็บไซต์ทั้งหมด กำหนดเป้าหมายการกู้คืนสำหรับแต่ละรายการ การออกแบบที่มีโหนดฐานข้อมูลสามโหนดและโหลดบาลานเซอร์หนึ่งตัวนั้นไม่ถือว่าเป็นการสำรองข้อมูลอย่างสมบูรณ์ เช่นเดียวกับคลัสเตอร์แอปพลิเคชันที่มีไฟล์ผู้ใช้อยู่บนดิสก์ภายในเครื่องของเว็บเซิร์ฟเวอร์เพียงเครื่องเดียว
ใช้ Nextcloud เวอร์ชันเดียวกัน, PHP runtime, app set และ configuration ที่สอดคล้องกันในทุกโหนดแอปพลิเคชัน เลือกเวอร์ชัน MariaDB และ Galera ที่เข้ากันได้และได้รับการสนับสนุนโดย Nextcloud เวอร์ชันที่เลือก ข้อกำหนดของฐานข้อมูล Nextcloud ประกอบด้วย InnoDB, การแยกธุรกรรมแบบ READ COMMITTED และการปิดใช้งานการบันทึกแบบไบนารีหรือรูปแบบ ROW อย่าคัดลอกค่าการปรับแต่งจากเวอร์ชันอื่นโดยไม่ตรวจสอบข้อกำหนดปัจจุบันก่อน
วางแผนกำหนดบทบาทแยกต่างหากสำหรับเว็บ ฐานข้อมูล แคช และพื้นที่จัดเก็บข้อมูลก่อนติดตั้งแพ็กเกจ แผนภาพนี้ไม่ใช่หน้าจอแสดงรายการแบบเรียลไทม์
ตั้งค่าคลัสเตอร์เป็น 12 ขั้นตอน
1. จองชื่อโฮสต์ ที่อยู่ และจุดเชื่อมต่อบริการ
สร้างชื่อ DNS ส่วนตัวหรือที่อยู่แบบเสถียรสำหรับสมาชิกฐานข้อมูลแต่ละตัว โหนดเว็บแต่ละตัว บริการแคช พื้นที่จัดเก็บข้อมูลร่วม และปลายทางเว็บสาธารณะ สงวนปลายทางฐานข้อมูลแบบเสถียรแยกต่างหากสำหรับโหนด PHP ของ Nextcloud แยกแอปพลิเคชัน การจำลองข้อมูล และการรับส่งข้อมูลสาธารณะไว้ในเส้นทางเครือข่ายที่แยกจากกันอย่างเหมาะสม หากโครงสร้างพื้นฐานของคุณเอื้ออำนวย ชื่อโหนดต้องไม่ซ้ำกัน และสมาชิกคลัสเตอร์ทุกตัวต้องสามารถระบุ Galera peer ได้อย่างสม่ำเสมอ
2. ติดตั้งฐานข้อมูลและเวอร์ชัน Galera ที่เข้ากันได้
ติดตั้ง MariaDB Server และ Galera provider โดยใช้ repository ของผู้จำหน่ายที่แนะนำสำหรับระบบปฏิบัติการของคุณ ใช้เวอร์ชันหลักของเซิร์ฟเวอร์และ provider เดียวกันในทุกเครื่อง อย่ารวมแพ็คเกจจากชุมชนที่ไม่รู้จักเข้ากับไลบรารี provider ที่ดาวน์โหลดแยกต่างหาก ก่อนดำเนินการต่อ โปรดตรวจสอบเส้นทางการอัปเกรดที่รองรับ วิธีการ SST หน่วยบริการ และไดเร็กทอรีรวมการกำหนดค่าสำหรับชุดแพ็คเกจนั้นๆ
3. ปฏิบัติตามข้อกำหนดฐานข้อมูลของ Nextcloud
ตั้งค่าเซิร์ฟเวอร์ให้ใช้ InnoDB และระดับการแยกธุรกรรมแบบ READ COMMITTED ใช้การบันทึกแบบไบนารี ROW หากเปิดใช้งานการบันทึกแบบไบนารี ตรวจสอบค่าที่มีผลหลังจากรีสตาร์ทแทนที่จะสันนิษฐานว่ามีการรวมไฟล์การกำหนดค่าไว้แล้ว เอกสารของ Nextcloud ได้ระบุข้อกำหนดเหล่านี้ไว้ในคู่มือการกำหนดค่าฐานข้อมูลและข้อกำหนดของระบบ
กำหนดค่าการตั้งค่า Galera แต่ละรายการให้เป็นไปตามแต่ละโหนด และตรวจสอบชื่อตัวเลือกเฉพาะแพ็กเกจก่อนที่จะรีสตาร์ท MariaDB
4. ตั้งค่า Galera ให้เหมือนกันในอุปกรณ์ทั้งสามเครื่อง
ใช้เอกสารอ้างอิงการกำหนดค่าของผู้จำหน่ายเพื่อกำหนดชื่อคลัสเตอร์ รายชื่อที่อยู่ของโหนดเพื่อน ชื่อและที่อยู่เฉพาะของแต่ละโหนด ไลบรารีผู้ให้บริการ และวิธีการถ่ายโอนสถานะสแนปช็อต (SST) SST คือกระบวนการที่จัดเตรียมสถานะฐานข้อมูลให้กับโหนดที่เข้าร่วม การกำหนดค่าคลัสเตอร์ MariaDB ทั่วไปจะมีตัวเลือกในกลุ่มนี้:
[mariadb]
wsrep_on=ON
wsrep_cluster_name=nextcloud-cluster
wsrep_cluster_address=gcomm://db1.example.net,db2.example.net,db3.example.net
wsrep_node_name=db1
wsrep_node_address=db1.example.net
wsrep_sst_method=mariabackup
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
transaction_isolation=READ-COMMITTED
เปลี่ยนค่าเฉพาะโหนดบนเซิร์ฟเวอร์แต่ละเครื่อง เส้นทางของผู้ให้บริการและวิธีการ SST ที่รองรับจะขึ้นอยู่กับแพ็กเกจที่ติดตั้ง ใช้เมธอดและข้อมูลรับรองที่ระบุไว้สำหรับเวอร์ชันของคุณ ปกป้องข้อมูลรับรอง SST ใบรับรอง และรหัสผ่านฐานข้อมูลเป็นความลับ ห้ามใช้ที่อยู่คลัสเตอร์ว่างเปล่าเป็นการตั้งค่าถาวร: เอกสารของ MariaDB ระบุว่าอาจทำให้เซิร์ฟเวอร์เริ่มต้นคลัสเตอร์ใหม่แทนที่จะเข้าร่วมคลัสเตอร์ที่มีอยู่
5. จำกัดการเข้าถึงเครือข่ายให้เฉพาะผู้ใช้งานที่จำเป็นเท่านั้น
อนุญาตให้เว็บเซิร์ฟเวอร์เข้าถึงได้เฉพาะปลายทางบริการฐานข้อมูลเท่านั้น และอนุญาตให้สมาชิกฐานข้อมูลติดต่อกันได้ผ่านพอร์ตการจำลองแบบและการถ่ายโอนสถานะของ Galera ที่ผู้ให้บริการและวิธีการ SST ที่คุณเลือกใช้กำหนดไว้ การใช้งาน Galera ทั่วไปใช้ TCP และขึ้นอยู่กับการตั้งค่าของผู้ให้บริการ อาจใช้ UDP สำหรับการสื่อสารแบบกลุ่ม ค่าเริ่มต้นที่เกี่ยวข้องมักจะรวมถึง 4567 สำหรับการจำลองแบบ 4568 สำหรับการถ่ายโอนสถานะแบบเพิ่มขึ้น และ 4444 สำหรับการถ่ายโอนสแนปช็อตสถานะ พิจารณาสิ่งเหล่านี้เป็นรายการตรวจสอบเพื่อยืนยันกับเวอร์ชันและการกำหนดค่าของคุณ ไม่ใช่เหตุผลในการเปิดทุกพอร์ตอย่างกว้างขวาง รักษาพอร์ต SQL ให้เป็นส่วนตัวและปฏิเสธการเข้าถึงสาธารณะ
จำกัดการเข้าถึงจากทิศตะวันออกไปทิศตะวันตกให้เฉพาะแอปพลิเคชันที่จำเป็นและทราฟฟิกของ Galera เท่านั้น ห้ามเปิดเผยพอร์ตฐานข้อมูลหรือพอร์ตการจำลองข้อมูลต่อสาธารณะ
6. สร้างโหนดแรกขึ้นมา จากนั้นจึงเชื่อมต่อโหนดอื่นๆ เข้าด้วยกัน
เริ่มต้นคลัสเตอร์เพียงครั้งเดียวโดยใช้ขั้นตอนการบูตสแตรปที่ระบุไว้ในเอกสารแพ็กเกจ MariaDB ของระบบปฏิบัติการที่คุณใช้ หลังจากยืนยันแล้วว่าสมาชิกตัวแรกเป็นส่วนประกอบหลัก ให้เริ่มต้นสมาชิกที่เหลือตามปกติเพื่อให้เข้าร่วมและรับสถานะผ่าน IST หรือ SST IST จะถ่ายโอนชุดการเขียนที่ขาดหายไปเมื่อมีให้ใช้งาน ส่วน SST จะถ่ายโอนสถานะทั้งหมด อย่าบูตสแตรปแต่ละโฮสต์แยกกัน และอย่าถือว่าการรีสตาร์ทเป็นการบูตสแตรป
เรียกใช้คำสั่ง SQL นี้กับสมาชิกฐานข้อมูลทุกรายหลังจากที่เข้าร่วมแล้ว:
SHOW GLOBAL STATUS WHERE Variable_name IN
('wsrep_cluster_status','wsrep_cluster_size','wsrep_ready',
'wsrep_connected','wsrep_local_state_comment');
ตรวจสอบให้แน่ใจว่าแต่ละโหนดเชื่อมต่อและพร้อมใช้งาน เป็นส่วนหนึ่งของคอมโพเนนต์หลัก รายงานขนาดคลัสเตอร์ที่คาดไว้ และอยู่ในสถานะซิงค์แล้ว MariaDB อธิบายตัวบ่งชี้เหล่านี้ไว้ในคู่มือการตรวจสอบ Galera ของ ตน
โครงสร้างแบบสามผู้ลงคะแนนสามารถรักษาเสียงข้างมากไว้ได้แม้โหนดหนึ่งจะล้มเหลว โดยมีเงื่อนไขว่าสมาชิกที่เหลือยังสามารถสื่อสารกันได้
7. สร้างฐานข้อมูล Nextcloud เฉพาะและบัญชีผู้ใช้ที่มีสิทธิ์น้อยที่สุด
สร้างฐานข้อมูลโดยใช้ชุดอักขระและการเรียงลำดับตามที่ระบุไว้ในคู่มือการติดตั้ง Nextcloud ฉบับปัจจุบัน สร้างผู้ใช้ฐานข้อมูลเฉพาะที่จำกัดเฉพาะเครือข่ายแอปพลิเคชัน และให้สิทธิ์เฉพาะที่จำเป็นสำหรับการตั้งค่า Nextcloud และการทำงานปกติเท่านั้น ใช้ TLS สำหรับการเชื่อมต่อข้ามโฮสต์หรือส่วนเครือข่ายที่ไม่น่าเชื่อถือ และตรวจสอบความถูกต้องของใบรับรองในกรณีที่การใช้งานของคุณรองรับ อย่าใส่ข้อมูลรับรองของ root ไว้ในไฟล์config.php.
8. ติดตั้งโหนดแอปพลิเคชัน Nextcloud ที่เหมือนกันทุกประการ
ติดตั้งโค้ด Nextcloud เวอร์ชันเดียวกัน ส่วนขยาย PHP แอปที่เปิดใช้งาน และการกำหนดค่าเซิร์ฟเวอร์เดียวกันบนเว็บโหนดแต่ละโหนด กำหนดค่าปลายทางฐานข้อมูลที่ใช้ร่วมกันเพียงจุดเดียว ไม่ใช่โฮสต์ฐานข้อมูลที่แตกต่างกันในไฟล์ต่อโหนด โหนดทั้งหมดต้องใช้รหัสอินสแตนซ์ รหัสลับ ค่าเกลือ นโยบายโดเมนที่เชื่อถือได้ และการตั้งค่าอื่นๆ ทั่วทั้งอินสแตนซ์เดียวกัน จัดเก็บการกำหนดค่าในกระบวนการปรับใช้ที่ใช้ร่วมกันอย่างเป็นระบบ หรือแจกจ่ายอย่างปลอดภัยเพื่อให้การอัปเดตยังคงเหมือนเดิม
เลเยอร์ข้อมูลไฟล์ของผู้ใช้ก็จำเป็นต้องใช้ร่วมกันในโหนดแอปพลิเคชันด้วยเช่นกัน ควรใช้ระบบไฟล์ที่ใช้ร่วมกันหรือการออกแบบพื้นที่จัดเก็บวัตถุหลักที่รองรับ ซึ่งตรงกับเวอร์ชัน Nextcloud และข้อกำหนดในการใช้งานของคุณ การจัดเก็บข้อมูลผู้ใช้เฉพาะในเครื่องบนเว็บโฮสต์เดียวจะทำให้การทำงานแบบ Failover ล้มเหลว: คำขอที่ส่งไปยังโฮสต์อื่นจะไม่เห็นไฟล์เดียวกัน ควรแยกโค้ดแอปพลิเคชันและเส้นทางข้อมูลที่เขียนได้ออกจากกัน และตรวจสอบความถูกต้องของการล็อกไฟล์และความหมายของการจัดเก็บข้อมูลก่อนใช้งานจริง
โดยปกติ Nextcloud จะสร้างการตั้งค่าฐานข้อมูลระหว่างการติดตั้ง เมื่อปลายทางฐานข้อมูลและพื้นที่จัดเก็บข้อมูลที่ใช้ร่วมกันพร้อมแล้ว ให้ตรวจสอบว่าแต่ละโหนดแสดงค่าเดียวกัน ตัวอย่างส่วนหนึ่งของการกำหนดค่าจะมีลักษณะดังนี้ โปรดเก็บข้อมูลประจำตัวจริงไว้ในเวิร์กโฟลว์การจัดการความลับที่ได้รับการปกป้อง และอย่าคัดลอกส่วนนี้ไปวางทับการกำหนดค่าที่ใช้งานอยู่แล้ว:
'dbtype' => 'mysql',
'dbname' => 'nextcloud',
'dbhost' => 'db-vip.internal:3306',
'dbuser' => 'nextcloud',
'dbpassword' => 'REPLACE_WITH_SECRET',
'datadirectory' => '/srv/nextcloud-data',
'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
'host' => 'redis.internal',
'port' => 6379,
'password' => 'REPLACE_WITH_SECRET',
],
ปรับแต่งแบ็กเอนด์แคชและตัวเลือกไดเร็กทอรีข้อมูลให้ตรงกับตัวเลือกที่รองรับสำหรับเวอร์ชัน Nextcloud ของคุณ ติดตั้งและกำหนดค่าส่วนขยาย PHP ที่จำเป็นหากมี
โหนดแอปพลิเคชันทุกโหนดต้องใช้การตั้งค่าอินสแตนซ์ Nextcloud เดียวกัน รวมถึงรหัสลับที่ใช้ร่วมกันและการกำหนดค่าฐานข้อมูล
9. เพิ่มแคชแบบกระจายและบริการล็อกไฟล์
ใช้ APCu สำหรับการแคชแบบโลคอลต่อโฮสต์หากเหมาะสม และใช้บริการที่เข้ากันได้กับ Redis แบบใช้ร่วมกัน เช่น Redis หรือ Valkey สำหรับการแคชแบบกระจายและการล็อกไฟล์แบบทำธุรกรรม โหนดเว็บทั้งหมดต้องอ้างอิงถึงบริการแคชเดียวกันหรือคลัสเตอร์แคชที่รองรับ ไม่ใช่ localhost เอกสารของ Nextcloud อธิบายการกำหนดค่าคลัสเตอร์ Redis สำหรับการตั้งค่าแบบคลัสเตอร์ และระบุว่าการล็อกไฟล์แบบทำธุรกรรมนั้นโดยค่าเริ่มต้นจะขึ้นอยู่กับฐานข้อมูล รักษาความปลอดภัยของแคชด้วยข้อจำกัดเครือข่าย การตรวจสอบสิทธิ์ และ TLS ตามความเหมาะสม ความพร้อมใช้งานของแคชและพฤติกรรมการทำงานสำรองเมื่อเกิดข้อผิดพลาดจำเป็นต้องมีการออกแบบเฉพาะของตนเอง
การใช้งาน Nextcloud แบบคลัสเตอร์จำเป็นต้องให้เว็บโหนดใช้บริการแคชแบบกระจายและบริการล็อกไฟล์เดียวกัน
10. ติดตั้งเอนด์พอยต์ที่รองรับฐานข้อมูลไว้ด้านหน้า Galera
กำหนดให้ Nextcloud ชี้ไปยังปลายทางที่เสถียรเพียงจุดเดียวที่จัดหาโดยพร็อกซีฐานข้อมูลหรือเลเยอร์การกำหนดเส้นทางอื่นที่รองรับ พร็อกซีควรหยุดส่งการเชื่อมต่อใหม่ไปยังโหนดที่ไม่ได้อยู่ในส่วนประกอบหลัก ไม่ได้ซิงค์ หรือไม่พร้อมใช้งาน การตรวจสอบพอร์ต TCP พื้นฐานพิสูจน์ได้เพียงว่าซ็อกเก็ตยอมรับการเชื่อมต่อเท่านั้น ไม่ได้พิสูจน์ว่า Galera สามารถให้บริการแอปพลิเคชันได้อย่างปลอดภัย ตรวจสอบพฤติกรรมการตรวจสอบสถานะและโหมดความล้มเหลวของพร็อกซีที่เลือก หากคุณใช้ตัวกระจายโหลด TCP แบบง่าย ให้ใช้ร่วมกับการตรวจสอบความพร้อมใช้งานของ Galera ที่เชื่อถือได้และกฎการกำหนดเส้นทางที่รอบคอบ
อย่าเพิ่มการแบ่งการอ่าน/เขียนหรือการกำหนดเส้นทางแบบวนรอบโดยไม่ระมัดระวัง คู่มือสำหรับนักพัฒนาของ Nextcloud อธิบายถึงการรองรับการเชื่อมต่อหลัก/สำรอง และเตือนว่าการกำหนดเส้นทางการอ่านข้ามคลัสเตอร์อาจทำให้เกิดปัญหาความสอดคล้องหากข้อมูลยังไม่แพร่กระจาย หรือหากพร็อกซีไม่สามารถเก็บการอ่านธุรกรรมไว้ในโหนดที่ถูกต้องได้ เริ่มต้นด้วยเอนด์พอยต์ที่สามารถเขียนได้อย่างเสถียร วัดผล และค่อยเพิ่มการกำหนดเส้นทางแบบพิเศษเมื่อคุณเข้าใจถึงผลกระทบด้านความสอดคล้องและการรองรับแล้ว
จุดเชื่อมต่อฐานข้อมูลที่เสถียรจะซ่อนที่อยู่โหนดจาก Nextcloud; ตรรกะการตรวจสอบสถานะของพร็อกซีต้องคำนึงถึงความพร้อมของ Galera ด้วย
11. เพิ่มการตั้งค่าการกระจายโหลดเว็บแบบสำรองและพร็อกซีที่เชื่อถือได้
ควรวางเว็บโหนดอย่างน้อยสองโหนดไว้หลังโหลดบาลานเซอร์ และใช้กลไกความพร้อมใช้งานแยกต่างหากสำหรับโหลดบาลานเซอร์เอง เช่น บริการจัดการ คู่สำรอง หรือการออกแบบ IP เสมือนที่ผ่านการทดสอบแล้ว กำหนดค่าการยุติ TLS ขนาดคำขอและพฤติกรรมการหมดเวลา และข้อกำหนดเซสชันแบบคงที่ตามการใช้งานของคุณ ตรวจสอบเอกสารพร็อกซีแบบย้อนกลับของ Nextcloud และตั้งค่าtrusted_proxiesเป็นที่อยู่พร็อกซีจริง การเชื่อถือช่วง IP ของไคลเอ็นต์แบบสุ่มจะทำให้การจัดการ IP ไคลเอ็นต์อ่อนแอลง
ระบบกระจายโหลดเว็บแบบสำรองจะส่งต่อทราฟฟิกไปยังโหนดแอปพลิเคชันที่ผ่านการตรวจสอบสถานะที่เหมาะสมเท่านั้น
12. ทดลองใช้งานอย่างระมัดระวัง จากนั้นทดสอบความล้มเหลวและการกู้คืน
ทดสอบการอัปเกรดบนสำเนาทดสอบที่มีโครงสร้างเดียวกันก่อน ตั้งค่า Nextcloud ให้อยู่ในโหมดบำรุงรักษาเมื่อจำเป็นตามขั้นตอนการอัปเกรด ใช้เวอร์ชันแอปพลิเคชันเดียวกันกับทุกโหนด และนำโหนดกลับมาใช้งานอีกครั้งหลังจากตรวจสอบสถานะผ่านแล้วเท่านั้น สำหรับการบำรุงรักษาโฮสต์ตามปกติ ให้ระบายทรัพยากรออกจากโหนดเว็บทีละโหนดและตรวจสอบว่าความจุที่เหลืออยู่เพียงพอหรือไม่ ทำการอัปเกรดฐานข้อมูลโดยใช้กระบวนการอัปเกรดแบบค่อยเป็นค่อยไป (rolling-upgrade) ของ MariaDB/Galera ที่รองรับสำหรับเวอร์ชันที่เกี่ยวข้องอย่างถูกต้อง อย่าสร้างลำดับขั้นตอนขึ้นเองจากคู่มือทั่วไป
การบำรุงรักษาแบบหมุนเวียนจะดึงทรัพยากรจากโหนดเว็บหนึ่งไปยังอีกโหนดหนึ่ง ในขณะที่อีกโหนดหนึ่งยังคงให้บริการคำขอต่อไป ดังนั้นความจุต้องเพียงพอสำหรับกลุ่มโหนดที่ลดลง
สำรองข้อมูลฐานข้อมูลและเลเยอร์ข้อมูลไฟล์ของผู้ใช้โดยใช้ขั้นตอนที่ได้รับการบันทึกไว้และสอดคล้องกับแอปพลิเคชัน เก็บรักษาการกำหนดค่า ข้อมูลการเข้ารหัส และความลับต่างๆ ไว้ให้ผู้ดำเนินการกู้คืนที่ได้รับอนุญาตเท่านั้น สำเนาของ Galera ไม่ใช่การสำรองข้อมูล: การลบโดยไม่ตั้งใจและความเสียหายเชิงตรรกะสามารถจำลองไปยังสมาชิกทุกตัวได้ จัดเก็บการสำรองข้อมูลไว้นอกโดเมนความล้มเหลวของคลัสเตอร์และทำการทดสอบการกู้คืนเป็นประจำ Galera ได้บันทึกข้อควรพิจารณาเกี่ยวกับการถ่ายโอนสถานะและการสำรองข้อมูลไว้ในคู่มือการสำรองข้อมูลคลัสเตอร์ ตรวจสอบ ให้แน่ใจว่าขั้นตอนใดๆ ที่คุณนำไปใช้นั้นรองรับเวอร์ชัน MariaDB ของคุณ
การสำรองข้อมูลฐานข้อมูลและการสำรองข้อมูลไฟล์ของ Nextcloud ต้องได้รับการประสานงานและทดสอบการกู้คืนเป็นส่วนประกอบการกู้คืนที่แยกจากกัน
ตรวจสอบความถูกต้องของการเข้าสู่ระบบ การดำเนินการกับไฟล์ จำนวนโหนดขั้นต่ำในฐานข้อมูล การสลับโหนดเมื่อเกิดข้อผิดพลาด และการกู้คืนข้อมูลสำรอง ก่อนที่จะพิจารณาว่าคลัสเตอร์พร้อมใช้งานในระดับการผลิตแล้ว
เลือกรูปแบบการออกแบบให้เหมาะสมกับปริมาณงานและศักยภาพของทีม
Galera เป็นตัวเลือกที่เหมาะสมเมื่อคุณต้องการความซ้ำซ้อนของโหนดฐานข้อมูล มีโดเมนความล้มเหลวหลายแห่ง และสามารถตรวจสอบควอรัมและดำเนินการกู้คืนอย่างเป็นระบบได้ อย่างไรก็ตาม อาจไม่เหมาะสมหากเป้าหมายหลักคือการดำเนินงานที่ง่ายกว่า เมื่อภาระงานของฐานข้อมูลถูกครอบงำด้วยการเขียนข้อมูลที่ขัดแย้งกัน หรือเมื่อทีมไม่สามารถตอบสนองต่อการสูญเสียควอรัมได้อย่างปลอดภัย ในกรณีเหล่านั้น การใช้งานฐานข้อมูลที่รองรับได้ง่ายกว่าพร้อมการสำรองข้อมูลที่แข็งแกร่ง หรือบริการฐานข้อมูลแบบจัดการ อาจให้ความน่าเชื่อถือในการดำเนินงานที่ดีกว่า
สำหรับบริการแบบโฮสต์เองขนาดเล็ก ขั้นแรกให้ทำให้โหนดแอปพลิเคชันสามารถสลับเปลี่ยนกันได้ ย้ายไฟล์ของผู้ใช้ไปยังพื้นที่จัดเก็บข้อมูลร่วมที่ทนทาน กำหนดค่าการล็อก Redis แบบใช้ร่วมกัน และทดสอบการสำรองข้อมูล เพิ่ม Galera ก็ต่อเมื่อการวัดผลแสดงให้เห็นว่าความล้มเหลวของโหนดเดียวของฐานข้อมูลหรือช่วงเวลาการบำรุงรักษาเป็นความเสี่ยงที่ยอมรับไม่ได้ และองค์กรสามารถดูแลรักษาเลเยอร์เพิ่มเติมได้ การทดสอบความสำเร็จที่มีความหมายไม่ใช่ “เซิร์ฟเวอร์ฐานข้อมูลทั้งสามเครื่องทำงานอยู่” แต่เป็นการที่ URL ของ Nextcloud ยังคงใช้งานได้ในระหว่างการสูญเสียโหนดตามแผน การอัปโหลดและดาวน์โหลดทำงานได้บนโหนดเว็บ ฐานข้อมูลยังคงมี Quorum และทีมสามารถกู้คืนทั้งข้อมูลฐานข้อมูลและไฟล์จากข้อมูลสำรองได้
รายการตรวจสอบความถูกต้องอย่างรวดเร็ว
- Nextcloud, MariaDB, PHP และ Galera เวอร์ชันต่างๆ สามารถใช้งานร่วมกันได้และได้รับการสนับสนุน
- โหนดฐานข้อมูลทั้งหมดจะรายงานข้อมูลสมาชิกหลัก ขนาดคลัสเตอร์ที่คาดหวัง ความพร้อม และสถานะโลคอลที่ซิงค์แล้ว
- เซิร์ฟเวอร์แอปพลิเคชันใช้ปลายทางฐานข้อมูล การกำหนดค่า แคช และระบบข้อมูลไฟล์เดียวกัน
- พอร์ตฐานข้อมูล การจำลองข้อมูล แคช และพื้นที่จัดเก็บข้อมูลเป็นแบบส่วนตัวและจำกัดเฉพาะผู้ใช้งานที่จำเป็นเท่านั้น
- พร็อกซีเว็บและฐานข้อมูลจะกำจัดแบ็กเอนด์ที่มีปัญหาอย่างแท้จริงออกจากระบบ
- ได้มีการทดสอบความล้มเหลวที่วางแผนไว้ของเว็บโหนดและฐานข้อมูลโหนด ภายใต้กรอบเวลาที่ควบคุมได้
- ในการทดสอบระบบ การกู้คืนฐานข้อมูลและไฟล์ข้อมูลสำเร็จเรียบร้อยแล้ว
เอกสารอ้างอิงอย่างเป็นทางการ