【问题标题】:Configuring an Elastic Beanstalk environment's Load Balancer for TCP Passthrough in a custom VPC with config files (.ebextensions)使用配置文件 (.ebextensions) 在自定义 VPC 中为 TCP 直通配置 Elastic Beanstalk 环境的负载均衡器
【发布时间】:2024-01-18 05:03:01
【问题描述】:

我已尝试关注此特定文档

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/https-tcp-passthrough.html

我的特殊需求没有运气。需要的是从我们的代理服务器通过 ELB 的第 4 层 TCP 直通,直到 Tomcat 后端才终止 SSL。入口端口是 TCP 443,出口是 8443。还需要使用自定义 VPC 而不是默认值。这如何利用配置文件来实现?

【问题讨论】:

    标签: amazon-web-services tcp amazon-vpc amazon-elastic-beanstalk elastic-load-balancer


    【解决方案1】:

    我能够使用以下配置文件解决:

    https-instance-balancer.config

        {
            "Resources": {
                "AWSEBSecurityGroup": {
                    "Type": "AWS::EC2::SecurityGroup",
                    "Properties": {
                        "VpcId": "vpc-xxxxxxxx",
                        "GroupDescription": "EC28443Ingress",
                        "SecurityGroupIngress": [
                            {
                                "IpProtocol": "tcp",
                                "FromPort": 8443,
                                "ToPort": 8443,
                                "CidrIp": "0.0.0.0/0"
                            }
                        ]
                    }
                },
                "AWSEBLoadBalancerSecurityGroup": {
                    "Type": "AWS::EC2::SecurityGroup",
                    "Properties": {
                        "VpcId": "vpc-xxxxxxxx",
                        "GroupDescription": "ELB443and8443Ingress",
                        "SecurityGroupIngress": [
                            {
                                "IpProtocol": "tcp",
                                "FromPort": 443,
                                "ToPort": 443,
                                "CidrIp": "0.0.0.0/0"
                            }
                        ],
                        "SecurityGroupEgress": [
                            {
                                "IpProtocol": "tcp",
                                "FromPort": 8443,
                                "ToPort": 8443,
                                "CidrIp": "0.0.0.0/0"
                            }
                        ]
                    }
                },
                "AWSEBLoadBalancer": {
                    "Type": "AWS::ElasticLoadBalancing::LoadBalancer",
                    "Properties": {
                        "Listeners": [
                            {
                                "LoadBalancerPort": 443,
                                "Protocol": "TCP",
                                "InstancePort": 8443,
                                "InstanceProtocol": "TCP"
                            }
                        ],
                        "SecurityGroups": [
                            {
                                "Fn::GetAtt": [
                                    "AWSEBLoadBalancerSecurityGroup",
                                    "GroupId"
                                ]
                            }
                        ]
                    }
                }
            }
        }
    

    https-lb-passthrough.config

        {
          "option_settings": {
            "aws:elb:listener:443": {
              "ListenerProtocol": "TCP",
              "InstancePort": 8443,
              "InstanceProtocol": "TCP"
            },
            "aws:elb:healthcheck": {
              "Target": "TCP:8443"
            }
          }
        }
    

    使用 Terraform 等软件可能更容易实现这一点,但对于某些人来说,这可能不是一个选择。

    【讨论】:

    • 您会认为 A) 这是一个常见的用例,并且 B) AWS 提供的文档将包含这样一个示例。我整天都在努力让他们的示例与 Play 一起工作,因为它不是以 root 身份启动的,因此可以访问默认端口 - ergo 必须准确地执行上述操作 - 几乎按原样使用你的文件并立即工作!谢谢。
    • 该死!从头开始 - 结果我不小心连接到了 ec2 实例而不是前端负载均衡器。似乎您已经以某种方式使实例在端口 443 上提供服务(如果我可以让 ELB 与之对话,这可能很有用 - 完全不确定证书是如何提供的(我可能会正确添加)但是它是否正在以某种方式接收它)......回到头部敲打......
    最近更新 更多