如何在Appscale上重新启动崩溃的节点?

时间:2012-09-16 13:44:11

标签: failover appscale

我有一个简单的同源(一个控制器,几个服务器),5个appscale虚拟机的集群部署。在测试中,他们在我设置的最大和最小边界内运行我想要运行的appengine程序的数量。然后,在负载下,一个节点发生故障。其余的继续运行。我的独立负载平衡器处理得很好。我很高兴冗余能够让我恢复活力。尼斯。但是,如何让这个节点重新发挥作用呢?

如果快速回答是“它不受支持”,那么我真正的问题是:如何使用cassandra作为我的数据存储区进行黑客攻击?

1 个答案:

答案 0 :(得分:0)

有一个名为appscale-add-instances的命令可以为您解决此问题。还有更多文档here,但摘要是:

  1. 确保您的新计算机安装的AppScale版本与当前正在运行的计算机相同。
  2. 编写包含其IP地址的YAML文件。添加单个节点的示例如下:

    memcache:192.168.10.3

    taskqueue_slave:192.168.10.3

    appengine:192.168.10.3

  3. 这表明我们有一台运行memcache,taskqueue和appengine服务的机器。

    1. 运行appscale-add-keypair --add_to_existing --ips your-yaml-file.yaml以在新节点上同步SSH密钥。如果在Amazon EC2,Google Compute Engine或Eucalyptus上运行,请跳过此步骤。
    2. 运行appscale-add-instances --ips your-yaml-file.yaml添加新节点!

    3. 旧答案(为子孙后代保存,以及我们如何实施此支持的演练):

      所以快速回答是“它不受支持”。我看到添加崩溃节点的情况与一般添加新节点的情况非常相似,因此破解AppScale使其工作的方式如下:

      1. 查看AppScale工具(AppScale/appscale-tools on github)并在名为appscale-add-nodes的bin中创建一个新命令,该命令将一系列节点添加到当前正在运行的AppScale部署中。
      2. 在AppController(AppScale/appscale on github)的主AppScale代码(AppController/djinn.rb)中添加一个新的SOAP暴露方法,名为add_nodes_from_ips(请参阅djinnServer.rb了解如何公开方法通过SOAP及其在djinn.rb中的定义来了解它们如何实现它),它接受一个参数,即作为AppScale节点启动的IP列表。
      3. appscale-add-nodes连接到Shadow AppController(其IP地址位于〜/ .appscale / locations-appscale.yaml中)并使用IP列表调用新的SOAP暴露方法以启动AppScale。< / LI>

        您的SOAP暴露方法应该在每个IP地址上调用start_appcontroller,以便在那里启动AppController守护程序并可以连接回其他AppControllers。要启动的角色列表取决于您 - 我建议使用open角色,以便AppScale可以决定使用新节点的内容。

        这肯定是很多东西,但我很高兴在回复评论时更新这个答案(当然,我会在AppScale维基上为每个部分添加一个页面,如何通常将SOAP方法添加到AppController中。