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

点燃远程群集[无法为缓存映射键(所有分区节点都离开了网格)]

微生弘
2023-03-14
Caused by: org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException: Failed to map keys for cache (all partition nodes left the grid) [topVer=AffinityTopologyVersion [topVer=5, minorTopVer=3], cache=Transactions]
at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.serverNotFoundError(GridPartitionedSingleGetFuture.java:711) ~[ignite-core-2.6.0.jar:2.6.0]
at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.mapKeyToNode(GridPartitionedSingleGetFuture.java:332) ~[ignite-core-2.6.0.jar:2.6.0]
at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.map(GridPartitionedSingleGetFuture.java:216) ~[ignite-core-2.6.0.jar:2.6.0]
at org.apache.ignite.internal.processors.cache.distributed.dht.GridPartitionedSingleGetFuture.init(GridPartitionedSingleGetFuture.java:208) ~[ignite-core-2.6.0.jar:2.6.0]
at org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache.getAsync(GridDhtColocatedCache.java:246) ~[ignite-core-2.6.0.jar:2.6.0]
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get0(GridCacheAdapter.java:4556) ~[ignite-core-2.6.0.jar:2.6.0]
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:4537) ~[ignite-core-2.6.0.jar:2.6.0]
at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:1350) ~[ignite-core-2.6.0.jar:2.6.0]
at org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.get(IgniteCacheProxyImpl.java:907) ~[ignite-core-2.6.0.jar:2.6.0]
public class App 
{
    protected static IgniteConfiguration config;
    protected static String igniteID = UUID.randomUUID().toString();

    public static void main( String[] args )
    {
        System.out.println( "Starting instance of Ignite..." );
        config = new IgniteConfiguration();
        config.setIgniteInstanceName("ignite-node-"+igniteID);
        config.setClientMode(false);
        setupDiscoveryConfig();
        setupDataConfig();
        //cacheConfig();
        config.setPeerClassLoadingEnabled(false);
        config.setDeploymentMode(DeploymentMode.CONTINUOUS);
        config.setPeerClassLoadingMissedResourcesCacheSize(0);
        config.setFailureDetectionTimeout(10000);
        config.setClientFailureDetectionTimeout(10000);
        config.setNetworkTimeout(10000);
        Ignite ignite = Ignition.start(config);
        loadAndRemove(ignite);

    }

    private static void loadAndRemove(Ignite ignite) {
        ignite.cluster().active();
        IgniteCache<String, TransactionRecord> cache = ignite.getOrCreateCache("Transactions");
    }

    private static void cacheConfig(){
        CacheConfiguration cacheConfig = new CacheConfiguration("Transactions");
        cacheConfig.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
        cacheConfig.setCacheMode(CacheMode.PARTITIONED);
        config.setCacheConfiguration(cacheConfig);
    }


    private static void setupDataConfig(){
        DataStorageConfiguration storageConfiguration = new DataStorageConfiguration();
        storageConfiguration.getDefaultDataRegionConfiguration()
                .setPersistenceEnabled(true);
        config.setDataStorageConfiguration(storageConfiguration);
    }

    private static void setupDiscoveryConfig(){
        TcpDiscoverySpi spi = new TcpDiscoverySpi();
        TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder();
        ((TcpDiscoveryMulticastIpFinder) ipFinder).setMulticastGroup("228.10.10.157");
        ipFinder.setAddresses(Arrays.asList("127.0.0.1"));
        spi.setIpFinder(ipFinder);
        config.setDiscoverySpi(spi);
    }
}
@Bean
    public Ignite igniteInstance(){
        IgniteConfiguration config = new IgniteConfiguration();
        config.setIgniteInstanceName("cluster-client");
        config.setClientMode(true);
        config.setPeerClassLoadingEnabled(false);
        config.setDeploymentMode(DeploymentMode.CONTINUOUS);
        config.setPeerClassLoadingMissedResourcesCacheSize(0);
        config.setFailureDetectionTimeout(10000);
        config.setClientFailureDetectionTimeout(10000);
        config.setNetworkTimeout(10000);
        TcpDiscoverySpi spi = new TcpDiscoverySpi();
        TcpDiscoveryMulticastIpFinder ipFinder = new TcpDiscoveryMulticastIpFinder();
        ipFinder.setMulticastGroup("228.10.10.157");
        ipFinder.setAddresses(Arrays.asList("127.0.0.1"));
        spi.setIpFinder(ipFinder);
        config.setDiscoverySpi(spi);
        return Ignition.getOrStart(config);
    }

数据插入使用简单的cache.put命令。如果有人能在这件事上帮我,我将不胜感激。

共有1个答案

田兴怀
2023-03-14

最有可能的情况是,集群只有一个基线节点,这意味着所有数据都只存储在这个节点上。当它离开集群时,所有缓存操作都开始抛出此异常,因为没有关联节点了。

为了避免这种情况,您应该只有在所有服务器节点都启动时才激活群集。如果拓扑发生变化,您应该将失败的节点带回来,或者重置为基线拓扑以触发分区重新分配和重新平衡。

以下是如何从代码中设置基线拓扑:

Collection<ClusterNode> nodes = ignite.cluster().forServers().nodes();
ignite.cluster().setBaselineTopology(nodes);
 类似资料:
  • 我在我的单个主机pc中运行了两个Apache Ignite实例(版本2.2.0),它们彼此发现,没有任何问题。我现在要做的是在这个现有的“伪集群”中简单地创建一个IgniteCache,最好不要启动一个新的实例。这是我现在拥有的代码: 当我运行此代码时,将创建一个Ignite客户端实例,尝试创建缓存,然后关闭客户端实例。如果我检查Ignite服务器实例的日志,它会在创建客户端实例时检测到它: 但是

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

  • 我计划部署Kafka集群。我有以下查询: 1)为了保护生产者和消费者与Kafka broker的通信,可以使用SSL。如果我有一个由9个代理和3个zookeeper节点组成的集群,并且如果我不想使用自签名证书,我是否必须为每个节点购买一个证书(9个3证书,成本太高)? 正如我所读到的,生产者/消费者直接联系其中一个经纪人节点,而不联系动物园管理员。 谢谢, 病毒的

  • 我在跟踪http://jayatiatblogs.blogspot.com/2011/11/storm-installation.html尝试在Amazon Web服务上使用带有Ubuntu14.04 LTS的少数虚拟机(EC2)配置Apache Storm远程集群。 我的主节点是10.0.0.230,从节点是10.0.0.79。我的zookeeper位于我的主节点中。当我使用storm-jar-

  • 我在3个节点上进行了压力测试,但只有一个CPU很高,其他的都很低。Ignite集群使用TCP发现,我有一个jdbc连接,例如:jdbc:Ignite:Thin://172.16.14.15、172.16.14.16、172.16.14.17/