【问题标题】:Hazelcast +Sring Boot + Kubernetes - How to setup Client-Server topologyHazelcast +Spring Boot + Kubernetes - 如何设置客户端-服务器拓扑
【发布时间】:2021-03-24 14:51:15
【问题描述】:

我正在尝试了解如何使用 Hazelcast on Kubernete 在我的 Spring Boot 应用程序中配置 Client-Server,因为我们想要具有在不同 Spring Boot 应用程序之间共享缓存的能力(我已经能够使用 Kubernetes 设置嵌入式分布式缓存——这不是我们需要的)。 在 Spring Boot 单个应用程序(不在 Kubernetes 上)的情况下,我可以很容易地启动一个服务器,可以说是“localhost”,还可以启动连接到 localhost 的客户端。我也可以有多个服务器实例(成员),这将形成一个 Hazelcast 集群。

但是对于 Kubernetes,我知道我们需要有 2 个不同的 Spring Boot 应用程序,一个将充当服务器,另一个将是客户端访问缓存,但想知道客户端如何连接到服务器。因为在 Spring 的情况下,我们自动连接 HazelcastInstance,所以我将如何连接到在其自己的 Kubernetes Pod(和容器)中运行的服务器。

【问题讨论】:

    标签: spring-boot kubernetes hazelcast


    【解决方案1】:

    有一些 Kubernetes here 的部署指南,以及工作示例 herehere

    如果您的服务器 pod 正在加入,那么您几乎拥有它。客户端使用相同的发现机制。

    hazelcast-kubernetes 插件添加到客户端的 pod 中,并将配置属性设置为与服务器上用于命名空间、dns 等的值相同的值。

    【讨论】:

      【解决方案2】:

      谢谢尼尔。正如你所指出的,它与我目前在 Kubernetes 上的嵌入式缓存中配置的方式相同。我正在使用服务名称和命名空间从 HazelcastClient 实例中发现并连接到服务器成员。

      这是来自客户端 Spring Boot 应用程序的 HazelcastConfiguration:

      @Bean
      public HazelcastInstance hazelcastInstance() {
          final ClientConfig config = new ClientConfig();
          config.setClusterName("cluster-name");
          if (enableOnK8s) {
              config.getNetworkConfig().getKubernetesConfig().setEnabled(true)
                  .setProperty("namespace", namespaceValue)
                  .setProperty("service-name", serviceName);
          }
              return HazelcastClient.newHazelcastClient(config);
      }
      

      在 Hazelcast Server Spring Boot 应用程序上,配置与 Embedded Hazelcast 配置保持相同。

      【讨论】:

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