我有一个Elastic Beanstalk应用程序,最初配置为使用经典负载均衡器.我发现这在通过WebSocket连接时会导致错误.因此,我将应用程序配置为使用Application Load Balancer,因为我被告知ALB支持WebSockets.但是,似乎他们没有:尝试通过WebSocket连接到我的ALB时,我得到了完全相同的错误.
ALB实际上支持WebSocket吗?AWS文档与此相矛盾.该页面说它只支持HTTP和HTTPS.没有指南来设置ALB以支持WebSocket.
我在EC2实例上运行微服务(使用不同的编程语言).在生产时,当这些服务尝试相互交互时,我会注意到一些502 Bad Gateway Errors.此外,在所请求的服务的日志中,它没有显示任何api呼叫被击中
示例服务A调用服务B,但在服务B日志中没有任何内容表明来自服务A的呼叫.
可以是AWS负载均衡器问题吗?任何帮助,将不胜感激.提前致谢.
尝试解决方案:我们尝试在每个服务中创建http/https连接代理,但我们仍然遇到此问题.
更新:在lb日志中,会记录api,但目标响应代码显示" - ",而lb响应代码显示502或504.这是否意味着lb无法处理流量或我的应用程序?
还有什么可能的解决方案?
amazon-ec2 amazon-web-services microservices internal-load-balancer elastic-load-balancer
我正在弹性beanstalk上部署代码,它给了我这个错误.我正在使用nginx代理和弹性负载均衡器我禁用了两者,然后尝试部署代码,这给我以下错误.我无法找到任何解决方案
npm WARN不推荐使用node-uuid@1.4.7:使用uuid模块而不使用反向代理运行npm install:/opt/elasticbeanstalk/node-install/node-v6.9.1-linux-x64/bin/npm
设置npm config作业到1 npm配置作业设置为1运行npm with --production flag无法运行npm install.快照日志以获取更多详细信息.UTC 2017/01/03 11:47:22找不到应用程序npm调试日志在/tmp/deployment/application/npm-debug.log Traceback(最近一次调用最后一次):文件"/opt/elasticbeanstalk/containerfiles/ebnode.py ",第695行,在main()文件"/opt/elasticbeanstalk/containerfiles/ebnode.py"中,第677行,在主node_version_manager.run_npm_install(options.app_path)文件"/opt/elasticbeanstalk/containerfiles/ebnode.py"中,第136行,在run_npm_install中self.npm_install(bin_path,self.config_manager.get_container_config('app_staging_dir'))文件"/opt/elasticbeanstalk/containerfiles/ebnode.py",第180行,在npm_install中提升e subprocess.CalledProcessError:Command'[ '/opt/elasticbeanstalk/node-install/node-v6.9.1-linux-x64/bin/npm',' - production','install']'返回非零退出状态-9(Executor :: NonZeroExitStatus)
nginx node.js amazon-elastic-beanstalk elastic-load-balancer
使用Amazon ELB Application Load Balancer并使用Sticky Sessions时,负载均衡器会插入AWSALB第一个请求中指定的cookie .要让下一个请求粘贴到同一目标节点(EC2实例),cookie应该包含在该请求中.这样做时,负载均衡器似乎在对第二个请求的响应中插入了不同的cookie值.在第3个请求中包含此新cookie值时,我们会在响应中获得新的cookie值.等等...
(这与Sticky Sessions如何与Classic Load Balancer一起使用,其中cookie被命名AWSELB并保留其值,直到被客户端或负载均衡器丢弃.)
AWSALBcookie一直在改变值的原因似乎是(正如文档所述):
cookie的名称是AWSALB.这些cookie的内容使用旋转密钥加密.您无法解密或修改负载均衡器生成的cookie.
因此,即使cookie的内容可能相同,我们也无法分辨.
问题是对负载均衡器的请求是否必须始终包含最近收到的AWSALBcookie 值,或者是否可以发送一些先前收到的值(当然,来自同一个粘性会话).
如果这是一项要求,AWS ELB应用程序负载均衡器将无法为执行多个并行请求的客户端(在收到第一个AWSALBcookie之后)提供服务,而只能为以连续方式(一次一个)执行所有请求的客户端提供服务.
任何人都可以对此有所了解吗?
我正在尝试向我的EBS经典负载均衡器添加HTTPS侦听器.我使用CLI upload-certificate工具上传我的证书(使用GUI从未导致证书在负载均衡器表单上显示为选项.没有错误,日志,事件).
我根据AWS文档设置了监听器.
- 对于Listener端口,键入传入流量端口,通常为443.
- 对于Listener协议,请选择HTTPS.
- 对于Instance port,键入80.
- 对于Instance协议,请选择HTTP.
- 对于SSL证书,请选择您的证书.
我选择我的证书(Lets Encrypt),保存,我看到带有Pending Create标签的新听众.它永远不会从该状态转换,如果我刷新页面,记录就会消失.没有错误,没有日志,没有事件.真的想让AWS工作,但是Beanstalk非常错误.有什么建议?
ssl amazon-web-services amazon-elastic-beanstalk elastic-load-balancer
我正在尝试为ALB编写一个CloudFormation模板,但我仍然想要将ALB的HTTP侦听器流量重定向到HTTPS侦听器.文档仅提及转发/重定向到目标组.
我知道使用Web界面(AWS控制台)是可以实现的,我想避免这种情况.在服务器上处理它也不适合我.
这个ALB的功能是不是在CloudFormation中实现,而是存在于Console中?
https http-redirect aws-cloudformation elastic-load-balancer aws-load-balancer
我在我的应用程序中使用了独立乘客.目前我的应用程序在http和https上运行.我想将所有http请求重定向到https.我在我的应用程序中使用了负载均衡器.我读过这篇文章
https://aws.amazon.com/premiumsupport/knowledge-center/redirect-http-https-elb/
https://www.phusionpassenger.com/library/config/standalone/intro.html#nginx-configuration-template
我尝试了这两种方法
1)
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
2)
if ($http_x_forwarded_proto != "https") {
rewrite ^(.*)$ https://$server_name$REQUEST_URI permanent;
}
Run Code Online (Sandbox Code Playgroud)
我以同样的方式尝试了所有过程.但每次进入无限循环时,在我开始乘客之前,实例会因为请求超时太多而终止自身并创建新实例.
我无法弄清楚,无论是弹性负载平衡器还是乘客配置问题.我想当我停止乘客和用户尝试访问应用程序.生成请求超时以及由于创建了新实例.我不确定.
提前致谢 :)
ruby-on-rails passenger nginx amazon-web-services elastic-load-balancer
我有一个Web应用程序,它运行在Amazon AWS Elastic Load Balancer后面,附带3个实例.该应用程序有一个/refresh端点来重新加载参考数据.每当有新数据可用时都需要运行,每周发生几次.
我一直在做的是为所有实例分配公共地址,并独立刷新(使用ec2-url/refresh).我同意迈克尔对不同主题的回答,ELB背后的EC2实例不应允许直接公开访问.现在我的问题是我如何elb-url/refresh拨打电话到达负载均衡器后面的所有实例?
如果我可以从多个实例收集HTTP响应,那就太好了.但我现在不介意盲目刷新.
我在使用Terraform(v0.9.2)向ELB添加服务时遇到了问题(我正在使用:https://github.com/segmentio/stack/blob/master/s3-logs/main.tf).
当我运行时,terraform apply我收到此错误:
* module.solr.module.elb.aws_elb.main: 1 error(s) occurred:
* aws_elb.main: Failure configuring ELB attributes:
InvalidConfigurationRequest: Access Denied for bucket: my-service-
logs. Please check S3bucket permission
status code: 409, request id: xxxxxxxxxx-xxxx-xxxx-xxxxxxxxx
Run Code Online (Sandbox Code Playgroud)
我的服务如下:
module "solr" {
source = "github.com/segmentio/stack/service"
name = "${var.prefix}-${terraform.env}-solr"
environment = "${terraform.env}"
image = "123456789876.dkr.ecr.eu-west-2.amazonaws.com/my-docker-image"
subnet_ids = "${element(split(",", module.vpc_subnets.private_subnets_id), 3)}"
security_groups = "${module.security.apache_solr_group}"
port = "8983"
cluster = "${module.ecs-cluster.name}"
log_bucket = "${module.s3_logs.id}"
iam_role = "${aws_iam_instance_profile.ecs.id}"
dns_name = ""
zone_id = "${var.route53_zone_id}"
} …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-web-services terraform elastic-load-balancer
我正在尝试使用DevOps进行故障并且我遇到了运行状况检查请求超时失败.问题是我的Elastic Load Balancer向我的EC2实例发送运行状况检查并获得网络超时.我不确定我做错了什么.我正在学习本教程,并完成了所有步骤,包括"使用弹性负载均衡器".我的EC2实例似乎工作正常,我能够在EC2实例中成功地在端口9292上卷曲localhost.
我的ELB路由目标组通过HTTP打开端口9292,这是我的目标组中目标组的目标屏幕截图,它不健康.

我有一个VPC,我的EC2实例是其中的一部分,我的ELB连接到同一个VPC.我没有安装Apache,也没有安装nginx.据我了解,我不需要这些.我有一个Rails Puma服务器正在运行,我可以将成功的curl请求发送到服务器.
我的预感是我的ELB不允许到达我的EC2实例,导致网络超时和健康状况检查失败.我无法找到原因.有任何想法吗?这个SO帖子没什么用.我的安全组是否配置错误?还有什么可能阻止从ELB到我的EC2实例的路由请求?
另外,有没有办法查看我的EC2实例的网络请求/日志?我一直看到VPC流量记录,但我觉得有更简单的替代品.
这是我在AWS论坛上发布的内容,但无济于事.
更新:我可以从EC2实例中精确地卷曲目标的私有IP.我认为这不是目标实例,我认为这与安全组设置有关.我无法确定原因,因为我基本上允许从Load Balancer到EC2实例的所有流量.
ruby-on-rails amazon-ec2 amazon-web-services elastic-load-balancer