Skip to main content

การแยกส่วนผู้เช่าหลายราย (Multi-Tenancy Isolation)

Ultimate Multisite: Multi-Tenancy 1.2.0 รองรับการแยกฐานข้อมูลและระบบไฟล์สำหรับแต่ละ subsites เพื่อให้ผู้เช่าแต่ละรายมีความเป็นอิสระอย่างสมบูรณ์ ซึ่งช่วยให้ข้อมูลของผู้เช่าแต่ละรายถูกเก็บแยกออกจากกัน ในขณะที่ยังคงรักษาการจัดเตรียมเครือข่าย การเรียกเก็บเงิน และการบริหารจัดการในระดับเครือข่ายไว้ได้

กลยุทธ์การแยกส่วน (Isolation strategy)

ให้ใช้การแยกส่วนแบบ sovereign isolation สำหรับลูกค้าที่ต้องการการแยกข้อมูลที่เข้มงวดกว่า ต้องการพื้นที่จัดเก็บระบบไฟล์เฉพาะ หรือมีขอบเขตโฮสต์ที่แยกต่างหาก

ผู้เช่าแต่ละรายควรมี:

  • ฐานข้อมูลของผู้เช่าโดยเฉพาะ หรือกลยุทธ์คำนำหน้า (prefix strategy) ของฐานข้อมูลที่ได้รับการอนุมัติสำหรับโฮสต์นั้นๆ
  • รากของระบบไฟล์ (filesystem root) สำหรับผู้เช่าโดยเฉพาะ
  • รายการลงทะเบียนผู้เช่า (tenant registry entry) ที่ทำหน้าที่เชื่อมโยงไซต์เข้ากับฐานข้อมูล, เส้นทางราก (root path), ชื่อโฮสต์ (hostname) และรูปแบบการแยกส่วน (isolation model) ของมัน
  • ผลการตรวจสอบการย้ายข้อมูล (migration verification result) ก่อนที่ผู้เช่าจะถูกพิจารณาว่าพร้อมใช้งานจริง

การผูกโฮสต์ฐานข้อมูล (Database host binding)

เวอร์ชัน 1.2.0 ได้เปลี่ยนแปลงพฤติกรรมการผูกโฮสต์บนเครื่องเดียวกันโดยค่าเริ่มต้นสำหรับการติดตั้งแบบ sovereign สำหรับค่าในเครื่องเดียวกัน เช่น localhost จะถูกปรับให้เป็นมาตรฐาน เพื่อให้ Bedrock, FrankenPHP และการติดตั้ง WordPress ที่อยู่ในคอนเทนเนอร์ สามารถอนุญาตและตรวจสอบสิทธิ์เทียบกับสตริงโฮสต์ที่ MySQL มองเห็นได้จริง

เมื่อตั้งค่าผู้เช่าแบบ sovereign:

  1. กำหนด host ฐานข้อมูลเป็นค่าที่ runtime ของผู้เช่าต้องการ
  2. ใช้ localhost สำหรับการติดตั้ง socket ในเครื่อง เมื่อโฮสต์คาดหวังการเชื่อมต่อภายใน (local connections)
  3. ใช้ 127.0.0.1 หรือชื่อ hostname ของบริการเท่านั้น เมื่อเซิร์ฟเวอร์ฐานข้อมูลอนุญาตสิทธิ์ให้กับ host นั้นๆ
  4. รันการตรวจสอบการย้ายข้อมูลหลังจากเปลี่ยนการผูกโฮสต์แล้ว

หากรายงานการตรวจสอบพบข้อผิดพลาดในการให้สิทธิ์ (grant failures) ให้เปรียบเทียบการให้สิทธิ์ผู้ใช้ใน DB ของผู้เช่ากับการผูกโฮสต์ที่ตั้งค่าไว้ ผู้ใช้ที่ได้รับสิทธิ์สำหรับ user@localhost จะแตกต่างจาก [email protected] หรือ user@%

รากของระบบไฟล์ (Filesystem root)

รากของผู้เช่า (tenant root) ควรจะคงที่แม้จะมีการรีสตาร์ทหรือติดตั้งใหม่ หลีกเลี่ยงการใช้พาธสำหรับเมาท์ชั่วคราว สำหรับการติดตั้งแบบ Bedrock ให้แน่ใจว่า tenant root ชี้ไปยัง web root ของ WordPress ที่คาดหวังโดย tenant bootstrap ไม่ใช่แค่ project root เท่านั้น

