场景
现在我们只有一个节点运行整个系统。我们想要的是区分“前端”节点和单个“后端”节点。如何正确部署Akka群集
- “前端”的节点(N节点):维护通过网页套接字连接与客户端的持久连接
- “后端”节点(1个节点):处理所有的请求未来形式的所有查询到前端节点数据库,并处理所需的域逻辑。
这种区分是必要因为某些原因:
- 没有达到limit of 70-100k persistent connections per frontend node
- 避免断开客户,同时部署的变化只影响到后端
工作做
我们将生活在前端节点上的演员与l在后台工作。我们已经使用akka.cluster.singleton.ClusterSingletonProxy
和ClusterSingletonManager
实例化了来自前端的后端节点ActorRef
,同时在后端真正实例化它们。
问题
我们如何做的部署考虑到阿卡群集节点唐宁通知?
据我理解the Akka Cluster documentation about downing和some comments on the akka mailing list,推荐的方法在处理这个过程会是这样的:
- 从http://akka.io/downloads/
- 复制下载的阿卡分布并粘贴
akka-cluster
庆典脚本连同jmxsh-R5.jar
在resources/bin/
文件夹(例如) - 在分布式软件包中包含该文件夹(我在01上添加了以下行):
mappings in Universal ++= (baseDirectory.value/"resources"/"bin" * "*" get) map (bin => bin -> ("bin/" + bin.getName))
- 虽然部署,设置节点将作为下部署手动调用bash脚本,如:
- 执行
bin/akka-cluster %node_to_be_deployed:port% down
- 部署新的代码版本
- 执行
bin/akka-cluster %deployed_node:port% join
- 执行
怀疑:
- 这是一步一步的过程是否正确?
- 如果待部署的节点在部署后将具有相同的IP和端口,是否需要制作
down
和join
? - 我们计划将一个前端和后端节点设置为种子节点。这样,所有群集都可以在仅部署前端节点的情况下进行重构,或仅对后端节点进行部署。这是对的吗?
谢谢!
嗨@Bennie。感谢您的答复。 据我了解,清理过程发生在节点被删除时,并通过[Akka Cluster文档](http://doc.akka.io/docs/akka/current/common/cluster.html#Membership_Lifecycle)我理解这是进一步的步骤(上 - >无法访问 - >下 - >删除)。 我的问题是如何将节点标记为关闭(上 - >不可访问 - >关闭)。我一直在玩[ConstructR&Consul](https://github.com/Tecsisa/constructr-consul),但它没有处理下行步骤(只有在加入新成员时列出种子节点)。 –