如何使用Java webapp进行大容量虚拟主机?

我们有一个Java Web应用程序。 这是一个简单的.war文件。 我们允许客户注册我们的服务,他们得到自己的URL: http : //customer_name.ourdomain.com指向我们的应用程序的特殊实例只是为他们。

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

由于我们让人们自行注册,因此我们无法手动将CNAMElogging添加到DNS服务器,以将子域映射到IP。 另外,我不知道DNS服务器是否可以处理成千上万的客户,我们希望有一天。

有没有办法做到这一点dynamic? 我希望我们能够在某个地方的mysql数据库中存储一个子域/ ip映射。 有没有可以使用它的DNS服务器? 还是有更好的负载均衡器前端stream量分配器,我们应该使用?

因为你有控制域,我认为你有充分的理由使用DNS。 这里有几个选项:

  • 运行您自己的DNS服务器,并在用户注册时自动将新的Alogging写入区域文件。 当客户通过您的Web界面注册时,您可以调用在DNS服务器上通过SSH运行的Shell脚本来将条目写入文件。 传入客户域的variables以及您想要的服务器。

  • 或者你可以使用像www.zerigo.com这样的DNS服务,并通过他们的API自动化。

脚本会喜欢的东西:

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

在执行脚本时传入variables(在注册时通过站点上的表单收集):

 ./add_a_record.sh 73.203.218.41 <customername> 

DNS是专门devise来处理任何数量的请求,你可以扔在它…