概述
我正在 AWS 上构建一个多租户 SaaS 平台。目前的部署架构非常简单。
- 我有一个ELB(所有流量都在这里)
- 我有几个EC2实例(托管我的java + angle应用程序)。这位于链接到 ELB 的自动缩放组下。
- 我在 RDS 中有一个 EC2 与之通信的 MySQL 集群。
一切都在 VPC 中,EC2 和 RDS 位于私有子网中,
问题
我希望我的客户(租户)拥有自己的域名。例如,假设现在我的应用程序可以通过 URL http://xyz-elb.amazon.aws.com
我想让我的客户能够使用
- http://tenant1.com
-
http://tenant2.com
等等。我知道这是可能的,因为我在不同的多租户 SaaS 应用程序中看到了这一点。
到目前为止,我所做的研究:我阅读了可以完成它的反向代理,但是,我没有得到任何可靠的链接。尝试阅读有关HAProxy的信息,但我觉得我走错了方向。
我需要什么
关于域映射不同方法的专家意见
解决此特定问题的资源列表和链接
你们任何很酷的人的任何实践经验或案例研究
一个便宜的解决方案(我不想通过亚马逊API网关/Route53政策,这似乎不符合我的需求)
非常感谢您阅读我的问题。并提前感谢您为此做出的努力。
只需在每个租户域中创建 DNS 别名记录,指向你的应用 ELB DNS 名称。
我更喜欢将 ELB DNS 名称别名设置为我的服务域,然后将租户域别名化为该名称。例:
app.example.com 在别名 my-loadbalancer-1234567890.us-west-2.elb.amazonaws.com
然后在我的租户 DNS 中:
app.tenant1.com 在别名 app.example.com 中。
此别名允许您根据需要更改 ELB 终端节点,而无需更改所有客户端的 DNS 记录。