标签: elastic-load-balancer

应用程序负载均衡器是否支持WebSockets?

我有一个Elastic Beanstalk应用程序,最初配置为使用经典负载均衡器.我发现这在通过WebSocket连接时会导致错误.因此,我将应用程序配置为使用Application Load Balancer,因为我被告知ALB支持WebSockets.但是,似乎他们没有:尝试通过WebSocket连接到我的ALB时,我得到了完全相同的错误.

ALB实际上支持WebSocket吗?AWS文档与此相矛盾.该页面说它只支持HTTP和HTTPS.没有指南来设置ALB以支持WebSocket.

amazon-web-services websocket elastic-load-balancer

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

AWS Load Balancer 502

我在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

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

返回非零退出状态-9

我正在弹性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

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

是否需要最新的AWSALB cookie?(AWS ELB应用程序负载均衡器)

意见

使用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之后)提供服务,而只能为以连续方式(一次一个)执行所有请求的客户端提供服务.

任何人都可以对此有所了解吗?

amazon-web-services sticky-session elastic-load-balancer

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

未创建AWS经典负载均衡器侦听器,然后消失.

我正在尝试向我的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

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

AWS CloudFormation应用程序负载均衡器 - 如何将HTTP侦听器重定向到HTTPS侦听器?

我正在尝试为ALB编写一个CloudFormation模板,但我仍然想要将ALB的HTTP侦听器流量重定向到HTTPS侦听器.文档仅提及转发/重定向到目标组.

我知道使用Web界面(AWS控制台)是可以实现的,我想避免这种情况.在服务器上处理它也不适合我.

这个ALB的功能是不是在CloudFormation中实现,而是存在于Console中?

https http-redirect aws-cloudformation elastic-load-balancer aws-load-balancer

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

如何使用aws弹性负载均衡器强行将http请求重定向到独立乘客的https?

我在我的应用程序中使用了独立乘客.目前我的应用程序在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

http://code.eklund.io/blog/2015/03/17/managing-rewrites-for-a-rails-app-on-heroku-with-nginx-plus-phusion-passenger/

我尝试了这两种方法

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

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

如何使HTTP呼叫到达amazon AWS负载均衡器后面的所有实例?

我有一个Web应用程序,它运行在Amazon AWS Elastic Load Balancer后面,附带3个实例.该应用程序有一个/refresh端点来重新加载参考数据.每当有新数据可用时都需要运行,每周发生几次.

我一直在做的是为所有实例分配公共地址,并独立刷新(使用ec2-url/refresh).我同意迈克尔对不同主题的回答,ELB背后的EC2实例不应允许直接公开访问.现在我的问题是我如何elb-url/refresh拨打电话到达负载均衡器后面的所有实例?

如果我可以从多个实例收集HTTP响应,那就太好了.但我现在不介意盲目刷新.

amazon-ec2 amazon-web-services elastic-load-balancer

12
推荐指数
4
解决办法
4780
查看次数

Terraform ELB S3权限问题

我在使用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

12
推荐指数
3
解决办法
7019
查看次数

AWS Load Balancer EC2运行状况检查请求超时失败

我正在尝试使用DevOps进行故障并且我遇到了运行状况检查请求超时失败.问题是我的Elastic Load Balancer向我的EC2实例发送运行状况检查并获得网络超时.我不确定我做错了什么.我正在学习本教程,并完成了所有步骤,包括"使用弹性负载均衡器".我的EC2实例似乎工作正常,我能够在EC2实例中成功地在端口9292上卷曲localhost.

EC2实例安全组设置: 描述

弹性负载均衡器设置: 在此输入图像描述

我的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

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