当前位置: 首页 > 知识库问答 >
问题:

无法在现有Apache Ignite单节点群集中创建缓存

秦毅
2023-03-14

我在我的单个主机pc中运行了两个Apache Ignite实例(版本2.2.0),它们彼此发现,没有任何问题。我现在要做的是在这个现有的“伪集群”中简单地创建一个IgniteCache,最好不要启动一个新的实例。这是我现在拥有的代码:

public class Create_Ignite_Cache {

public static void main(String[] args){

    TcpDiscoverySpi spi = new TcpDiscoverySpi();
    TcpDiscoveryVmIpFinder ipFinder=new TcpDiscoveryMulticastIpFinder();
    List<String> adresses=new ArrayList<String>();
    adresses.add("127.0.0.1");
    ipFinder.setAddresses(adresses);
    spi.setIpFinder(ipFinder);

    IgniteConfiguration cfg=new IgniteConfiguration()
.setDiscoverySpi(spi).setClientMode(true);

    CacheConfiguration cache_conf=new CacheConfiguration<String,String>().setCacheMode(CacheMode.PARTITIONED).setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL).setBackups(1).
            setGroupName("Test_group").setIndexedTypes(String.class,String.class).setName("Test_Cache");

    Ignite ignite=Ignition.getOrStart(cfg);

    ignite.getOrCreateCache(cache_conf);

    System.out.print("[INFO] CACHE CREATED");
    ignite.close();
}
 }

当我运行此代码时,将创建一个Ignite客户端实例,尝试创建缓存,然后关闭客户端实例。如果我检查Ignite服务器实例的日志,它会在创建客户端实例时检测到它:

[10:36:57] Topology snapshot [ver=1, servers=1, clients=0, CPUs=12, heap=1.0GB]
[10:41:07] Topology snapshot [ver=2, servers=1, clients=1, CPUs=12, heap=4.6GB]
[10:41:07] Topology snapshot [ver=3, servers=1, clients=0, CPUs=12, heap=1.0GB]

但是,当我运行ignitevisor检查缓存列表时,它没有任何缓存:

visor> cache
(wrn) <visor>: No caches found.

我的问题是:
使用这种方法我做错了什么?是否有一种方法可以在现有集群中创建缓存,而不必创建客户端实例?例如,使用JDBC连接?

共有1个答案

胡翔
2023-03-14

我尝试了您的代码,Visor显示了创建的缓存。

拓扑快照表明,您只有一个服务器节点。有没有可能,服务器节点没有发现彼此,形成了两个不同的集群?您可以在其中一个缓存中创建缓存,并通过Visor连接到另一个缓存。尝试nodeVisor命令并检查是否看到所有服务器节点。

为了避免为创建缓存启动额外的节点,可以在节点XML配置中配置缓存。看看这个例子:https://apacheignite.readme.io/docs/cache-modes#section-configuration

如果希望使用JDBC连接创建缓存,可以使用create tableDDL命令。文档:https://apacheignite-sql.readme.io/docs/create-table

 类似资料:
  • Disque 以集群模式运行, 每个服务器都是集群中的一个节点, 用户可以运行任意数量的节点, 只要确保每个节点的端口号不同即可。 在默认情况下, 运行 Disque 服务器程序 disque-server 将启动一个端口号为 7711 的 Disque 节点: $ ./disque-server 528:C 28 Apr 11:50:08.519 # Warning: no config fil

  • 我有3个虚拟机。它们都有docker 1.12,并且在centos7上运行。所有端口都已打开,vm可以在我启动集群时相互ping Docker信息告诉我: 现在,我尝试将节点(其他VM)加入集群。我使用启动管理器后推荐的命令。 但我得到了: Docker信息告诉我: 集群管理器: 如何调试此问题,或者我是否忘记执行某些重要步骤?服务器之间是否需要ssh访问?谢谢 节点上的日志: 有时警告:

  • 我基于构建了一个映像,它基本上添加了一个新的,但是在第一个节点成功开始工作后,在第二个节点上遇到了以下错误。谁能帮我在这里调试一下吗? 为了确保容器之间的网络正常工作,尝试创建另一个可以登录到第一个容器的mysql实例的容器。 这绝对与无关 为了查看容器是否内存不足,我使用并看到失败的容器在整个生命周期中只使用了142MB,直到失败,这比允许的总内存(~4GB)要小得多。 我使用,但尝试在Cent

  • 有没有办法在现有GKE集群中创建Composer环境而不产生新集群?

  • 因为每个 Disque 节点都会将自己的配置信息储存在 disque-server 运行的文件夹里面, 而同一个文件夹只能有一份这样的配置信息, 所以如果我们打算同时运行多个节点, 那么就必须在不同的文件夹里面运行 disque-server , 并为每个节点指定不同的端口。 假设我们现在打算运行三个 Disque 节点, 那么首先要做的就是创建三个文件夹, 然后分别在这些文件夹里面运行 disq

  • 问题内容: 我想用一个非常简单的单节点群集启动Cassandra,但是我做不到。 我按照在 https://www.digitalocean.com/community/tutorials/how-to-install-cassandra- and-run-a-single-node-cluster-on-a-ubuntu- vps 基本上, 在VirtualBox上构建了一个新的CentOS 7