当前位置: 首页 > 知识库问答 >
问题:

如何优雅地更新形成Hazelcast集群组的ECS-service?

欧阳玺
2023-03-14

我们有一个ECS-service(EC2 ECS),有几个任务组成一个Hazelcast集群组(Hazelcast:3.10.6,HazelCast-AWS:2.2,我们使用Hazelcast在分布式对象中存储一些共享数据和锁)。它使用滚动服务更新,最小健康百分比设置为100,最大值设置为200。

用新的任务定义更新这个服务并不是很可靠--通常由于ECS的服务更新过程的性质,Hazelcast不能保留现有的集群。它有时会非常快地移除带有旧任务定义的任务,通常一次移除几个任务,从而破坏Hazelcast集群组。

是的,我们可以重构服务以使用客户机-服务器模型将内存网格存储在一个单独的服务中,或者使用替代方案,例如在Redis中存储锁,但是如果有人已经面临类似的困难,并且找到了一种在ECS中优雅地更新支持HazelCast的服务的方法,那将是很有趣的。

共有1个答案

蓬宾白
2023-03-14

要使Hazelcast在任何容器化环境中都是可靠的,您需要定义优美的关闭。这将防止任何数据丢失或同时杀死多个Hazelcast实例

为了做到这一点,您可以查看关于StopTask和Hazelcast文档的ECS文档。简而言之,您需要:

  • hazelcast.shutdownhook.policy=graceful添加到java_opts
  • hazelcast.graceful.shutdown.max.wait= 添加到java_opts
  • ECS_CONTAINER_STOP_TIMEOUT环境变量更改为

如果在Hazelcast集群中存储了大量数据,则可以将值max-waiting-time-for-data-migration设置为一个很高的数字,比如甚至几个小时。

 类似资料:
  • 我正在进行一个Spring启动项目,我使用Hazelcast作为缓存。我启用了tcp作为连接方法,我还提到了一些成员。会员可以加入。但问题是其他节点也可以加入除了成员。有人能告诉我如何限制它吗? 这是我的配置,

  • 对于我的暑期实习项目,我正在尝试在多个节点上分配作业。但是,我想根据谓词(cpu使用情况)以编程方式创建自定义集群组,就像在Apache Ignite中一样。我的公司已经使用Hazelcast IMDG。Hazelcast是否提供类似的功能?我知道我可以根据组名称创建不同的Hazelcast实例,但有没有办法使用cpu指标在Hazelcast中创建自定义集群组?

  • 人生太短,不能写没人会读的废话,如果你写了废话,没人会去读。所以好一点的文档是最好的。经理不会去理解这些东西,因为不好的文档会给他们错误的安全感以至于他们不敢依赖他们的程序员。如果一些人绝对坚持你真的在写没用的文档,就告诉他们“是的”,然后安静的找一份更好的工作。 没有其他事情比精确估计 把好的文档转为放松文档要求的估计 更为有效率。真相是冷酷而艰难的:文档,就像测试,会花比开发代码多几倍的时间。

  • 问题内容: 我有2个不同的元组类型(Double,Double): 我想使用一个简单的if语句比较它们​​的值。就像是: 这将引发以下错误: 找不到’==’的重载,该重载接受提供的参数 我当前的解决方案是这样的功能: 我已经尝试编写扩展,但是不能使其用于元组。您对此问题是否有更优雅的解决方案? 问题答案: 更新资料 正如Martin R 在评论中指出的那样,最多可以将具有六个组成部分的元组与进行比

  • 问题内容: 在所有ECS教程中,您需要创建一个集群,然后创建一个自动伸缩组,该集群将生成实例。在所有这些教程中,实例都以某种方式神奇地显示在群集中,但是没有人提示是什么将自动扩展组和群集连接在一起。 我的自动伸缩组会按预期生成实例,但是它们不会出现在保存我的docker定义的ecs集群上。 我缺少的连接在哪里? 问题答案: 好吧,我发现了。有关ecs- agent及其配置文件/etc/ecs/ec

  • 我使用的是Hazelcast 3.12。5我想知道我们是否可以在偶数个节点上运行hazelcast群集,或者需要/首选奇数个节点。如果我运行奇数个节点,是否会出现大脑分裂问题或类似情况/大脑分裂的可能性增加。 这可能是最基本的,但我想确定——我想从社区了解一些真实世界的经验。我不希望在四个节点足以完成任务的情况下,从三个节点增加到五个节点会产生成本,但同时,如果我们使用大小均匀的集群会有任何缺点,