如何直接访问amazon负载均衡器后面的节点

How to access the nodes behind the amazon load balancer directly

我在 elastic beanstalk 上有一个应用程序 运行。应用程序是负载平衡的,SSL 由负载平衡器处理。

如何安全地访问集群中的各个节点?

我想这样做,以便我可以通过 JMX 连接并询问各个节点 - 获取连接池指标并更改日志记录配置。

实现此目的的一种方法是设置 VPC 并将节点放置在 VPC 的私有子网中。在您的 public 子网上,您可以设置一个 VPN 服务器,AWS 市场上有很多可用的,然后您可以 VPN 到该机器 - 它将安全流量路由到您的私有子网。

另一种选择是在每个节点上的应用程序前面放置一个代理,例如 Nginx。在代理上安装 SSL 证书,以便代理处理 SSL。这样你就可以通过代理访问你的节点并获得安全的流量。

如果您有很多节点,您可能需要构建某种服务注册表以供发现。

使用标准 Elastic Beanstalk 配置将不允许您访问节点,除非通过端口 22。这是因为标准设置只允许负载均衡器访问 EC2 节点;这是出于安全原因。

但是,设置所需的配置并非不可能。

要在您需要的节点上使用 SSL:

Step 1: Create an SSL Certificate and Private Key
Step 2: Create an SSL Configuration File
Step 3: Open Port 443
Step 4: Complete the Configuration File for Your Container Type

您可以在此处找到 Java 容器的设置: http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/SSLJava.SingleInstance.html

由于环境的弹性特性,在负载均衡器后面注册 EC2 主机名将非常复杂。最简单的方法是询问您的 AWS 仪表板以获取主机名。

其他选项包括使用 AWS CLI 工具配置脚本以轮询 EB 环境和 return 主机名;或为 JMX (http://www.jmanage.org/) 寻找集群解决方案。