【问题标题】:How to host a Java TCP server in AWS Elastic Beanstalk如何在 AWS Elastic Beanstalk 中托管 Java TCP 服务器
【发布时间】:2016-01-17 07:21:18
【问题描述】:

我有一个使用java.net 库创建 TCP 服务器的 Java 项目,我希望在 AWS Elastic Beanstalk 上运行它。

我知道 nginx 无法托管本机 TCP 套接字(在 v1.9 之前,EB 还不支持),并且 EB 使用 NGINX v1.8(尽管它说它使用 v1.6.2 here )。

有什么方法可以让我的服务器在 Elastic Beanstalk 上运行?我应该考虑从 Java SE 切换到 Java EE 吗?

谢谢,
内森

【问题讨论】:

    标签: java amazon-web-services nginx tcp amazon-elastic-beanstalk


    【解决方案1】:

    如果您的应用程序支持 HTTP,那么就没有什么可做的了,所以我认为它不支持。 EB 与 HTTP 紧密结合用于流量路由、监控和平衡 - 因此您必须配置一些东西才能让 EB 完成它的工作。

    1. 创建负载平衡的基于 Java 的 EB 应用程序
    2. 确保为此实例打开指定端口(设置适当的安全组)
    3. 在负载均衡器配置中,选择 TCP 作为您的协议并指定端口
    4. 将您的 java 代码打包为 .war 文件,以允许 EB 部署它

    现在这应该可以了,但不幸的是,监控可能仍然失败。如果是这种情况,请编写一个小型 servlet 来监视您的 TCP 服务器并将其添加到您的部署战中。配置 LB 以检查 URL 和 EB 将在您的应用程序负载更改时创建/销毁实例。

    【讨论】:

      【解决方案2】:

      @Zoyt 您可以在 AWS Elastic Beanstalk (EB) 上部署 TCP 服务器。 EB 主要专注于典型的 Web 应用程序。但是,有一些方法可以根据需要配置 EB。我会推荐:

      1. 添加到您的应用程序健康检查网页 - eb 专注于 web,所以我们需要给 eb 网页;
      2. 借助 eb 配置,我们可以修改 ELB 设置并指定我们要侦听 TCP 端口并为我们设置其他所需的参数。此处可用的环境配置选项:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-general.html
      3. 为了修改软件和操作系统配置,您可以使用: .ebextensions 配置文件:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html - 此配置提供安装包、创建文件和运行一些脚本的能力,这些都是引导实例所需的。一般来说,这个想法是一样的:Cloud-init (https://cloudinit.readthedocs.org/en/latest/)。此外,如果定制很复杂,您可以构建自己的 AMI 并使用它。使用自定义 AMI 的方法还可以加快 ec2 实例的启动,因为复杂的引导脚本可能运行缓慢或失败。

      总而言之,您拥有允许在 EB 上部署服务器的所有工具。

      【讨论】:

      • 谢谢,等有变化我会试试这个。
      • 哇,我知道我是怎么错过的。谢谢!
      猜你喜欢
      • 2021-04-29
      • 2014-01-21
      • 2019-12-11
      • 2016-03-07
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2018-02-09
      • 2021-06-01
      相关资源
      最近更新 更多