我在经典负载均衡器上使用两个 ec2 实例。我的用户在分析过程中遇到 502 错误,尤其是在进行 ajax 调用时。换句话说,如果用户连接到一个服务器实例,则在使用程序过程中的 ajax 调用将定向到另一个服务器实例。这会导致该错误。我需要用户在他/她的会话期间定位到同一服务器实例。
在谷歌搜索上述问题后,我发现了这一点:
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/sticky-sessions.html
根据这些文档,我应该将粘性会话应用于我的负载均衡器。但是,它要求客户在其浏览器上启用 cookie。我真的不想这样。
对于这个问题还有其他解决方案吗?我真的很感激任何建议。
我正在尝试为负载均衡器设置 ACL,但Associated AWS resources在创建 Web ACL 时它没有显示在该部分中。
是Resource Type,Regional resources区域与我的(网络)负载均衡器 (us-west-2) 相同。
注意:我拥有管理员访问权限,因此这不是权限问题,至少对于我的 IAM 用户而言不是
acl amazon-web-services amazon-elb amazon-waf aws-application-load-balancer
我正在尝试通过基本命令在 docker 中使用flask socket.io。
当我运行gunicorn的单个工作人员时,一切工作正常,但是当我增加工作人员时,然后在客户端,它开始给出400错误请求,并且在服务器日志上,我看到无效的会话lWmxdNRmai59bRfLAAAA(此错误的进一步发生将记录为级别信息)。
这些是我正在使用的命令 Gunicorn --worker-class geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 2 application:app -b 0.0.0.0:5000
和application.py文件是
from gevent import monkey monkey.patch_all()
from flask import Flask from flask_socketio import SocketIO from flask import session
app = Flask(__name__)
app.config.from_object("settings.BaseConfig")
socket_app = SocketIO(
app,
cors_allowed_origins="*",
message_queue=settings.get_evn("CACHE_QUEUE_URL"),
async_mode="gevent",
)
socket_app.init_app(app, cors_allowed_origins="*")
Run Code Online (Sandbox Code Playgroud)
我正在使用 Redis 作为消息队列,并已验证消息队列 url 是否正确
使用aws负载均衡器来处理请求
我是新来的.我试图在elb的帮助下实现https.我在elb上配置了ssl证书以及端口443上的HTTPS(安全HTTP).我还配置了路由53,如快照所示.我已将elb分配给A-IPv4地址.但它仍然不适用于https,每当我试图点击https://www.mypleaks.com它不起作用,但它的工作http: //www.mypleaks.com,www.mypleaks.com,mypleaks. COM.
请在下面找到elb屏幕截图: -
https amazon-web-services amazon-elb amazon-route53 amazon-elastic-beanstalk
ELB 后面的 Docker 容器获得动态端口,这些端口自动向 ELB 注册,以便它们可以将流量重定向到它们。
为了让 ELB 可以访问您的 Web 服务器,您必须打开所有这些源自您的安全组内的端口 1024 - 65535。
有没有办法不必向一系列端口开放安全组,而只向 ELB 使用的罐开放?
amazon-web-services amazon-ecs amazon-elb aws-security-group
我在这里阅读AWS_Blue_Green_Deployments论文,并试图了解下一篇:
在部署时,您只需将绿色组附加到现有负载均衡器,即可将流量引入新环境.对于HTTP/HTTPS侦听器,负载均衡器支持绿色Auto Scaling组,因为它使用最不完整的请求路由算法,如Elastic Load Balancing开发人员指南中所述.
不幸的是-我看不到的解释(或-只是不明白吧)的弹性负载平衡开发者指南 这里.
有人可以解释一下这部分:
负载均衡器有利于绿色Auto Scaling组,因为它使用最不完整的请求路由算法
为什么ELB会支持新附加的ASG用于流量?什么是AWS中的" 最不完善的请求路由算法 "?
我是boto3的新手,并且正在使用它来自动注册和从负载均衡器注销EC2实例的过程.
这是我的示例Python代码:
import boto3
elbList = boto3.client('elb')
bals = elbList.describe_load_balancers()
for elb in bals['LoadBalancerDescriptions']:
print 'ELB Name:' + elb['LoadBalancerName'] + 'ELB scheme type: ' + elb['Scheme']
Run Code Online (Sandbox Code Playgroud)
此脚本仅列出我的所有经典负载均衡器,但未列出我的应用程序负载均衡器.
如何列出我的应用程序负载均衡器并列出附加到它的所有实例?
好吧,这似乎是一个愚蠢的问题,但我不得不说我有点困惑。我不明白为什么我的 ELB(经典)--> EC2 运行状况检查在 AWS 中失败。
因此,按照我配置的方式,我的 ELB 的运行状况检查将尝试 ping 上的实例TCP:8080。
我的 ELB 上有 3 个端口侦听器,根据我的理解,这应该不重要,因为它处理源自外部的流量,但我将列出它,以防我忽略某些内容:1.) HTTP:80 --> HTTP:8080
2.) HTTPS:443 --> HTTP:8080
3.)TCP:2222 --> TCP:2222
我还尝试将运行状况检查配置为 pingTCP:2222以防万一,同样的交易。
此外,我的 EC2 还拥有启用 ELB 安全组的安全TCP:8080组TCP:2222。
它失败的原因是因为虽然 EC2 实例允许流量,但它仍然需要在该端口上运行某些东西来为流量提供服务?
目前,所有 EC2 都是 AWS 提供的简单 Linux AMI。
请原谅我对网络空间有点陌生。
如果我创建 ELB 并尝试附加私有子网实例,我的运行状况检查会失败:OutOfService。
问题 1:我可以获得内部/私有 IP(不是 IP,而是 dns 名称)用于负载平衡。即无法访问互联网?
问题 2:如果我的应用程序负载均衡器有一个公共 dnsname。如何附加私有子网中没有弹性 IP 的 EC2 实例(无法访问 Internet)。我正在寻找最好的方法。我们是否应该——
ELB --> 公有子网 EC2 实例(代理配置- */* [private_ip]:[port]/* ) ---> 来自私有子网/EC2 实例的服务,并在此处进行运行状况检查。
我有一个 Laravel 应用程序部署在带有经典负载均衡器的 AWS Elastic Beanstalk 上。不知何故,用户会话在不规则的时间到期。有时它在登录后立即过期,大多数情况下在登录后几分钟。在某些情况下,它需要几个小时才能过期。但在本地主机上,这不会发生。
我已将 Laravel 应用程序中的会话持续时间配置为 10 小时,这在本地主机上运行良好,但不知何故在 AWS ELB 上不起作用。
我怀疑 AWS 在一天内多次重置应用程序会话。如果是这种情况,我该如何克服?如果不是这种情况,那么可能是什么原因造成的?
我的 Rails 6 应用程序可以在 EC2 实例中的开发模式下正常工作。但是当配置使用生产模式时。负载均衡器无法进行运行状况检查,也无法运行应用程序。
我的健康检查:
安全性:负载均衡器
安全性:Rails 应用程序
负载均衡器正在开发中
这里是与负载均衡器一起使用的开发
启动导轨:
rails s -p 3000 -b 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
然后回应
=> Booting Puma
=> Rails 6.0.3.2 application starting in development
=> Run `rails server --help` for more startup options
Puma starting in single mode...
* Version 4.3.5 (ruby 2.6.3-p62), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Run Code Online (Sandbox Code Playgroud)
配置/环境/development.rb
Rails.application.configure do
config.hosts << "xxxxxxxx.us-east-2.elb.amazonaws.com" #This is public dns of load balance
config.cache_classes …Run Code Online (Sandbox Code Playgroud) 这对后端来说是一件非常痛苦的事情,浪费了好几个小时,而且仍然无法弄清楚 AWS CloudFormation 的一行语法。
如果 AWS 的人员可以更好地编写他们的文档 - 只需多花一点时间 - 这对开发人员来说会更容易。
我正在尝试使用 CloudFormation 来部署具有 VPC Link 和 NLB 的 API Gateway。目标是将所有请求代理传递到 NLB:
ApiProxyMethod:
Type: AWS::ApiGateway::Method
Properties:
RestApiId: !Ref ApiGatewayRestApi
ResourceId: !Ref ApiProxyResource
# AuthorizationScopes: # https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html#cfn-apigateway-method-authorizationscopes
AuthorizationType: COGNITO_USER_POOLS
AuthorizerId: !Ref ApiAuthorizer
HttpMethod: ANY
OperationName: "ProxyAllRequests"
Integration:
ConnectionType: VPC_LINK
ConnectionId: !Ref ApiGatewayVpcLink
IntegrationHttpMethod: ANY
PassthroughBehavior: String
Type: "VPC_LINK" # Member must satisfy enum value set: [HTTP, AWS_PROXY, HTTP_PROXY, AWS]
Uri: "http://NLB-myapp-internal-beta-12345.elb.ap-northeast-1.amazonaws.com/{proxy}"
Run Code Online (Sandbox Code Playgroud)
然而,这失败了,它抱怨错误的Type值:Member must satisfy enum value set: [HTTP, …
amazon-web-services amazon-elb aws-cloudformation amazon-vpc aws-api-gateway
我找不到boto3的代码.我可以单独获取elb名称和InstanceID,但无法将它们链接在一起以查找ELB名称的附加实例.
amazon-elb ×13
amazon-ec2 ×3
boto3 ×2
acl ×1
ajax ×1
amazon-ecs ×1
amazon-vpc ×1
amazon-waf ×1
aws-application-load-balancer ×1
flask ×1
gunicorn ×1
https ×1
laravel ×1
session ×1