การแยกส่วนผู้เช่าหลายราย (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:
- กำหนด host ฐานข้อมูลเป็นค่าที่ runtime ของผู้เช่าต้องการ
- ใช้
localhostสำหรับการติดตั้ง socket ในเครื่อง เมื่อโฮสต์คาดหวังการเชื่อมต่อภายใน (local connections) - ใช้
127.0.0.1หรือชื่อ hostname ของบริการเท่านั้น เมื่อเซิร์ฟเวอร์ฐานข้อมูลอนุญาตสิทธิ์ให้กับ host นั้นๆ - รันการตรวจสอบการย้ายข้อมูลหลังจากเปลี่ยนการผูกโฮสต์แล้ว
หากรายงานการตรวจสอบพบข้อผิดพลาดในการให้สิทธิ์ (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) ใหม่ ให้ใช้ลำดับนี้:
- สร้างรายการใน tenant registry
- สร้ างฐานข้อมูลและผู้ใช้ฐานข้อมูลสำหรับผู้เช่า
- Bootstrap โครงสร้าง (schema) ของผู้เช่า
- เตรียมผู้ใช้ของผู้เช่า
- กำหนดพาธระบบไฟล์ของผู้เช่า
- รันการตรวจสอบการย้ายข้อมูล (migration verification)
- เปลี่ยนเส้นทาง (routing) หรือ DNS หลังจากผ่านการตรวจสอบแล้ว
ลำดับนี้จะช่วยป้องกันไม่ให้ผู้เช่าที่ถูกแยกส่วนบางส่วนได้รับทราฟฟิกก่อนที่ตัวเขียนฐานข้อมูล ผู้ใช้ และระบบไฟล์จะพร้อมใช้งาน