这可能看起来很模糊,也许相当利基,但忍受着我。
情况是:
我们想要做的是删除SPOF,让多个服务器运行这个redirect。 为了使用ELB,将根域设置为CNAME是违反RFC的我相信,我不相信我们的DNS主机将允许我们这样做。
鉴于这些限制,我们应该怎么做,以消除这个SPOF? 无可否认,如果它以任何理由消失,影响不大,但企业想要降低这种风险。
如前所述,S3静态托pipe是一个很好的方法,但它需要一个以Route 53托pipe的别名logging,而且它不支持TLS。
用于S3存储区托pipe的站点的TLS(适用于支持SNI的浏览器)可以通过在S3前面使用CloudFront来完成,但是也需要在Route 53中使用Alias。
请注意,别名不是一种DNSlogging。 Alias是Route 53 DNS服务器的一个内部configuration指令,它说:“当我们收到这个logging的请求时,我们将在内部 (在Route 53数据库中)查找并返回如果我们返回相同的结果实际上已经收到另一个不同的logging的请求。“ 最后,它提供了类似于CNAME的function,但是不是告诉parsing器将一个主机名视为另一个主机名,而是查找其他logging以获取更多信息,Route 53在内部执行该查找步骤parsing器对于实现用于满足请求的实际机制没有任何要求……而这种内部(而非外部)查找机制就是为什么Alias在区域顶点logging工作的原因,而CNAME则不这样做。
除非您拥有可以适应dynamicIP地址的DNS机制,否则,由于S3和CloudFront上的托pipe站点要求,所以还没有一个可靠的方法来消除SPOF,尽pipe其他一些DNS提供程序也支持类似于Route 53的Aliaslogging的function。 例如,CloudFlare称其为“CNAME Flattening”,其DNS服务器在接收到A-Record的查询时,在内部查询不同的 Alogging(在不同的域中,例如从s3.amazonaws.com或cloudfront.net),然后将该答案返回给请求者。 这完成了与Alias相同的净结果。 这对于第三方DNS服务器来说并不是真正的“内在”,但是由于第二个请求被发回,客户端parsing器在行为中看不到任何exception。
2015年1月, AWS发布了EC2实例自动恢复function ,该function将拆除并重build一个CloudWatch可用性检查失败的实例,并创build一个具有相同“全部”实例的实例 – 实例ID,EBS卷,弹性IP等。这个特性适用于几个实例类,包括t2类。
或者,作为最后的手段,您可以通过configuration多个redirect机器并在您的区域顶点提供多个Alogging来实现循环“负载平衡”,从而部分缓解SPOF。 这将减less,但不能消除其中一台机器中断的影响,尽pipe这种解决scheme的可行性主要取决于浏览器行为。 这不会被认为是一个“高可用性”的解决scheme,但(可能)总比没有好。
为了避免另一个redirect,如果可能的话,我想在那里做TLS。
如果我正确地理解了这个评论,那么你实际上必须在那里做TLS。 如果我将浏览器指向https://example.com ,那么该terminal必须说TLS并且拥有主机名的有效证书,否则链接将被有效破坏 – 如果服务器无法redirect以保持浏览器快乐的方式来协商TLS。
有更好的方法来处理顶点域,而不是在EC2上托pipe“redirect器”实例。
您可以在Amazon S3上托pipe静态网站,可以将其configuration为将您的请求redirect到特定域。 如果你使用的是Route53–有一个“别名”loggingtypes来帮助你实现这一点。 其他DNS提供商也有类似的。
按照这篇博客文章进入详细信息https://aws.amazon.com/blogs/aws/root-domain-website-hosting-for-amazon-s3/
S3是容错服务,所以你肯定会以相当低的成本移除你的SPOF。