Server Apache Ignite服务器到客户端连接问题

Server Apache Ignite服务器到客户端连接问题,server,client,communication,ignite,Server,Client,Communication,Ignite,我在AWS EC2实例上安装了ApacheIgnite服务器。我正在使用s3存储桶进行客户端发现。我在docker容器中部署了多个微服务,它们正在与Ignite服务器通信。我遇到的问题是,当我的微服务将其注册为自燃服务器作为客户端时,它工作得非常好。它正在docker containers private IP范围内注册,Ignite server无法访问该范围。现在,当Ignite服务器检查客户端心跳时,它无法到达。有人能告诉我在基于容器的体系结构中使用ignite的最佳方法是什么吗 输出:

我在AWS EC2实例上安装了ApacheIgnite服务器。我正在使用s3存储桶进行客户端发现。我在docker容器中部署了多个微服务,它们正在与Ignite服务器通信。我遇到的问题是,当我的微服务将其注册为自燃服务器作为客户端时,它工作得非常好。它正在docker containers private IP范围内注册,Ignite server无法访问该范围。现在,当Ignite服务器检查客户端心跳时,它无法到达。有人能告诉我在基于容器的体系结构中使用ignite的最佳方法是什么吗

输出:服务器尝试检查客户端状态时

 (wrn) <visor>: Failed to connect to node (is node still alive?). Make sure that each ComputeTask and cache Transaction has a timeout
 set in order to prevent parties from waiting forever in case of
 network issues [nodeId=8b04f5a6-6b1d-498b-98b2-1044b8c25f3a,
 addrs=[/172.17.0.4:47100, /127.0.0.1:47100]]
(wrn):无法连接到节点(节点是否仍处于活动状态?)。确保每个ComputeTask和缓存事务都有一个超时
设置的目的是防止双方在发生冲突时永远等待
网络问题[nodeId=8b04f5a6-6b1d-498b-98b2-1044b8c25f3a,
地址=[/172.17.0.4:47100,/127.0.0.1:47100]]
1)让ignite知道您的EC2 ip地址

TcpDiscoverySpi spi = //whatever
spi.setLocalAddress( /* ip on ec2 subnet */ );
2) 在“主机”网络模式下运行docker,而不是默认的“网桥”模式


这两个步骤应允许Ignite群集成员之间进行双向TCP握手

您可以通过Ignite配置中的系统环境变量将主机名转发到Ignite容器:

<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
    <property name="addresses">
        <list>
            <value>#{systemEnvironment['IGNITE_HOST'] ?: '127.0.0.1'}:47500..47509</value>
        </list>
    </property>
</bean>

“face”的ignite节点可以使用地址连接到“ignite”的另一个ignite节点
ignite:47500..47509

很难说问题的根本原因是什么。最好为服务器和客户机节点获得Ignite配置。也许,您需要配置
AddressResolver
。请查看以下链接:--谢谢@sk0x50,但是当服务器和客户端部署在Docker环境中时,本文档没有太多关于服务器和客户端之间工作流的信息。通常,节点必须在两个方向上都可见-从客户端(从Docker容器)对于服务器,反之亦然。@sk0x50在集装箱化环境中,可见性是最大的问题。docker容器运行时有自己的IP范围,服务器无法看到或访问该范围。这就是我停下来的地方。
version: "3"
services:
  ignite:
    image: image_name1
    networks:
      - net
  face:
    image: image_name2
    depends_on:
      - ignite
    networks:
      - net
    environment:
      IGNITE_HOST: 'ignite'