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

无法建立垂直。云环境中垂直柱之间的x群集

穆高澹
2023-03-14

无法建立垂直。云环境中垂直柱之间的x群集

我在配置vert时遇到问题。x eventbus群集在私有云环境中。

在实验室测试中,我尝试使用Hazelcast集群管理器制作两个垂直点来建立一个集群,每个垂直点都在您自己的容器中运行。

问题很可能是由于配置错误引起的,但我无法找到它。在这个云上,不可能进行多播调用,那么我使用的是TCP IP发现策略。

最初的计划是制作一个“labatf api”垂直链接(REST调用接收器),它将通过eventbus传播业务处理,并在“labatf vtx”垂直链接中执行

下面是配置“labatf api”垂直链接的集群片段的代码:

Config hazelcastConfig = new Config();
NetworkConfig networkConfig = new NetworkConfig();

networkConfig
    .setPort(5701)
    .getJoin()
        .getMulticastConfig()
            .setEnabled(false);
networkConfig
    .getJoin()
        .getAwsConfig()
            .setEnabled(false);
networkConfig
    .getJoin()
        .getTcpIpConfig()
            .setEnabled(true)           
            .addMember("labatf-vtx:5701");

hazelcastConfig.setNetworkConfig(networkConfig);

ClusterManager mgr = new HazelcastClusterManager(hazelcastConfig);
VertxOptions options = new VertxOptions()
    .setClusterManager(mgr)
    .setEventBusOptions(new EventBusOptions()                           
            .setClusterPublicHost("labatf-api")
            .setClusterPublicPort(5701))
    .setClustered(true);

Vertx.clusteredVertx(options, res -> {
    if (res.succeeded()) {
        ...
    }
});

和“labatf api”垂直代码:

Config hazelcastConfig = new Config();
NetworkConfig networkConfig = new NetworkConfig();

networkConfig
    .setPort(5701)
    .getJoin()
        .getMulticastConfig()
            .setEnabled(false);
networkConfig
    .getJoin()
        .getAwsConfig()
            .setEnabled(false);
networkConfig
    .getJoin()
        .getTcpIpConfig()
            .setEnabled(true)           
            .addMember("labatf-api:5701");

hazelcastConfig.setNetworkConfig(networkConfig);

ClusterManager mgr = new HazelcastClusterManager(hazelcastConfig);
VertxOptions options = new VertxOptions()
    .setClusterManager(mgr)
    .setEventBusOptions(new EventBusOptions()                           
            .setClusterPublicHost("labatf-vtx")
            .setClusterPublicPort(5701))
    .setClustered(true);

Vertx.clusteredVertx(options, res -> {
    if (res.succeeded()) {
        ...
    }
});

请注意,“labatf-api”和“labatf-vtx”是云环境中的模块名称,但它们也是服务IP的域名,如果存在,它们将平衡每个模块的容器副本之间的调用。

启动verticles容器后,每个模块都会发现另一个模块,但几秒钟后,连接会被目标对等方中断,如下所示:

在“labatf api”垂直栏中:

INFO:   [192.168.84.205]:5701 [dev] [3.9] Accepting socket connection from /192.168.80.253:52191
INFO:   [192.168.84.205]:5701 [dev] [3.9] Established socket connection between /192.168.84.205:5701 and /192.168.80.253:52191
WARNING:[192.168.84.205]:5701 [dev] [3.9] Wrong bind request from [192.168.80.253]:5701! This node is not the requested endpoint: [labatf-api]:5701
INFO: [192.168.84.205]:5701 [dev] [3.9] Connection[id=2, /192.168.84.205:5701->/192.168.80.253:52191, endpoint=null, alive=false, type=MEMBER] closed. Reason: Wrong bind request from [192.168.80.253]:5701! This node is not the requested endpoint: [labatf-api]:5701
INFO: [192.168.84.205]:5701 [dev] [3.9] Connection[id=5, /192.168.84.205:45323->labatf-vtx/10.36.232.241:5701, endpoint=[labatf-vtx]:5701, alive=false, type=MEMBER] closed. Reason: Connection closed by the other side

