标签: aws-application-load-balancer

为什么我必须在 AWS Application Load Balancer 中禁用 HTTP/2 以防止 ERR_SPDY_PROTOCOL_ERROR?

当我使用Application Load Balancer (ALB)将我的 Web 应用程序部署到 AWS 环境时,我的一些 Web 服务端点不会返回任何数据,并且我的 Chrome 浏览器会为一些 http 调用报告此错误:ERR_SPDY_PROTOCOL_ERROR

找到这个建议后,我在我的 ALB 配置中禁用了HTTP/2支持,现在一切正常。

为什么我必须在我的 ALB 中禁用HTTP/2?这里的根本问题是什么?我是否需要更改 Web 服务代码中的某些内容才能使用HTTP/2

更新

以下是响应头:

HTTP/1.1 200
Date: Wed, 09 Jan 2019 21:39:13 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Locations Reached: Data to populate locations reached map
Run Code Online (Sandbox Code Playgroud)

正如下面的一个答案所建议的那样,罪魁祸首可能是我的一个标题(到达的位置)在名称中有一个空格,这是无效/格式错误的。我会确保空格被破折号取代。

load-balancing amazon-web-services amazon-elb http2 aws-application-load-balancer

2
推荐指数
1
解决办法
3375
查看次数

AWS 负载均衡器将流量路由到具有多个微服务的一个目标组

我有 ALB,它侦听端口 80 上的 HTTP 流量,我在 ALB 侦听器中添加了一个目标组,它由一台 EC2 机器组成。我的 EC2 实例在不同的端口上运行多个微服务,例如。App1 在 8080 上运行,App2 在 8001 上运行,App3 在 8004 上运行,依此类推……EC2 再次在端口 80 上侦听通过 ALB 的任何传入请求。我想根据路径为 EC2 到不同应用程序端口的传入流量执行基于路径的路由,例如,

"/users" -> 8080 上的应用程序;"/get/info" -> 8001 等

. 有没有办法实现它?或者有什么更好的方法来做我正在尝试的事情?现在我已经完成了基于 ip-tables 的路由,将流量从 EC2 的端口 80 路由到单个端口,即 8080,但这仅服务于我的众多微服务中的一个。我如何配置它来为所有这些服务?

routing amazon-ec2 amazon-web-services microservices aws-application-load-balancer

2
推荐指数
1
解决办法
7270
查看次数

如何在AWS ALB中进行端口转发

我有一个在 ALB 后面的 ec2 上运行的 apache 服务器,监听端口 3000。我想知道如何将端口从 ALB 的端口 80 转发到 ec2 的端口 3000。我尝试使用端口 3000 创建目标组,但本质上是这样。请建议我如何实现这一目标。提前致谢。

amazon-web-services aws-application-load-balancer

2
推荐指数
1
解决办法
2834
查看次数

使用 ALB 入口控制器将非 www 重定向到 www

我正在尝试将non www请求重定向到www. 我在这里检查了注释https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/但找不到特定于非 www 到 www 的重定向。

我已经有一个httphttps重定向设置,它的工作。

下面是我的入口资源清单文件。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: eks-learning-ingress
  namespace: production
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/certificate-arn: ard878ef678df
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
  labels:
    app: eks-learning-ingress
