server - Apache Ignite 服务器到客户端的连接问题
问题描述
我在 AWS EC2 实例上安装了 Apache Ignite 服务器。我正在使用 s3 存储桶进行客户端发现。我在 docker 容器中部署了多个微服务,它们正在与 Ignite 服务器通信。我遇到的问题是,当我的微服务将其作为客户端注册到 Ignite 服务器时,它工作得非常好。它正在向 docker 容器私有 IP 范围注册,Ignite 服务器无法访问该范围。现在,当 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]]
解决方案
您可以通过 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>
docker-compose.yml
2 个通信的 ignite 服务的示例:
version: "3"
services:
ignite:
image: image_name1
networks:
- net
face:
image: image_name2
depends_on:
- ignite
networks:
- net
environment:
IGNITE_HOST: 'ignite'
'face' 的 ignite 节点可以使用该地址连接到 'ignite' 的另一个 ignite 节点ignite:47500..47509
推荐阅读
- android - Android MMS Content Provider 不存储事务 ID
- c++ - 对没有数组的输出数字进行排序
- java - 如何确定通过brew服务运行的Java elasticsearch
- javascript - 将 json 数据从 javascript 发送到 python 时发生内部服务器错误
- android - 如何将 firebase firestore 用于我的桌面应用程序?
- android - 无法将不同的 Drawable 设置为 recyclerview 项目
- angular - Angular 6 子组件修改父输入,即使它不是双向绑定
- python - BeautifulSoup attrs 返回列表而不是字典
- java - 项目中的清单合并失败问题
- sql - 多个 SQL WITH 子句 - 为什么不呢?