1

我有一个用于 5 个 appscale 虚拟机的简单同构(一个控制器,多个服务器)集群部署。在测试中,它们在我为我想要运行的 appengine 进程数设置的最大和最小边界内运行。然后,在负载下,一个节点出现故障。其余的继续运行。我单独的负载均衡器处理得很好。我很高兴裁员给了我韧性。好的。但是我如何让那个坏节点重新发挥作用呢?

如果快速回答是“不支持”,那么我真正的问题是:我将如何破解这个,使用 cassandra 作为我的数据存储?

4

1 回答 1

0

有一个命令appscale-add-instances会为你处理这个问题。这里有更多文档,但摘要是:

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

    内存缓存:192.168.10.3

    taskqueue_slave:192.168.10.3

    应用引擎:192.168.10.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以添加新节点!

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

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

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

您的 SOAP 公开方法应该调用start_appcontroller每个 IP 地址,以便 AppController 守护程序在那里启动并可以连接回其他 AppController。要启动的角色列表由您决定 - 我建议使用开放角色,以便 AppScale 可以决定将新节点用于什么。

肯定有很多东西需要吸收,但我很高兴根据评论更新这个答案(当然,我会在 AppScale wiki 上为每个单独的部分添加一个页面,比如如何添加 SOAP AppController 的一般方法)。

于 2012-09-20T21:43:44.773 回答