Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Deployment 什么';使用EC2可用性区域的最佳实践是什么?_Deployment_Amazon Ec2_Amazon - Fatal编程技术网

Deployment 什么';使用EC2可用性区域的最佳实践是什么?

Deployment 什么';使用EC2可用性区域的最佳实践是什么?,deployment,amazon-ec2,amazon,Deployment,Amazon Ec2,Amazon,我正在EC2上重新启动一个站点(每天访问量约为5mm以上),对如何在不同的数据中心部署节点感到困惑。我最基本的设置是Varnish服务器后面的两个节点 我是否应该在不同的可用性区域中有两个Varnish实例,每个实例都有与共享RDS数据库通信的WWW节点?每个Varnish实例都可以通过Amazon的负载平衡器进行负载平衡 比如: 1个负载平衡器正在与: 弗吉尼亚州的Varnish,它与自己的美国东x节点对话 加州的Varnish,它与自己的us-west-x节点对话 在多个数据中心部署对我

我正在EC2上重新启动一个站点(每天访问量约为5mm以上),对如何在不同的数据中心部署节点感到困惑。我最基本的设置是Varnish服务器后面的两个节点

我是否应该在不同的可用性区域中有两个Varnish实例,每个实例都有与共享RDS数据库通信的WWW节点?每个Varnish实例都可以通过Amazon的负载平衡器进行负载平衡

比如:

1个负载平衡器正在与:

  • 弗吉尼亚州的Varnish,它与自己的美国东x节点对话
  • 加州的Varnish,它与自己的us-west-x节点对话

在多个数据中心部署对我来说是一个新概念,因此非常感谢您的帮助!谢谢

我们广泛使用AmazonEC2来进行负载平衡和容错。虽然我们仍然没有广泛使用Amazon提供的负载平衡器,但我们有自己的负载平衡器(在Amazon之外运行)。Amazon承诺负载均衡器永远不会崩溃,它们在内部具有容错能力,但我还没有对此进行足够的测试

通常,我们在每个可用性区域中托管两个实例。一个充当到真实服务器的镜像服务器。如果其中一台服务器出现故障,我们会将客户发送到另一台服务器。但最近亚马逊显示了一种模式,即单个可用性区域经常下降

因此,我认为明智的方法是像您提到的那样跨可用性区域设置服务器。我们使用postgres,因此可以跨实例复制数据库中的内容。对于9.0,二进制复制非常适合双向复制。这样,两台服务器都可以在启动时承担负载,但当可用性区域确实关闭时,所有用户都会被发送到一台服务器。因为有一个公共数据库可用,所以用户去哪里并不重要。只是,如果他们转到错误的服务器,他们将经历一个轻微的缓慢


通过这种方法,您可以对网站进行串联更新。更新一个,确保它运行正常,然后更新下一个。因此,即使服务器未能升级,整个网站也始终处于运行状态。

当一个可用区域出现故障时,如何将客户发送到其他服务器?我们的定制负载平衡器将每分钟对服务器进行负载检查。我们使用子域url来指导客户。因此,如果集群关闭,我们会向它们发送一个不同的子域url。amazon负载平衡器充当抽象层,在内部将http请求路由到服务器。它通过从服务器请求网页,每10秒检查一次可用性。您只需输入blank.html即可。如果实例关闭,amazon将不会向该服务器发送任何请求。