如何使用 Java webapp 进行大规模虚拟托管?

如何使用 Java webapp 进行大规模虚拟托管?

我们有一个 Java webapp。这是一个简单的 .war 文件。我们允许客户注册我们的服务,并获得自己的 URL:http://客户名称.ourdomain.com它指向我们应用程序为他们提供的一个特殊实例。

我们已经在一台服务器上启动并运行了系统,但现在我们需要弄清楚如何分发它。当客户注册时,他们将被分配到特定的服务器。我们可以处理这个问题。我无法弄清楚的是如何让 customer_name.ourdomain.com 指向正确的框。

因为我们让人们自行注册,所以我们无法手动将 CNAME 记录添加到 DNS 服务器以将子域映射到 IP。另外,我不知道 DNS 服务器是否能够处理我们希望将来拥有的数万名客户。

有没有办法动态地做到这一点?我希望我们能够将子域/ip 映射存储在某个 mysql 数据库中。是否有可以使用它的 DNS 服务器?或者是否有更好的负载平衡器前端流量分配器供我们使用?

答案1

因为您可以控制域,所以我认为您有充分的理由为此使用 DNS。以下是几个选项:

  • 运行您自己的 DNS 服务器,并在用户注册时自动将新的 A 记录写入区域文件。当客户通过您的 Web 界面注册时,您可以调用通过 DNS 服务器上的 SSH 运行的 Shell 脚本将条目写入文件。传入客户域的变量以及您希望它们位于哪个服务器上。

  • 或者您可以使用像 www.zerigo.com 这样的 DNS 服务并通过其 API 实现自动化。

该脚本将会像这样:

#!bin/sh
serverip=$1
customername=$2
cat > /etc/DNSSERVER/Zonefile <<-_EOF1_
IN  A   $serverip   $customername.ourdomain.com 
_EOF1_

执行脚本时传入变量(注册时通过网站上的表单收集):

./add_a_record.sh 73.203.218.41 <customername>

DNS 是专门为处理您向其发出的任意数量的请求而设计的……

相关内容