在“labatf vtx”垂直中:

INFO: [192.168.80.253]:5701 [dev] [3.9] Accepting socket connection from /192.168.84.205:60711
INFO: [192.168.80.253]:5701 [dev] [3.9] Established socket connection between /192.168.80.253:5701 and /192.168.84.205:60711
WARNING: [192.168.80.253]:5701 [dev] [3.9] Wrong bind request from [192.168.84.205]:5701! This node is not the requested endpoint: [labatf-vtx]:5701
INFO: [192.168.80.253]:5701 [dev] [3.9] Connection[id=3, /192.168.80.253:5701->/192.168.84.205:60711, endpoint=null, alive=false, type=MEMBER] closed. Reason: Wrong bind request from [192.168.84.205]:5701! This node is not the requested endpoint: [labatf-vtx]:5701
INFO: [192.168.80.253]:5701 [dev] [3.9] Connection[id=4, /192.168.80.253:55987->labatf-api/10.36.212.47:5701, endpoint=[labatf-api]:5701, alive=false, type=MEMBER] closed. Reason: Connection closed by the other side

任何帮助都会很好!

共有1个答案

咸晨
2023-03-14

无法通过负载平衡器连接Hazelcast节点。Hazelcast节点必须彼此直接对话。我们不使用HTTP,而是使用一个自定义的基于TCP/IP的协议。

 类似资料:
  • 我对Vert.x非常陌生,就像几天前一样。我来自一个JAX式的,安逸的世界。我可能大错特错,请指正。 我的问题是:如何使顶点公开自己的REST接口(子路由器),以及如何将其子路由器注册到应用程序的主路由器中? 我尝试过类似的东西,但是当我请求/产品/所有:( } }

  • 我正在尝试为Vert开发概念验证。一款简单的实时浏览器游戏。 让我们想象一个类似于在线扑克的游戏——你有一个大厅,里面有许多你可以加入的现有游戏。你也可以创建一个新游戏(所以大厅里的游戏数量是可变的)。在这之前,你有一个异步超文本传输协议服务器(集群),玩家可以连接到它。尤其是在特定的游戏中,一切都是实时的,所以当玩家执行某个操作时,其他人会立即看到它,而无需刷新或定期ajax轮询。 我在考虑如何

  • 我对Vertx中的标准顶点和工人顶点感到困惑。它们的用例是什么?

  • 我刚刚开始学习vert. x,对它是如何工作的仍然感兴趣...我在想: 当反应性非阻塞垂直线卸载到阻塞垂直线时,阻塞垂直线在工作线程上运行。 1.what事件循环线程,关闭加载的工作,在同一时间?从循环中获取另一个事件? 返回a结果时,同一事件循环是否继续执行?还是另一个? 1的答案是什么 我觉得我错过了一些基本的东西,关于事情实际上是如何工作的。谢谢你的帮助!

  • 我正在使用Vert创建一个简单的TCP服务器。x和数据以压缩数据包的形式在客户端和服务器之间发送。 我想使用垂直线来创建这种性质的东西(其中是垂直线,箭头显示数据流): 问题是,我不确定如何将NetSocket从一个版本(结果从)携带到下一个版本。我当然可以发送的结果从到的版本,但当的版本收到这个数据,它将没有任何句柄来使用引用它来回复NetSocket必须给发件人。 本质上,我需要通过事件总线携

  • 假设我有一个类似这样的竖线(有意简化以便于解释我的问题)。 现在想象一下,MyService是事件驱动的,当服务中发生某些事件时,我想停止顶点。 是否有人对Vert有更多经验。x知道如何做到这一点?或者,也许有人会给我一些建议,告诉我什么是正确的替代方法?