Docker compose 关于在Docker Compose中设置Apache Ignite的问题

Docker compose 关于在Docker Compose中设置Apache Ignite的问题,docker-compose,ignite,Docker Compose,Ignite,有关我更新的场景,请参阅更详细的内容… 我正在试验在Docker compose环境中设置ApacheIgnite,并对Ignite以及如何配置它提出了一些问题 如果项目中有Maven依赖项,下载和运行ApacheIgnite二进制文件的目的是什么?我是否也需要在每个模块中运行Ignite,或者只是具有足够的依赖关系 Ignite节点的每个实例是否都需要有关联的配置,以及这些配置之间有何区别 我有一个Docker Compose文件,其中包含两个服务,一个用于拉入Ignite容器,另一个用于运行

有关我更新的场景,请参阅更详细的内容…

我正在试验在Docker compose环境中设置ApacheIgnite,并对Ignite以及如何配置它提出了一些问题

  • 如果项目中有Maven依赖项,下载和运行ApacheIgnite二进制文件的目的是什么?我是否也需要在每个模块中运行Ignite,或者只是具有足够的依赖关系

  • Ignite节点的每个实例是否都需要有关联的配置,以及这些配置之间有何区别

  • 我有一个Docker Compose文件,其中包含两个服务,一个用于拉入Ignite容器,另一个用于运行/测试模块的Java shell。在我的shell中,当我运行compose服务时,我的测试似乎发现了ignite服务。当我用IntelliJ运行测试时,它不会发现另一台Ignite服务器

  • 我的撰写服务:

      #Ignite
      ignite:
        image: apacheignite/ignite
        environment:
          - IGNITE_QUITE=false
        #volumes:
        #  - ./project/src/test/resources/ignite.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
        ports:
          - 11211:11211
          - 47100:47100
          - 47500:47500
          - 49112:49112
    
      # Java Shell
      java:
        image: local/java
        build:
          context: .
        command: /bin/bash
        volumes:
          - .:/project
        depends_on:
          - ignite
        ports:
          - 8000:8000
          - 8080:8080
          - 1099:1099
    
    # Ignite
    ignite:
      image: apacheignite/ignite
      environment:
        - IGNITE_QUIET=false
      # volumes:
      #   - ./project/src/test/resources/ignite.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
      # It is not necessary to expose ports outside if they are only used inside docker-compose
      # ports:
      #   - 11211:11211
      #   - 47100:47100
      #   - 47500:47500
      #   - 49112:49112
    # Java Shell
    java:
      image: local/java
      build:
        context: .
      command: /bin/bash
      volumes:
        - .:/project
      links:
        - ignite
      ports:
        - 8000:8000
        - 8080:8080
        - 1099:1099
    
    我在测试中使用的点火配置:

     <bean id="ignite.cfg"
              class="org.apache.ignite.configuration.IgniteConfiguration">
    
            <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>
                                    <!--
                                    Explicitly specifying address of a local node to let it start and
                                    operate normally even if there is no more nodes in the cluster.
                                    You can also optionally specify an individual port or port range.
                                    -->
                                    <value>127.0.0.1</value>
    
                                    <!--
                                    IP Address and optional port range of a remote node.
                                    You can also optionally specify an individual port.
                                    -->
                                    <value>127.0.0.1:47500..47509</value>
                                </list>
                            </property>
                        </bean>
                    </property>
                </bean>
            </property>
        </bean>
    
    “Ignite”服务配置(Ignite main.xml):

      ignite:
        image: apacheignite/ignite
        environment:
          - IGNITE_QUIET=false
        volumes:
          - ./project/src/test/resources/ignite-main.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
        ports:
          - 11211:11211
          - 47100:47100
          - 47500:47500
          - 49112:49112
    
    <property name="discoverySpi">
                <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                    <property name="localPort" value="47500"/>
                    <property name="ipFinder">
                        <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                            <property name="addresses">
                                <list>
                                    <value>localhost</value>
                                    <value>localhost:47500</value>
                                </list>
                            </property>
                        </bean>
                    </property>
                </bean>
            </property>
            <property name="communicationSpi">
                <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
                    <property name="localPort" value="47100"/>
                </bean>
            </property>
    
    <property name="discoverySpi">
                <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                    <property name="localPort" value="47501"/>
                    <property name="ipFinder">
                        <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                            <property name="addresses">
                                <list>
                                    <value>localhost</value>
                                    <value>localhost:47500</value>
                                </list>
                            </property>
                        </bean>
                    </property>
                </bean>
            </property>
            <property name="communicationSpi">
                <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
                    <property name="localPort" value="47101"/>
                </bean>
            </property>
    
    
    本地服务器
    本地主机:47500
    
    客户端Ignite配置(Ignite.xml):

      ignite:
        image: apacheignite/ignite
        environment:
          - IGNITE_QUIET=false
        volumes:
          - ./project/src/test/resources/ignite-main.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
        ports:
          - 11211:11211
          - 47100:47100
          - 47500:47500
          - 49112:49112
    
    <property name="discoverySpi">
                <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                    <property name="localPort" value="47500"/>
                    <property name="ipFinder">
                        <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                            <property name="addresses">
                                <list>
                                    <value>localhost</value>
                                    <value>localhost:47500</value>
                                </list>
                            </property>
                        </bean>
                    </property>
                </bean>
            </property>
            <property name="communicationSpi">
                <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
                    <property name="localPort" value="47100"/>
                </bean>
            </property>
    
    <property name="discoverySpi">
                <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                    <property name="localPort" value="47501"/>
                    <property name="ipFinder">
                        <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                            <property name="addresses">
                                <list>
                                    <value>localhost</value>
                                    <value>localhost:47500</value>
                                </list>
                            </property>
                        </bean>
                    </property>
                </bean>
            </property>
            <property name="communicationSpi">
                <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
                    <property name="localPort" value="47101"/>
                </bean>
            </property>
    
    
    本地服务器
    本地主机:47500
    
    客户端点火测试用例:

      ignite:
        image: apacheignite/ignite
        environment:
          - IGNITE_QUIET=false
        volumes:
          - ./project/src/test/resources/ignite-main.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
        ports:
          - 11211:11211
          - 47100:47100
          - 47500:47500
          - 49112:49112
    
    <property name="discoverySpi">
                <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                    <property name="localPort" value="47500"/>
                    <property name="ipFinder">
                        <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                            <property name="addresses">
                                <list>
                                    <value>localhost</value>
                                    <value>localhost:47500</value>
                                </list>
                            </property>
                        </bean>
                    </property>
                </bean>
            </property>
            <property name="communicationSpi">
                <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
                    <property name="localPort" value="47100"/>
                </bean>
            </property>
    
    <property name="discoverySpi">
                <bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
                    <property name="localPort" value="47501"/>
                    <property name="ipFinder">
                        <bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
                            <property name="addresses">
                                <list>
                                    <value>localhost</value>
                                    <value>localhost:47500</value>
                                </list>
                            </property>
                        </bean>
                    </property>
                </bean>
            </property>
            <property name="communicationSpi">
                <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
                    <property name="localPort" value="47101"/>
                </bean>
            </property>
    
    私人静电点火

    @BeforeClass
    public static void beforeAll()
    {
        ignite = Ignition.start("ignite.xml");
    }
    
    @AfterClass
    public static void afterAll()
    {
        ignite.close();
    }
    
    @Test
    public void should_prep_cluster()
    {
        IgniteCache<Integer, String> cache = ignite.getOrCreateCache("myCacheName");
    
        // Store keys in cache (values will end up on different cache nodes).
        for (int i = 0; i < 10; i++)
        {
            cache.put(i, Integer.toString(i));
        }
    
        for (int i = 0; i < 10; i++)
        {
            System.out.println("Got [key=" + i + ", val=" + cache.get(i) + ']');
        }
    }
    
    @BeforeClass
    public static void beforeAll()
    {
    ignite=Ignition.start(“ignite.xml”);
    }
    @下课
    公共静态无效毕竟()
    {
    点燃。关闭();
    }
    @试验
    公共空间应_prep_cluster()
    {
    IgniteCache cache=ignite.getOrCreateCache(“myCacheName”);
    //将密钥存储在缓存中(值将在不同的缓存节点上结束)。
    对于(int i=0;i<10;i++)
    {
    put(i,Integer.toString(i));
    }
    对于(int i=0;i<10;i++)
    {
    System.out.println(“get[key=“+i+”,val=“+cache.get(i)+']);
    }
    }
    
  • 因此,您可以使用任何一组模块运行独立的Ignite节点,例如使用
    sqlline
    对其运行SQL,或者(在使用对等类加载时)使用连接到它的Ignite客户端执行几乎任何操作。但同样,您可以直接从Maven项目运行Ignite节点(客户机或服务器),在这种情况下,您根本不需要二进制分发

  • 对。除了不需要的节点属性或一致ID之外,它们可能是相同的

  • 很难说。你能提供日志吗?我认为理解容器的人可以在没有日志的情况下检查它,但我不能

  • 因此,您可以使用任何一组模块运行独立的Ignite节点,例如使用
    sqlline
    对其运行SQL,或者(在使用对等类加载时)使用连接到它的Ignite客户端执行几乎任何操作。但同样,您可以直接从Maven项目运行Ignite节点(客户机或服务器),在这种情况下,您根本不需要二进制分发

  • 对。除了不需要的节点属性或一致ID之外,它们可能是相同的

  • 很难说。你能提供日志吗?我认为理解容器的人可以在没有日志的情况下检查它,但我不能


  • 作为@alamar回答的补充:

    由于Docker Compose服务在单独的容器中启动,因此不能使用
    localhost
    127.0.0.1
    来发现服务器节点。您可以链接ignite服务以使用DNS名称
    ignite

    组合服务:

      #Ignite
      ignite:
        image: apacheignite/ignite
        environment:
          - IGNITE_QUITE=false
        #volumes:
        #  - ./project/src/test/resources/ignite.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
        ports:
          - 11211:11211
          - 47100:47100
          - 47500:47500
          - 49112:49112
    
      # Java Shell
      java:
        image: local/java
        build:
          context: .
        command: /bin/bash
        volumes:
          - .:/project
        depends_on:
          - ignite
        ports:
          - 8000:8000
          - 8080:8080
          - 1099:1099
    
    # Ignite
    ignite:
      image: apacheignite/ignite
      environment:
        - IGNITE_QUIET=false
      # volumes:
      #   - ./project/src/test/resources/ignite.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
      # It is not necessary to expose ports outside if they are only used inside docker-compose
      # ports:
      #   - 11211:11211
      #   - 47100:47100
      #   - 47500:47500
      #   - 49112:49112
    # Java Shell
    java:
      image: local/java
      build:
        context: .
      command: /bin/bash
      volumes:
        - .:/project
      links:
        - ignite
      ports:
        - 8000:8000
        - 8080:8080
        - 1099:1099
    
    客户端Ignite配置(Ignite.xml):

    
    点火:47500
    
    作为@alamar答案的补充:

    由于Docker Compose服务在单独的容器中启动,因此不能使用
    localhost
    127.0.0.1
    来发现服务器节点。您可以链接ignite服务以使用DNS名称
    ignite

    组合服务:

      #Ignite
      ignite:
        image: apacheignite/ignite
        environment:
          - IGNITE_QUITE=false
        #volumes:
        #  - ./project/src/test/resources/ignite.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
        ports:
          - 11211:11211
          - 47100:47100
          - 47500:47500
          - 49112:49112
    
      # Java Shell
      java:
        image: local/java
        build:
          context: .
        command: /bin/bash
        volumes:
          - .:/project
        depends_on:
          - ignite
        ports:
          - 8000:8000
          - 8080:8080
          - 1099:1099
    
    # Ignite
    ignite:
      image: apacheignite/ignite
      environment:
        - IGNITE_QUIET=false
      # volumes:
      #   - ./project/src/test/resources/ignite.xml:/opt/ignite/apache-ignite-fabric/config/default-config.xml
      # It is not necessary to expose ports outside if they are only used inside docker-compose
      # ports:
      #   - 11211:11211
      #   - 47100:47100
      #   - 47500:47500
      #   - 49112:49112
    # Java Shell
    java:
      image: local/java
      build:
        context: .
      command: /bin/bash
      volumes:
        - .:/project
      links:
        - ignite
      ports:
        - 8000:8000
        - 8080:8080
        - 1099:1099
    
    客户端Ignite配置(Ignite.xml):

    
    点火:47500
    
    感谢您的快速回复。因此#1是一个精确值,但不是必需的。只要每个模块中都有jar,就可以连接并形成集群。什么是“consistentId ID?”我在任何地方都没有见过它?@KJQ see例如,谢谢您的参考。我读了一遍,不知道这对我的问题有什么帮助。是否有任何参考资料显示Ignite在Docker容器(在compose中)中运行并且有人从外部加入集群的完整示例?我几乎完全肯定这与我的ignite配置或暴露的端口有关。奇怪的是,在测试附加到集群的compose容器中运行all。只有IntelliJ在外部运行我的测试时,我才似乎看不到集群。但我很确定,如果您的内部Docker容器不知道其外部地址,您将遇到问题。不幸的是,我不能进一步帮助你,因为我不是DevOps。谢谢你的快速回复。因此#1是一个精确值,但不是必需的。只是有