我有一个用于 5 个 appscale 虚拟机的简单同构(一个控制器,多个服务器)集群部署。在测试中,它们在我为我想要运行的 appengine 进程数设置的最大和最小边界内运行。然后,在负载下,一个节点出现故障。其余的继续运行。我单独的负载均衡器处理得很好。我很高兴裁员给了我韧性。好的。但是我如何让那个坏节点重新发挥作用呢?
如果快速回答是“不支持”,那么我真正的问题是:我将如何破解这个,使用 cassandra 作为我的数据存储?
有一个命令appscale-add-instances
会为你处理这个问题。这里有更多文档,但摘要是:
编写一个包含其 IP 地址的 YAML 文件。添加单个节点的示例是:
内存缓存:192.168.10.3
taskqueue_slave:192.168.10.3
应用引擎:192.168.10.3
这表明我们有一台机器运行 memcache、taskqueue 和 appengine 服务。
appscale-add-keypair --add_to_existing --ips your-yaml-file.yaml
以在新节点上同步 SSH 密钥。如果在 Amazon EC2、Google Compute Engine 或 Eucalyptus 上运行,请跳过此步骤。appscale-add-instances --ips your-yaml-file.yaml
以添加新节点!旧答案(为后代保存,以及我们如何实现此支持的演练):
所以快速回答是“不支持”。我看到添加崩溃节点的情况与添加新节点的情况非常相似,因此破解 AppScale 以使其工作的方法如下:
appscale-add-nodes
,该命令将节点列表添加到当前运行的 AppScale 部署中。add_nodes_from_ips
djinn.rb
appscale-add-nodes
连接到 Shadow AppController(其 IP 地址在 ~/.appscale/locations-appscale.yaml 中)并使用 IP 列表调用新的 SOAP 公开方法以启动 AppScale。您的 SOAP 公开方法应该调用start_appcontroller
每个 IP 地址,以便 AppController 守护程序在那里启动并可以连接回其他 AppController。要启动的角色列表由您决定 - 我建议使用开放角色,以便 AppScale 可以决定将新节点用于什么。
肯定有很多东西需要吸收,但我很高兴根据评论更新这个答案(当然,我会在 AppScale wiki 上为每个单独的部分添加一个页面,比如如何添加 SOAP AppController 的一般方法)。