Docker compose 关于在Docker Compose中设置Apache Ignite的问题
有关我更新的场景,请参阅更详细的内容… 我正在试验在Docker compose环境中设置ApacheIgnite,并对Ignite以及如何配置它提出了一些问题Docker compose 关于在Docker Compose中设置Apache Ignite的问题,docker-compose,ignite,Docker Compose,Ignite,有关我更新的场景,请参阅更详细的内容… 我正在试验在Docker compose环境中设置ApacheIgnite,并对Ignite以及如何配置它提出了一些问题 如果项目中有Maven依赖项,下载和运行ApacheIgnite二进制文件的目的是什么?我是否也需要在每个模块中运行Ignite,或者只是具有足够的依赖关系 Ignite节点的每个实例是否都需要有关联的配置,以及这些配置之间有何区别 我有一个Docker Compose文件,其中包含两个服务,一个用于拉入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)+']);
}
}
sqlline
对其运行SQL,或者(在使用对等类加载时)使用连接到它的Ignite客户端执行几乎任何操作。但同样,您可以直接从Maven项目运行Ignite节点(客户机或服务器),在这种情况下,您根本不需要二进制分发sqlline
对其运行SQL,或者(在使用对等类加载时)使用连接到它的Ignite客户端执行几乎任何操作。但同样,您可以直接从Maven项目运行Ignite节点(客户机或服务器),在这种情况下,您根本不需要二进制分发作为@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是一个精确值,但不是必需的。只是有