目前我使用nginx + fastcgicaching响应。 我正在将我的应用程序迁移到AWS。 我构build了一个水平缩放的方法,但试图确定哪里最好把nginx + fastcgicaching。 我从我自己的研究中发现了一些解决scheme,都有明显的缺点。 使用AWS Elastic Load Balancer来平衡一组Web应用程序。 每个Web应用程序都运行它自己的nginx和Web服务器堆栈。 缺点:每台服务器上的caching需要加热 。 最坏的情况1 / n的命中率。 将nginx + fastcgi放在AWS ELB的前面,这样caching就集中在最高点。 缺点:单点故障 – 如果nginx死亡stream量不通过ELB。 增加了nginx实例。 我将不胜感激任何克服上述缺陷的常见体系结构的build议。
我试图build立一个需要访问互联网的Web服务器(nginx),同时也被连接到一个ELB,但我无法使这个解决scheme工作。 细节: 3个公共子网 一个 b C 3个私有子网 一个 b C 1 ELB 这有三个公共子网包含在其默认池中 1个公有子网中的NAT实例 我发现通过将子网指向IGW将公共子网连接到ELB是很有用的。 这些设置不考虑互联网访问的需要。 当我将单个NIC的路由表从IGW更改为NAT实例时,我可以访问互联网,但是我失去了连接到ELB的能力,反之亦然,当我更新路由表来使用IGW时,我失去了连接到互联网。 我可以分配一个EIP并以这种方式访问它,但是希望尽可能避免通过公共地址将这个服务器暴露给Internet。 我在想的是我可以1)在需要访问互联网的Web服务器上添加第二个NIC,这样他们就可以通过一个NAT实例进行操作,并且在公有子网中有一条腿连接到负载平衡器或2 )我可以使用NAT实例作为networking的网关。 有人有类似的东西吗?
我对安全性有一些担忧,想知道AWS将如何存储部署到ELB的SSL证书。 我有一个通配的SSL证书,用于我的域名,我想确保它不会在任何我不知道采取措施来保护它的地方持续存在。 我正在尝试在AWS上设置一个非常简单的映像服务器,它通过HTTPS提供服务。 我所做的就是在T2-micro上创build一个nginx服务器,它代表一个带有我的镜像的S3存储桶,放在ELB后面。 如果我把这个证书放在ELB上,那么证书最终会持续到哪里呢? 作为一个旁注,AWS实际上是否支持SSL卸载到ELB指向的实例? 我发现这个提示在一些文档中是可能的,但是找不到任何提示。
我需要一个静态IP地址来处理来自已知来源(伙伴)的SSLstream量。 IP需要保持静态的原因是合作伙伴需要这样做才能保持PCI合规性。 我们的服务器位于AWS Elastic Load Balancer(ELB)之后,无法提供静态IP地址; 这里有很多线索。 我的想法是在EC2中创build一个实例,其唯一目的是作为具有自己IP地址的反向代理服务器; 接受HTTPS请求并将其转发给负载均衡器。 有更好的解决scheme吗?
我正在build立DNS服务,我需要找出查询我的DNS服务器的位置。 显然任何使用Google公有DNS的人都是来自Google / 17networking,如果我做了geoip查找,它会parsing为美国,但服务器在爱尔兰。 我真的需要为每个IP运行traceroute来找出它有多远? 另外,bgp报告它是/ 23子网,但是我不知道如何获得这个信息。 http://bgp.he.net/ip/209.85.143.94 [root@test ~]# host 209.85.143.94 94.143.85.209.in-addr.arpa domain name pointer dy-in-f94.1e100.net. [root@test ~]# geoiplookup 209.85.143.94 GeoIP Country Edition: US, United States [root@test ~]# traceroute 209.85.143.94 traceroute to 209.85.143.94 (209.85.143.94), 30 hops max, 60 byte packets 1 31.222.167.2 (31.222.167.2) 1.344 ms 2.273 ms 2.135 ms 2 core6a-aggr325a-4.lon3.rackspace.net (92.52.77.106) 3.386 ms […]
我们的应用程序中存在一个问题,即客户端IP未通过以下设置传递给应用服务器。 USER ———> AWS ELB ———–> HAPROXY ———–>应用程序服务器(apache) 我们的ELB使用TCP监听器,并且启用了代理协议头。 在HA代理中,我们在haproxy.cfg中添加了“forwardfor”选项 我们可以通过“x-forwarded-for”标题获取http请求的客户端IP,但不能用于https。 感谢帮助确定我们设置中缺less的部分。 谢谢
我正在对我们的系统进行压力testing。 目前,我们在东部地区有5个大型的ELB背后的实例。 在西部地区,我用3个小实例(用JMeter)来锤击系统。 在做一个testing时,只会将应用程序实例推到CPU限制的80%-90%(当时的阻塞点),我看到一个奇怪的行为,ELB报告说所有5个实例都“停止服务 – 瞬间错误 – 请稍后再检查“,所有的实例停止获取请求,约5-10秒后,一切恢复正常。 这种情况每30秒发生一次。 但! 每次我运行testing都不会发生这种情况。 我只是跑了半小时的压力testing,相同的设置和一切工作完美。 到底是怎么回事? 顺便说一句,我的健康检查是 Ping Target: HTTP:80/index.html Timeout: 60 seconds Interval: 300 seconds Unhealthy Threshold: 10 Healthy Threshold: 2 所以这是没有办法的。 直到昨天,我从来没有碰到过这个。
我已经安装了mod_rpaf以从PHP,Apache日志等中的X-Forwarded-For头获取用户的IP地址。 不幸的是,它看起来像我必须通过RPAFproxy_ips设置明确设置哪些IP头将被尊重。 鉴于ELB没有一个静态的IP,我怎么能告诉mod_rpaf从任何IP,甚至任何10 *接受头。
IETF RFC 2616第4.2节允许一个请求包含具有相同字段名的多个头,只要插入的时间顺序被保留,并且它们的值可以用逗号分隔的值列表转换成单头。 http://tools.ietf.org/html/rfc2616#section-4.2 当且仅当该报头字段的整个字段值被定义为以逗号分隔的列表[即#(值)]时,具有相同字段名的消息报头字段可以存在于消息中。 必须将多个头域组合成一个“field-name:field-value”对,而不用改变消息的语义,把每个后续的域值附加到第一个域中,每个域都用逗号分隔。 因此,接收具有相同字段名的头字段的顺序对于组合字段值的解释是重要的,因此当消息被转发时,代理务必不改变这些字段值的顺序。 F5不会覆盖任何现有的X-Forwarded-For。 也不会将现有的X-Forwarded-For连接成一个逗号分隔的值。 相反,它将在集合的尾部插入额外的X-Forwarded-For。 但是有多个客户端,代理服务器,CDNs,stream量pipe理器,服务器的操作X-Forwarded-For集合的环境呢? 执行统一的做法似乎是有利的。 但是,最佳做法是什么? F5 BIG-IP默认的httpconfiguration文件插入标头在请求预先存在的XFF标头集合的末尾累积了一个额外的X-Forwarded-For ,以保持顺序。 AWS ELB鼓励将传入请求的多个X-Forwarded-For整合到包含逗号分隔的XFF IP列表的单个标头中,并加上用户主机地址,以保持顺序。 其他设备可以采用其他的变化。 是否存在针对异构环境的商定build议或事实标准? 此外,提供的任何时间戳数据将允许代码按照添加的时间顺序将X-Forwarded-For标题按照先前的XFF标题的操作可疑的情况明确地sorting。
亚马逊的负载平衡器有一个networking安全策略,可以吞吐ping和traceroute ICMP数据包。 它被列为安全组amazon-elb/amazon-elb-sg 。 就我个人而言,我发现这些工具在诊断问题方面非常有帮助,所以我希望能够在我的服务中使用它们。 我宁愿负载均衡器响应这些请求或转发它们。 有什么方法可以更改ELB上的安全组设置? 或者通过其他方式来validation到ELB的IP连接? 更新 很明显,在AWS控制台中我没有办法在新创build的ELB上设置SG,也不能在现有的ELB上更改SG。