我有一个在Amazon AWS Elastic Load Balancer后面运行的Web应用程序,附加了3个实例。该应用程序有一个/刷新
endpoint来重新加载参考数据。它需要在新数据可用时运行,这每周会发生几次。
我一直在做的是为所有实例分配公共地址,并独立刷新(使用ec2 url/refresh)。我同意Michael关于另一个主题的回答,ELB背后的EC2实例不应允许直接公共访问。现在我的问题是,如何调用elb url/refresh,以到达负载平衡器后面的所有实例?
如果我可以从多个实例收集HTTP响应,那就太好了。但我现在不介意盲目地刷新。
您不能通过负载均衡器发出这些请求,因此您必须打开实例的安全组以允许来自ELB以外的源的传入流量。不过,这并不意味着您需要将其开放给所有切流量。您可以简单地在安全组中将IP地址列入白名单,以允许来自特定计算机的请求。
如果您不想将公共IP地址添加到这些服务器,那么您需要在VPC内的EC2实例上运行类似curl
命令的内容。在这种情况下,您只需打开安全组即可允许来自VPC中存在的某些服务器(或服务器组)的流量。
但考虑到应用程序的限制,这可能是不可能的
这样做的目的是,在不影响数据完整性或性能的情况下,可以通过添加新实例来向外扩展,也可以通过删除实例来向内扩展。
一种选择是将应用程序更改为将参考数据重新加载的结果存储到非实例数据存储中,例如缓存或数据库(例如Elasticache或RDS),而不是存储在内存中。
如果应用程序能够做到这一点,那么您只需要在一台服务器上点击刷新endpoint-它将重新加载参考数据,执行任何需要的分析和操作,以适合应用程序的方式高效地存储数据,并将其存储到数据存储,然后,所有实例都可以通过共享数据存储访问刷新的数据。
虽然向数据存储添加往返会增加延迟,但为了应用程序的一致性,这通常是值得的-在当前的模型下,如果一台服务器在刷新参考数据方面落后于其他服务器,如果ELB不使用粘性会话,则通过ELB的请求将返回不一致的数据,具体取决于它们分配给的服务器。
我解决这个问题的方法之一是
此解决方案的主要胜利是
希望这是有用的。
问题内容: 我正在尝试将所有传入的Traefik从http重定向到https,用于Web应用程序,该应用程序从具有自定义端口的docker容器中获取。 如果我构建了这个docker compose文件,并扩展了应用程序,一切将按预期工作。我可以请求应用程序的http和https,但是我尝试实现仅提供https并将http重定向到https的目的。 由于我使用的是Docker-Compose文件,因
当在处理SSL连接并将其作为HTTP发送给您的EC2负载平衡器后面时,什么是一种干净的Symfony方式来确保HTTPS在Symfony2中使用。 如果你做了类似的事情requires_channel你会在HTTPS的初始更改后得到一个重定向循环,因为在网络服务器上你仍然在做HTTP。网址确实显示了HTTPS,亚马逊也提供了一个X-FORWARDED-PROTO标头来使用。 有没有一种干净的方法让
目标是在一个简单的堆栈中包含 HTTP/2 支持:在多个 EC2 实例中部署的 Web 应用程序是启用了 PROXY 协议策略 (SSL:443 ➝ TCP:80) 的传输级 CLB,以便卸载 SSL/TLS 并平衡传入的 HTTPS 流量。 PROXY协议的几个原因:(1)地理定位逻辑的执行;(2)执行简单的访问控制规则;(3)日志记录。所有这些功能都需要访问可靠的(即不可轻易伪造的)客户端IP
我有一个Wordpress网站在AWS EC2实例上运行。这是通过AWS弹性负载平衡器提供的,它使用我从Amazon获得的证书启用了HTTPS。 其目的是为该网站提供http和https版本。加载http版本可以正常工作。 然而,当我加载https版本时,会出现混合内容错误,因为总是返回http链接。负载平衡器的工作方式是TLS终止于LB,并通过端口80与实际EC2实例通信。因此,实例本身上没有H
我想将所有使用超文本传输协议的用户重定向到https。然而,我支持aws云前负载均衡器。 如何确定nodejs中请求的原始客户端协议? 如何重定向用户?这是使用节点的正确方法还是负载均衡器/云前端有其他可能性?
负载均衡(Load balancing)是一种计算机网络技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 使用带有负载均衡的多个服务器组件,取代单一的组件,可以通过冗余提高可靠性。负载均衡服务通常是由专用软体和硬件来完成。 负载均衡最重要的一个应用是利用多台服务器提供单一服务,这种方案有