【问题标题】:Does a Hazelcast distributed cache work with Docker SwarmHazelcast 分布式缓存是否适用于 Docker Swarm
【发布时间】:2020-05-27 19:22:53
【问题描述】:

我们在网上找到了一些尝试将 Hazelcast 与 Docker Swarm 结合使用的示例,但到目前为止,我们还无法复制缓存。每个 swarm 节点都有自己的实例。我们正在使用 SpringCache 来抽象配置,但我们还没有提出解决方案。在我们在这里投入太多之前,我想看看这是否可能,或者是否有人成功实施了这一点。

要求是在 Docker Swarm 中运行并具有分布式缓存的 REST 端点。

【问题讨论】:

标签: docker hazelcast


【解决方案1】:

可以在 Docker Swarm 中运行 Hazelcast 集群,您只需要在成员上配置正确的网络接口即可。

请参阅这篇描述非编排 Docker 环境中配置的博文: https://hazelcast.com/blog/configuring-hazelcast-in-non-orchestrated-docker-environments/

如果您不想使用第三方发现插件(或编写自己的插件),请使用 TCP-IP 加入机制,其中明确列出成员的 IP 地址。

配置中的关键点如下: 成员必须知道其对其他成员可见的公共地址。您可以将公共地址配置为系统属性hazelcast.local.publicAddress。该值也可能包含端口号 - 例如

-Dhazelcast.local.publicAddress=192.168.1.12:11701

【讨论】:

  • 我们不会知道 IP,因为我们在自动缩放组中,并且可能会发生变化。除非您指的是 Docker Swarm 的桥接网络的 IP 地址吗?
【解决方案2】:

您可以通过将服务的 Swarm DNS 配置更改为轮询 (dnsrr) 来实现此目的,这样 dns 解析将返回服务副本的所有 IP 地址,而不是随机返回一个。 然后您可以在 hazelcast 集群配置中设置所有 IP。

这里描述了完整的解决方案: https://antoine-thecoon.medium.com/deploy-hazelcast-cluster-in-a-replicated-swarm-service-97558db5f98

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    • 1970-01-01
    相关资源
    最近更新 更多