动态子域路由

Nad*_*der 5 domain-name-system routing cname-record subdomain

我在 stackoverflow 上问过这个问题,但得到的意见很少:https : //stackoverflow.com/questions/2284917/route-web-requests-to-different-servers-based-on-subdomain

或许更适合这个人群。再次为方便起见:

我有一个平台,用户可以在其中使用子域创建新网站。将有数千个,例如 abc.mydomain.com, def.mydomain.com 。希望如果我们成功了数十万。

我需要能够将这些域路由到不同的 IP 以指向特定的应用程序服务器。我现在在数据库中有这个映射。

这里有哪些最佳实践和推荐技术?

我看到几个选项:

  1. 使用通配符 CNAME 条目设置 DNS,以便所有请求都发送到单个 IP,其中可能有两台使用心跳(用于故障转移)的机器知道如何在数据库中查找 IP,然后执行 http 重定向到适当的应用程序服务器。这对我来说似乎笨拙而缓慢。
  2. 运行我自己的可以以编程方式管理的 DNS 服务器,以便在创建新站点时添加 DNS 条目。我们还将站点移动到不同的应用服务器,因此我需要能够近乎实时地更新 DNS 条目。有人想吗?

谢谢。

Update2:我已经设置了指向 HAProxy Web 服务器的外部通配符 DNS,该服务器的工作是将请求路由到后端服务器。映射存储在我们的内部 PowerDNS 服务器中。现在的问题是如何让 HAProxy 服务器(或其他)使用内部 DNS 的值而不是一些配置文件或访问列表?——

更新:根据下面的一些建议,似乎反向代理服务器是要走的路。由于我将重新平衡域-> 服务器映射,这些需要立即工作,DNS 解决方案上的 TTL 可能是一个问题。考虑到此域-> IP 数据存储在数据库中,我需要使用它来提高性能吗?

mat*_*mat 0

我会使用第二个解决方案,PowerDNS它是管道后端,您只需要编写一个软件,该软件能够通过一个非常简单的协议从 stdin/stdout 读取查询并写入响应