โครงการของฉันประกอบด้วยเว็บไซต์หลักที่ผู้ใช้สามารถลงทะเบียนบัญชี หลังจากลงทะเบียนแล้ว พวกเขาแต่ละคนจะได้รับเว็บไซต์ (โดเมนย่อยของโดเมนของฉันเอง) ซึ่งพวกเขามีร้านค้าอีคอมเมิร์ซที่จัดการโดยแพลตฟอร์มที่โฮสต์บนเว็บไซต์หลักของฉัน (ที่พวกเขาลงทะเบียนด้วย)
แบบนี้
example1.com -> เว็บไซต์หลัก (เข้าสู่ระบบ ลงทะเบียน ฯลฯ)
example1.com/platform -> แพลตฟอร์มการจัดการ
store1.example1.com -> ร้านค้าของผู้ใช้ 1
store2.example1.com -> ร้านค้าของผู้ใช้ 2
และในแง่ของฮาร์ดแวร์ตอนนี้การตั้งค่าของฉันคือ: 1 อินสแตนซ์ VM ใน GCP พร้อม apache โฮสต์เสมือนสองสามตัวตั้งค่าด้วยไวด์การ์ดที่สามารถแมปโดเมนที่ร้องขอไปยังโฟลเดอร์ที่เหมาะสม
ฉันยังสร้างใบรับรองไวด์การ์ดบนโดเมนหลักเพื่อคุ้มครองร้านค้าของลูกค้าทั้งหมดด้วย SSL
ตอนนี้ ฉันต้องการป้องกันไม่ให้เซิร์ฟเวอร์โอเวอร์โหลดเมื่อเวลาผ่านไป ดังนั้น แม้ว่าการมีโหลดบาลานเซอร์เชื่อมต่อกับกลุ่มอินสแตนซ์ของเครื่องที่จำลองแบบมาจากที่อธิบายไว้ข้างต้นจะช่วยแก้ปัญหาของฉันได้ แต่ในทางทฤษฎีแล้วมันได้ผล แต่ฉันมีปัญหา:
ผู้ใช้แต่ละคนมีอำนาจที่จะซื้อชื่อโดเมนของตนเองและเปลี่ยนเส้นทางไปยัง ip ของฉัน (LB หรือ VM) เพื่อให้ร้านค้าของพวกเขามีลักษณะดังนี้:
store1.com -> ร้านค้าของผู้ใช้ 1
store2.com -> ร้านค้าของผู้ใช้ 2
และถ้าพวกเขาต้องการ ก็สามารถ "ซื้อ" ใบรับรอง SSL บนแพลตฟอร์มของฉันเพื่อปกป้องชื่อโดเมนของพวกเขาได้ ฉันสามารถจัดการการสร้างใบรับรอง SSL ได้ทันทีผ่าน certbot และ letsencrypt ของ API แต่เนื่องจาก vm ของฉันจะทำงานบนกลุ่มอินสแตนซ์ ไฟล์ใบรับรองใด ๆ ที่ฉันบันทึกไว้ใน VM ที่กำลังทำงานอยู่จะไม่ถูกจำลองไปยังไฟล์อื่น (ถ้ามี ) และอาจสูญหายได้เมื่อกลุ่มอินสแตนซ์ตัดสินใจว่าไม่ต้องการ VM ปัจจุบันนั้นอีกต่อไป ฉันจะจัดการทุกอย่างได้อย่างไร (LB, กลุ่มอินสแตนซ์, vm และ/หรือ apache) เพื่อให้โหลดบาลานเซอร์ส่งทราฟฟิกไปยังหลาย ๆ vm ในกลุ่มอินสแตนซ์ของฉัน แต่พวกเขาสามารถ "แชร์" ในโฟลเดอร์ใบรับรองหรือแม้กระทั่งดิสก์ทั้งหมด .. ?
BTW ดิสก์ถาวรบน VM สามารถติดตั้งกับ VM หลายเครื่องได้หากอยู่ในโหมดอ่านอย่างเดียว (ไม่ทำงาน) และฉันก็ลองใช้ที่เก็บไฟล์ด้วย แต่มีค่าใช้จ่าย 200 ต่อเดือนและนั่นก็มากไปหน่อยสำหรับสิ่งนี้ ..