我们有两个 Nginx 正在运行,第一个 Nginx 在检查了一些将流量转发到另一个 Nginx 的规则后接收到流量,现在我们正在将其转移到 AWS ALB,但没有找到任何将流量从一个 ALB 转发到另一个 ALB 的选项。
请帮助我如何做到这一点。
我知道这两个 ALB 是一个设计问题,但目前我们无法改变这一点,团队将来会这样做。
我正在使用云形成模板来构建基础架构(ECS Fargate集群)。模板已成功执行,并且堆栈已成功创建。但是,任务失败,出现以下错误:
Task failed ELB health checks in (target-group arn:aws:elasticloadbalancing:eu-central-1:890543041640:targetgroup/prc-service-devTargetGroup/97e3566c8b307abf)
Run Code Online (Sandbox Code Playgroud)
我没有得到什么和在哪里寻找解决此问题的方法。由于它是fargate集群,因此我无法获得如何登录到容器并执行一些运行状况检查查询以进一步调试的信息。
有人可以帮我进一步指导并帮助我吗?由于此错误,我什至无法访问我的Web应用程序。因为如果ALB不健康,ALB不会路由它
我做了什么
经过一番谷歌搜索后,我发现了这篇文章:https : //aws.amazon.com/premiumsupport/knowledge-center/troubleshoot-unhealthy-checks-ecs/
但是,我想这与fargate中的EC2兼容性有关。但就我而言,EC2不存在。
如果您有感觉,我也可以粘贴整个模板。
请帮忙
对于 ALB - “您必须从至少两个可用区指定子网。”
对于 NLB - “您可以从一个或多个可用区指定子网。”
强制执行 2 个可用区作为 ALB 的 MUST 要求而不是 NLB 的原因是什么?
我在 ALB 后面有一个 lambda 目标。我的 lambda 是一个 python lambda。
def handler(event, context):
response = {
"statusCode": 200,
"statusDescription": "200 OK",
"isBase64Encoded": False,
"headers": {
"Content-Type": "text/html; charset=utf-8"
}
}
Run Code Online (Sandbox Code Playgroud)
不过,在使用 curl 访问我的 url 时,我收到了一个
< HTTP/1.1 200 OK
< Server: awselb/2.0
< Date: Sat, 06 Apr 2019 04:46:50 GMT
< Content-Type: application/octet-stream
< Content-Length: 0
< Connection: keep-alive
Run Code Online (Sandbox Code Playgroud)
注意Content-Type
是一个八位字节流,它会导致浏览器将响应下载为文件而不是显示它。我尝试向"Foo":"Bar"
响应添加额外的标头,但它们没有出现在 curl 响应中。ALB 似乎正在吃我的 lambda 提供的标头。我怎样才能解决这个问题?
我正在尝试为这个看起来很常见的问题找到解决方案。
这适用于在 8088 端口上公开一项服务:
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myingress
namespace: myns
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/healthcheck-path: /ping
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/tags: Environment=dev,Team=test
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 8088}]'
spec:
rules:
- host: myhost
http:
paths:
- path: /*
backend:
serviceName: firstservice
servicePort: 8088
Run Code Online (Sandbox Code Playgroud)
如何使用 ONE Ingress 为两种服务实现相同的目标?
提前致谢。
我有一个使用 Windows 身份验证的 ASP .NET WCF 服务 Web。将 Web 服务部署到服务器 (Windows Server 2012) 并在 IIS 上启用 Windows 身份验证后,我使用 localhost 直接访问服务器的页面。它提示输入凭据,我提供一次 AD 用户名/密码,它就可以工作。
现在,如果我在 AWS 应用程序负载均衡器后面有相同的服务器,并且我访问了映射到应用程序负载均衡器的 Web 服务的 DNS,那么就会注意到这里存在问题。
将弹出用于输入 Windows 凭据的窗口。但是当我输入正确的凭据时,它不会接受它们。反复提示输入用户名/密码?发生了什么?ALB 不支持 IIS 的 AD 集成身份验证?
有任何想法吗?
windows-authentication amazon-web-services iis-7.5 aws-alb aws-application-load-balancer
我正在 AWS 上创建一个 elasticsearch 托管服务;
创建服务时,不会创建显式实例,您只会获得一个 url/端点;
我想通过 ALB 公开服务,但是在创建相应的目标组时,我不得不在instance
和之间进行选择ip
,而我唯一拥有的是端点 ( url
);
如何解决这个问题?
我有一个 lambda 函数,它返回 base64 字符串,当我从它的代码中调用 lambda 时,它可以工作,但是当我在 ALB 后面调用 lambda 并且 base64 字符串很大时,ALB 给我错误 502 Bad Gateway。注意:对于小字符串 ALB 也有效。
// Lambda function handler
'use strict';
module.exports.handler = async (event, context) => {
// ALB expects following response format
// see: https://docs.aws.amazon.com/lambda/latest/dg/services-alb.html
const response = {
headers: {
'Access-Control-Allow-Origin': '*',
'Content-Type': 'application/json',
},
isBase64Encoded: true,
statusCode: 200,
statusDescription: '200 OK',
};
// ALB gives error 502 when buffer size is large
const answer = 'This is my audio buffer'.toString('base64');
response.body = …
Run Code Online (Sandbox Code Playgroud) 我不是 AWS 专家,但尝试做一些简单的事情,例如创建应用程序负载均衡器、向其中添加目标组并尝试添加侦听器。接下来发生的事情让我感到困惑。在 AWS 控制台 -> EC2 -> 负载均衡器 -> 侦听器 -> 添加侦听器页面上,我选择 Http:80,在默认操作下我添加“转发到”,从下拉列表中选择我的实例,单击“检查”按钮,显示在默认操作下添加的规则。然后我点击屏幕上的第二个保存按钮,刷新/返回然后你去 - >我的听众消失了。以前有人遇到过这个问题吗?我检查了这个问题:AWS 经典负载均衡器侦听器未创建,然后消失。- 解决方案对我不起作用(我已经按下了第二次保存,它位于屏幕顶部,而不是 ALB 底部)。任何指针将不胜感激
我正在尝试使用 OIDC 来实现 ALB 以获取授予类型的客户端凭据。
我已在 ALB 的“侦听器”选项卡中给出了发行者、令牌端点、客户端 ID 和客户端密钥、授权端点和用户信息端点
但我在尝试访问 url 时收到 400 invalid redirect_uri 。
aws-alb ×10
aws-application-load-balancer ×2
aws-lambda ×2
amazon-ec2 ×1
amazon-elb ×1
aws-elb ×1
aws-fargate ×1
iis-7.5 ×1
kubernetes ×1
node.js ×1