我的笔记本电脑上安装了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实例。这是我特别寻找的,只是为了最大限度地减少现有代码中的更改。
Vertx不支持Hazelcast客户机(正如您所提到的以及在Vertx:Using a existing Hazelcast集群中所述)。这意味着您始终需要启动嵌入在Vertx java进程中的Hazelcast实例。
注意,这个嵌入的Hazelcast实例用于Vertx集群。如果您还想将Hazelcast用于缓存,那么您可以设置自己的Hazelcast集群,并使用Hazelcast(智能)客户端连接到它。那没问题。
现在,谈论Vertx集群,根据您希望实现的目标,您有以下选项:
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