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) ຂອງການເຮັດການຕ່າງໆນັ້ນ.