我的项目包括一个主网站,用户可以在其中注册一个帐户。注册后,他们每个人都会获得一个网站(我自己域名的子域名),其中有一个电子商务商店,由我主网站(他们注册的网站)上托管的平台管理,就像这样
example1.com -> 主网站(登录、注册等)
example1.com/platform -> 管理平台
store1.example1.com -> 用户 1 的商店
store2.example1.com -> 用户 2 的商店
就硬件而言,我的设置如下:GCP 中带有 apache 的 1 个 VM 实例,几个虚拟主机设置了一些通配符,可以将请求的域映射到适当的文件夹。
我还在我的主域上生成了一个通配符证书,使用 SSL 保护我所有客户的商店。
现在,我想防止服务器随着时间的推移而过载,因此我认为将负载均衡器连接到从上面解释的机器实例组复制的机器实例组可以解决我的问题,理论上它可以工作,但我有一个问题:
每个用户都有权购买自己的域名并将其重定向到我的 IP(LB 或 VM),以便他们的商店看起来像这样:
store1.com -> 用户 1 的商店
store2.com -> 用户 2 的商店
而且,如果他们愿意,他们可以在我的平台上“购买” SSL 证书来保护他们的域名。我可以通过 API 的 certbot 和 letsencrypt 轻松地动态创建 SSL 证书,但由于我的虚拟机将在实例组上运行,因此我保存在当前工作的虚拟机上的任何证书文件都不会复制到其他虚拟机(如果有),甚至在实例组决定不再需要当前虚拟机时可能会丢失。我该如何安排所有内容(LB、实例组、虚拟机和/或 apache),以便负载平衡器将流量发送到我的实例组中的多个虚拟机,但它们可以以某种方式“共享”证书文件夹甚至整个磁盘..?
顺便说一句,如果虚拟机处于只读模式(不起作用),则虚拟机上的持久磁盘只能安装到多个虚拟机上,我也尝试了文件存储,但每月要花费 200 美元,这对于这个来说有点贵了。
答案1
正如@JohnHanley指出的那样:
管理 LB 设置上的证书并从 Web 服务器中删除 certbot。Google 域验证会产生一些开销,但绝对值得一试。
关于 LB 配置和证书:
- 无法更改 LB 上已配置的证书
- 但您可以添加新证书(例如,使用附加主机名)并将其添加到现有 LB,然后删除旧证书设置
有一些 Terraform 模块可以为您提供支持,但当然这也会产生一些学习和管理工作。