ลำดับการเตรียมระบบ (Provisioning order)

สำหรับการสร้างผู้เช่าที่เป็นเอกเทศ (sovereign tenants) ใหม่ ให้ใช้ลำดับนี้:

  1. สร้างรายการใน tenant registry
  2. สร้างฐานข้อมูลและผู้ใช้ฐานข้อมูลสำหรับผู้เช่า
  3. Bootstrap โครงสร้าง (schema) ของผู้เช่า
  4. เตรียมผู้ใช้ของผู้เช่า
  5. กำหนดพาธระบบไฟล์ของผู้เช่า
  6. รันการตรวจสอบการย้ายข้อมูล (migration verification)
  7. เปลี่ยนเส้นทาง (routing) หรือ DNS หลังจากผ่านการตรวจสอบแล้ว

ลำดับนี้จะช่วยป้องกันไม่ให้ผู้เช่าที่ถูกแยกส่วนบางส่วนได้รับทราฟฟิกก่อนที่ตัวเขียนฐานข้อมูล ผู้ใช้ และระบบไฟล์จะพร้อมใช้งาน

กระบวนการจัดการลูกค้าสำหรับลูกค้าที่เป็นเอกเทศ (Sovereign customer management flows)

Ultimate Multisite v2.13.0 จะเก็บการดำเนินการจัดการลูกค้าไว้ที่เว็บไซต์หลักเมื่อเปิดโหมด sovereign แม้ว่าผู้เช่าจะยังสามารถทำงานเหมือนการติดตั้ง WordPress ที่แยกออกมาได้ แต่การดำเนินการที่เกี่ยวข้องกับลูกค้าซึ่งขึ้นอยู่กับการเรียกเก็บเงินผ่านเครือข่าย การเป็นสมาชิก หรือข้อมูลบัญชีร่วม ควรส่งลูกค้ากลับไปยังเว็บไซต์หลักแทนที่จะพยายามทำรายการให้เสร็จสิ้นภายใน runtime ของผู้เช่า

กระบวนการของเว็บไซต์หลักจะใช้กับ:

  • การชำระเงินและการเปลี่ยนแปลงแผน
  • ภาพรวมบัญชีและรายการดำเนินการโปรไฟล์ลูกค้า
  • การอัปเดตที่อยู่สำหรับเรียกเก็บเงินและหน้าจัดการการชำระเงิน
  • มุมมองใบแจ้งหนี้และประวัติการชำระเงิน
  • การดำเนินการจัดการเว็บไซต์ เช่น การเพิ่มเว็บไซต์หรือการลบเว็บไซต์
  • การสลับเทมเพลต (Template switching)
  • การแมปโดเมนและการเปลี่ยนแปลง primary-domain

ເມື່ອລູກຄ້າເລີ່ມເຮັດການຕ່າງໆເຫຼົ່ານີ້ຈາກ tenant ທີ່ເປັນເຈົ້າຂອງ (sovereign tenant), Ultimate Multisite ຈະສ້າງ URL ຂອງ main-site ທີ່ກົງກັນ ແລະ ຮັກສາ source tenant ເປັນຈຸດກັບຄືນເມື່ອມັນປອດໄພທີ່ຈະເຮັດໄດ້. ສິ່ງນີ້ຊ່ວຍໃຫ້ລູກຄ້າສາມາດເຮັດການຕ່າງໆຕາມທີ່ໄດ້ຈັດການໄວ້ໃນ network records ແລ້ວ ກັບຄືນໄປໃນ context ຂອງ tenant ໂດຍບໍ່ຕ້ອງສ້າງຂໍ້ມູນການເກັບເງິນ ຫຼື membership state ຊ້ອນກັນໃນ sovereign database.

ສຳລັບຜູ້ດຳເນີນງານ (operators), ກົດເກນໃນທາງປະຕິບັດແມ່ນ: ໃຫ້ໜ້າທີ່ເກັບເງິນ (billing), ບັນຊີ (account), checkout, invoice, template ແລະ domain-management page ເປັນຂອງ main site ສຳລັບ network ທີ່ເປັນ sovereign. Tenant dashboards ສາມາດເຊື່ອມຕໍ່ໄປຫາໜ້າເຫຼົ່ານັ້ນໄດ້, ແຕ່ main site ຍັງຄົງເປັນແຫຼ່ງຄວາມຈິງ (source of truth) ຂອງການເຮັດການຕ່າງໆນັ້ນ.