You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非host网络模式下跨主机部署Apache Ignite Docker集群的方案

跨主机Docker容器部署Apache Ignite双节点集群解决方案(用户命名空间环境)

问题背景

在启用用户命名空间的主机上,无法使用--net=host模式部署Ignite集群;常规端口映射+默认配置无法实现跨主机容器节点通信,BasicAddressResolver配置无效,且排除overlay网络方案,需解决节点通信问题。

可行配置方案

1. 修正Ignite配置文件(核心)

需正确配置地址解析、发现SPI与通信SPI,确保节点能对外暴露主机IP而非容器内部IP。以下是示例配置(需根据实际主机/容器IP调整):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="grid.cfg" class="org.apache.ignite.configuration.IgniteConfiguration">
        <!-- 集群名称必须一致 -->
        <property name="clusterName" value="ignite-cross-host-cluster"/>
        
        <!-- TCP发现SPI:指定集群所有节点的外部地址 -->
        <property name="discoverySpi">
            <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                <property name="ipFinder">
                    <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                        <property name="addresses">
                            <list>
                                <!-- 替换为两台主机的IP+映射的发现端口 -->
                                <value>192.168.1.100:47500</value>
                                <value>192.168.1.101:47500</value>
                            </list>
                        </property>
                    </bean>
                </property>
                <property name="localPort" value="47500"/>
                <!-- 地址解析:容器内部IP+端口 映射到 主机外部IP+端口 -->
                <property name="addressResolver">
                    <bean class="org.apache.ignite.configuration.BasicAddressResolver">
                        <constructor-arg>
                            <map>
                                <!-- 节点1的映射规则,节点2需对应修改自身容器IP与主机IP -->
                                <entry key="172.17.0.2:47500" value="192.168.1.100:47500"/>
                                <entry key="172.17.0.2:47100" value="192.168.1.100:47100"/>
                            </map>
                        </constructor-arg>
                    </bean>
                </property>
            </bean>
        </property>
        
        <!-- 通信SPI:指定内部通信端口 -->
        <property name="communicationSpi">
            <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
                <property name="localPort" value="47100"/>
            </bean>
        </property>
        
        <!-- 客户端连接配置 -->
        <property name="clientConnectorConfiguration">
            <bean class="org.apache.ignite.configuration.ClientConnectorConfiguration">
                <property name="port" value="10800"/>
            </bean>
        </property>
    </bean>
</beans>

配置要点:

  • 每个节点的addressResolver需对应自身容器内部IP(可通过docker inspect <容器ID>获取)和主机外部IP的映射
  • TcpDiscoveryVmIpFinder中必须列出所有集群节点的外部地址

2. 启动容器的正确命令

主机1(IP:192.168.1.100)

docker run -v "/tmp/ignite-node1.xml:/opt/ignite/apache-ignite/config/default-config.xml" \
  -p "192.168.1.100:10800:10800" \
  -p "192.168.1.100:47100:47100" \
  -p "192.168.1.100:47500:47500" \
  apacheignite/ignite:latest

主机2(IP:192.168.1.101)

docker run -v "/tmp/ignite-node2.xml:/opt/ignite/apache-ignite/config/default-config.xml" \
  -p "192.168.1.101:10800:10800" \
  -p "192.168.1.101:47100:47100" \
  -p "192.168.1.101:47500:47500" \
  apacheignite/ignite:latest

命令要点:

  • 明确绑定主机IP进行端口映射,避免容器监听0.0.0.0导致的地址歧义
  • 无需映射端口范围,固定映射所需端口即可,减少冲突风险

3. 验证与排查

  • 确保两台主机防火墙允许47100、47500、10800端口的双向通信
  • 进入容器执行ignitevisorcmd.sh,输入nodes命令查看集群节点数量,确认是否形成双节点集群
  • 若容器内部IP不固定,可通过环境变量传递IP参数,结合Spring表达式动态配置(示例):
    <entry key="#{systemEnvironment['IGNITE_CONTAINER_IP']}:47500" value="#{systemEnvironment['IGNITE_HOST_IP']}:47500"/>
    
    启动时添加环境变量:-e IGNITE_CONTAINER_IP=172.17.0.2 -e IGNITE_HOST_IP=192.168.1.100

内容的提问来源于stack exchange,提问作者spf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:10:37