spec:
  rules:
  - host: www.myhost.in
    http:
      paths:
        - path: /*
          backend:
            serviceName: ssl-redirect
            servicePort: use-annotation
        - path: /*
          backend:
            serviceName: eks-learning-service
            servicePort: 80
Run Code Online (Sandbox Code Playgroud)

这方面的任何帮助都会很棒。谢谢。

amazon-web-services kubernetes aws-application-load-balancer

2
推荐指数
1
解决办法
1538
查看次数

根据 terraform 中的条件或标志创建 AWS 资源

在使用 terraform 的 AWS 中,仅当 LB 不存在时才必须创建负载均衡器资源。为此,我可以定义一个类似于“lb_exists=true”的变量,并根据这个“true”值,必须创建资源,否则,terraform 应该跳过 LB 创建。

为了实现这一目标,我计划使用depend_on。如果“lb_exists=false”,则depends_on应该是空列表或设置为无资源名称。

locals {
  lb_exists = "true"
}

resource "aws_lb" "test" {
  name               = var.alb_name
  internal           = false
  load_balancer_type = "application"
  #...
}

data "aws_lb" "test" {
  lb_exists = "${local.lb_exists}"
  depends_on    = ["aws_lb.test"]
}
Run Code Online (Sandbox Code Playgroud)

实现这一目标的正确方法是什么以及如何实现?有什么解决方法吗?如果 AWS 中存在 LB,我不想重新创建该 LB。请建议。

[编辑]复制完整代码

provider "aws" {
  region = var.aws_region
}

resource "aws_lb" "test" {
  count = local.lb_exists == "true" ? 1 : 0
  name               = var.alb_name
  internal           = false
  load_balancer_type = "application"
  security_groups    = …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-elb terraform aws-application-load-balancer

2
推荐指数
1
解决办法
1万
查看次数

AWS ELB 侦听器创建失败并出现验证异常

我的 CloudFormation 堆栈创建失败并出现一个非常普遍的错误,我似乎无法弄清楚原因。

我正在使用 ALB 创建单容器 ECS 服务任务。

这是我的堆栈模板:

AWSTemplateFormatVersion: '2010-09-09'
Description: Services Containers

Parameters:
  VpcId:
    Type: String
    Default: vpc-4796bd23
  SubnetId:
    Type: String
    Default: subnet-f4701ff8
  ELBSecondarySubnetId:
    Type: String
    Default: subnet-8a453cef
  ECSCluster:
    Type: String
    Default: dev-ecs
  EcsSecurityGroup:
    Type: String
    Default: sg-74cb7b0c
  Color:
    Type: String
    AllowedValues: ['blue', 'green']
    Description: The deployment color
    Default: 'blue'
  BuildVersion:
    Type: String
    Description: The build version to deploy
  ComPublic:
    Type: String
    Description: Hosted Zone ID
    Default: Z00669325SSURKTK4ZPA
  MQPort:
    Type: Number
    Description: MQ Connectivity port
    Default: 5672

Resources: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-ecs aws-cloudformation aws-fargate aws-application-load-balancer

2
推荐指数
1
解决办法
3001
查看次数

安全组之间的 Terraform 循环依赖

我有一个设置:ALB 在 ECS 前面。我有一个 ecs 模块和一个 alb 模块:\nALB 的出口规则为alb_sg

\n
  egress {\n    description     = "Traffic from ALB to ECS"\n    from_port       = 80\n    to_port         = 80\n    protocol        = "tcp"\n    security_groups = [var.ecs_sg] //comes from output from ecs stack\n  } \n
Run Code Online (Sandbox Code Playgroud)\n

现在在 ECS 中,我的安全组有类似的内容 ( ecs_sg)

\n
  ingress {\n    description = "Allow ALB to ECS"\n    from_port   = 80\n    to_port     = 80\n    protocol    = "tcp"\n    security_groups = [var.alb_sg] //comes from output from alb stack\n  }\n
Run Code Online (Sandbox Code Playgroud)\n

现在我有一些错误:

\n
\xe2\x94\x82 …
Run Code Online (Sandbox Code Playgroud)

amazon-ecs terraform aws-application-load-balancer

2
推荐指数
1
解决办法
1813
查看次数

AWS - 安全组是否足够,或者是否需要私有和公有子网?

假设我有一个 Web 服务器,它是一个 EC2 实例和一个 RDS。

EC2实例与RDS通信。

为了安全起见,我可以在应用程序负载均衡器后面设置此设置,并使用安全组仅允许入站流量通过 ALB。ALB 将仅通过 HTTPS 与互联网通信。

在内部,我可以设置一个安全组,仅接受来自 ALB 安全组的传入流量。我会将此安全组附加到 EC2 实例。然后,我可以拥有另一个安全组,仅允许来自 EC2 实例的传入流量。该安全组将附加到 RDS。

EC2 实例的安全组将允许通过 HTTPS 的出站流量用于更新、下载软件包等。

根据我对此设置如何工作的(有限)理解,与 RDS 的通信必须严格从 EC2 实例进行,并且与 EC2 实例的入站通信必须严格从 ALB 进行,ALB 配置为仅接受通过 SSL 的请求。

从安全性角度来说,这样的设置安全吗?

运营这样的机构会存在哪些风险?

配置私有和公共子集(如此处所示)有什么好处(如果有的话)?

amazon-ec2 amazon-web-services aws-security-group aws-application-load-balancer

2
推荐指数
1
解决办法
932
查看次数

AWS ECS集群请使用elb配置容器

我已经创建了一个集群、任务定义和负载均衡器,现在我正在 Ecs 集群上创建一个服务,但它显示此错误

在此输入图像描述

我的镜像中的 Docker 文件是

FROM node:alpine 
# Set the working directory to /app inside the container
# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm i 

# add app
COPY . ./
EXPOSE 8080

# start app
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)

amazon-ecs aws-application-load-balancer

2
推荐指数
1
解决办法
197
查看次数

AWS alb/elb 日志或 vpc 流日志是否包含用户 POST 请求的正文?

我只想对在 AWS 上运行的应用程序服务器中发生的事件进行事后分析。我们已经启用了 alb 日志和 vpc 流日志。应用程序通过 post 方法接受用户的请求,并在正文中包含数据。现在我很困惑:AWS alb/elb 日志或 vpc 流日志是否包含用户发布请求的正文?或者如果没有,我在哪里可以访问包含请求正文数据的日志?

注意:应用程序服务器位于 alb 后面的自动缩放组内,因此无法记录来自实例级别的日志。

logging amazon-web-services amazon-vpc aws-application-load-balancer

1
推荐指数
1
解决办法
2575
查看次数