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

从外部运行的现有HazelCast群集启动Vert.x群集管理器

郑西岭
2023-03-14

我的笔记本电脑上安装了docker desktop。使用docker,我使用TCP-IP创建了一个带有两个节点的Hazelcast集群,为此我使用了Hazelcast/Hazelcast:4.0.2映像。

<multicast enabled="false"></multicast>
<tcp-ip enabled="true">
  <member>x.x.x.x:5701</member>
  <member>x.x.x.x:5702</member>
</tcp-ip>

我已经检查了两个成员的docker服务日志,这表明两个成员都成功创建并加入,没有任何错误。此外,使用IntelliJ IDE在我的笔记本电脑中创建了一个Hazelcast客户端JAVA程序,通过它我成功地连接到了运行在Docker内部的Hazelcast集群。

当我试图使用Vert.x Hazelcast并想要连接正在Docker内部运行的现有Hazelcast集群时,我被卡住了。根据文档,Vert.x Hazelcast不支持Hazelcast客户端或智能客户端。我想要的是实例化Vert.x Clustermanager,它将指向在Docker外部运行的现有Hazelcast集群。我在JAVA代码中使用了HazelCast.getHazelCastInstanceByName(“”)方法,该方法没有找到现有的Hazelcust集群。实际上,我现有的项目有一个模块,它已经在使用嵌入的Vert.x Hazelcast集群,其中有一个节点。为了实现高可用性和零停机部署,我们希望为模块启用Hazelcast缓存。

是否可以在JAVA代码中获取现有的hazelcast实例。在过去的几周里,我几乎浏览了所有的google链接,但没有找到使用TCP/IP的现有集群实例。但是,是的,使用hazelcast客户端,我可以连接到外部集群,但是我想实例化Vert.x Clustermanager,它需要hazelcast实例,而不是HazelcastClient实例。这是我特别寻找的,只是为了最大限度地减少现有代码中的更改。

共有1个答案

方夜洛
2023-03-14

Vertx不支持Hazelcast客户机(正如您所提到的以及在Vertx:Using a existing Hazelcast集群中所述)。这意味着您始终需要启动嵌入在Vertx java进程中的Hazelcast实例。

注意,这个嵌入的Hazelcast实例用于Vertx集群。如果您还想将Hazelcast用于缓存,那么您可以设置自己的Hazelcast集群,并使用Hazelcast(智能)客户端连接到它。那没问题。

现在,谈论Vertx集群,根据您希望实现的目标,您有以下选项:

    null
ClusterManager mgr = new HazelcastClusterManager();
HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance();
ClusterManager mgr = new HazelcastClusterManager(hazelcastInstance);

您仍然使用嵌入式Hazelcast,但这次您可以访问Hazelcast实例。因此您可以在技术上对它进行任何您想要的操作(例如,获取一些分布式map对象并将值放入其中)。

您可以创建一个单独的Hazelcast集群(就像使用Docker一样)。

$ docker run --rm --network host hazelcast/hazelcast
$ docker run --rm --network host hazelcast/hazelcast

这实际上可能在Docker Desktop中不起作用,因为Docker Desktop运行在可能不支持多播发现的虚拟机中。因此您可以安装Hazelcast CLI并以这种方式启动两个Hazelcast实例。

$ hz start
$ hz start
Dec 30, 2020 4:30:11 PM io.vertx.core.impl.VertxImpl
WARNING: You're already on a Vert.x context, are you sure you want to create a new Vertx instance?
HTTP server started on port 8888
...
INFO: [192.168.48.112]:5703 [dev] [4.1] [192.168.48.112]:5703 is STARTING
Dec 30, 2020 4:30:20 PM com.hazelcast.internal.cluster.impl.MulticastJoiner
INFO: [192.168.48.112]:5703 [dev] [4.1] Trying to join to discovered node: [192.168.48.112]:5701
Dec 30, 2020 4:30:20 PM com.hazelcast.internal.server.tcp.TcpServerConnection
INFO: [192.168.48.112]:5703 [dev] [4.1] Initialized new cluster connection between /192.168.48.112:55121 and /192.168.48.112:5701
Dec 30, 2020 4:30:26 PM com.hazelcast.internal.server.tcp.TcpServerConnection
INFO: [192.168.48.112]:5703 [dev] [4.1] Initialized new cluster connection between /192.168.48.112:5703 and /192.168.48.112:37855
Dec 30, 2020 4:30:26 PM com.hazelcast.internal.cluster.ClusterService
INFO: [192.168.48.112]:5703 [dev] [4.1]

Members {size:3, ver:5} [
        Member [192.168.48.112]:5701 - db00aaa1-c46a-4dc1-a1a3-edd823edfaef
        Member [192.168.48.112]:5702 - 9bc4ba13-50d7-4c69-ba2d-2d5fd2e40884
        Member [192.168.48.112]:5703 - 3eb4dcf3-28de-46ef-8f08-49fe0cb1afd3 this
]
 类似资料:
  • 主要内容:使用简介 Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。 支持的工具包括但不限于以下各项: Dokku Docker Compose Docker Machine Jen

  • 集群管理架构概述。 { "clusters": [], "sds": "{...}", "local_cluster_name": "...", "outlier_detection": "{...}", "cds": "{...}" } clusters (required, array) 群集管理器将执行服务发现,健康检查和负载平衡的上游群集列表。 sds (someti

  • 集群管理架构概述 v1 API 参考 v2 API 参考 统计 概述 健康检查统计 离群检测统计 动态HTTP统计 动态HTTP交叉树统计 按服务区动态HTTP统计 负载均衡统计 负载均衡子集统计 运行时设置 主动健康检查 离群异常检测 核心 区域负载均衡 熔断 集群发现服务 统计 健康检查 TCP健康检查 熔断 运行时配置

  • Envoy的集群管理器管理所有配置的上游集群。就像Envoy配置可以包含任意数量的监听器一样,配置也可以包含任意数量的独立配置的上游集群。 上游集群和主机从网络/HTTP过滤器堆栈中抽象出来,因为上游集群和主机可以用于任意数量的不同代理任务。集群管理器向过滤器堆栈公开API,允许过滤器获得到上游集群的L3/L4连接,或者到上游集群的抽象HTTP连接池的句柄(无论上游主机是支持HTTP/1.1还是H

  • 用户除了通过控制台管理集群外,还可以通过ssh直接登陆到主节点上进行操作。主节点上已经完成了集群环境的相关配置,您可以直接在主节点上执行命令。 您还可以通过ssh架设SOCKS5代理服务器后,访问到集群内原生的hadoop管理页面。 生成密钥对 在自己机器上,执行命令如下 ssh-keygen -f ./hadoop_key -C "emr public key" 其中-f指定文件,-C添加

  • Cluster Cluster.EdsClusterConfig Cluster.OutlierDetection Cluster.LbSubsetConfig Cluster.LbSubsetConfig.LbSubsetSelector Cluster.LbSubsetConfig.LbSubsetFallbackPolicy (Enum) Cluster.RingHashLbConfig C