如何使用Payara和虚拟服务器配置子域?

时间:2018-04-30 14:26:17

标签: java amazon-web-services docker glassfish payara

我正在努力做一些可能很容易做到的事情,但我找不到正确的解决方案,所以我希望你能帮助我。

背景

我们正在开发一个包含4个不同Java Web项目的应用程序。

  1. APPA
  2. APPB
  3. APPC
  4. 的WebService
  5. 所有这些应用程序都必须从 mydomain.com 的4个不同子域中访问:

    1. a.mydomain.com
    2. b.mydomain.com
    3. c.mydomain.com
    4. api.mydomain.com
    5. 技术

      应用程序服务器:Payara服务器4(与Glassfish 4几乎相同)。

      Payara服务器在Docker容器内运行,而该容器又在Amazon EC2实例中运行。

      我在以下场景中使用了Amazon Route 53:

      我已经成功完成了什么

      这是针对另一个项目进行的,其中只有一个应用程序可以从 otherdomainiown.com 的子域访问。

      这非常有效,因为域名提供商(iPage)的DNS记录只是指向我配置的托管区域的Amazon Route 53记录。此托管区域有一条A记录,指向我的Amazon EC2实例的固定IP。然后,Docker通过端口80将Payara服务器mapped暴露给端口8080,Payara默认使用该端口为其应用程序提供服务。 enter image description here

      问题

      现在,我面临着类似的情况。不同之处在于我有4个不同的应用程序需要由4个不同的子域访问。

      我尝试过没有运气的虚拟服务器(虚拟主机),我对此并不熟悉,但我认为这可能是一种可能的解决方案。

      我考虑过使用Amazon S3存储桶进行重定向,但我认为这不是我需要的。

      在图像中,这应该是最终的场景,尽管为了简单起见我只绘制了2个子域:

      enter image description here

      • 我应该使用Docker映射来解决此问题吗?
      • 我应该使用虚拟服务器吗?
      • 我应该买4台不同的机器吗? (这将在几秒钟内解决所有这些问题,但购买更多实例不是一种选择)
      • 我应该为每个应用程序使用Docker容器吗?

      正如你所看到的,我有点失落,所以如果你能指出我正确的方向会很棒。

      提前致谢。

2 个答案:

答案 0 :(得分:0)

您使用Route 53的目的是什么?在这种情况下,您从中获得了什么好处?

There is a blog post on the Payara website which gives an overview of using Virtual Servers in Payara Server, but it's a bit in-depth to quote for an answer here

关键是您仍需要在不同的子域中配置 到达 的传入流量。如果您的所有流量都与Route53正在进行的IP地址相同,那么区分哪些流量应该到哪个端点将非常棘手。

通常的方法是使用负载均衡器或代理,在图中有Route53。 Amazon ELB将能够执行您需要的重定向。更便宜的选择(虽然它涉及更多管理)将使用Apache httpd或Nginx之类的东西将请求转发到Payara服务器。

答案 1 :(得分:0)

您只需为每个子域创建一个虚拟服务器,并在“主机”字段中设置子域。然后,您需要重新部署所有4个应用程序,并在“虚拟服务器”字段中选择正确的虚拟服务器。由@Mike链接的博客将指导您:https://blog.payara.fish/virtual-servers-in-payara-server

所有虚拟服务器都将侦听相同的IP地址,但Payara Server将从传入的HTTP请求中读取域,并将请求路由到正确的虚拟服务器。

但是,建议仅适用于非常小的应用程序。应在不同端口或不同计算机上运行的不同Payara Server实例上单独部署更大的应用程序。如果您使用docker,那么您可以在docker中运行4个实例并将它们映射到不同的端口。然后,您需要一个代理服务器(Apache Httpd,Nginx),根据请求中的域名将请求路由到正确的Payara实例(端口)。