Ignite集群管理——基於Zookeeper的節點發現


Ignite支持基於組播,靜態IP,Zookeeper,JDBC等方式發現節點,本文主要介紹基於Zookeeper的節點發現。

環境准備,兩台筆記本電腦A,B。A筆記本上使用VMware虛擬機安裝了Ubuntu系統C。

1、 C安裝Zookeeper

由於主要測試Ignite,這里僅僅簡單安裝一個zookeeper節點,下載zookeeper解壓后,直接執行zookeeper目錄下的bin/zkServer.sh start命令則成功啟動zookeeper。

查看Ubuntu系統C的IP地址為192.168.1.104,zookeeper默認端口為12181。

注意:這里VMware虛擬機的網絡適配器一定要選擇橋接模式,否則A機器無法訪問虛擬機。

2、 A系統運行Ignite節點1;

代碼中加粗的部分便是Ignite注冊代碼,十分簡單。

package com.coshaho.learn.ignite.cluster;

import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder;

/**
 * 
 * IgniteCluster01.java Create on 2017年6月3日 下午10:52:38    
 *    
 * 類功能說明:   基於zookeeper集群
 *
 * Copyright: Copyright(c) 2013 
 * Company: COSHAHO
 * @Version 1.0
 * @Author coshaho
 */
public class IgniteCluster01 
{
    public static void main(String[] args)
    {
 TcpDiscoverySpi spi = new TcpDiscoverySpi(); TcpDiscoveryZookeeperIpFinder ipFinder = new TcpDiscoveryZookeeperIpFinder(); // Specify ZooKeeper connection string. ipFinder.setZkConnectionString("192.168.1.104:12181"); spi.setIpFinder(ipFinder); IgniteConfiguration cfg = new IgniteConfiguration(); // Override default discovery SPI.  cfg.setDiscoverySpi(spi); // Start Ignite node. Ignite ignite =Ignition.start(cfg);

System.out.println(
"IgniteCluster1 start OK."); CacheConfiguration<Integer, String> cacheCfg = new CacheConfiguration<Integer, String>(); cacheCfg.setBackups(1); cacheCfg.setCacheMode(CacheMode.PARTITIONED); cacheCfg.setName("myCache"); IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cacheCfg); cache.put(1, "ignite1"); System.out.println(cache.get(1)); System.out.println(cache.get(2)); } }

3、 B系統運行Ignite節點2;

package com.coshaho.learn.ignite.cluster;

import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.zk.TcpDiscoveryZookeeperIpFinder;

public class IgniteCluster02 
{
    public static void main(String[] args)
    {
        TcpDiscoverySpi spi = new TcpDiscoverySpi();
        TcpDiscoveryZookeeperIpFinder ipFinder = new TcpDiscoveryZookeeperIpFinder();
        // Specify ZooKeeper connection string.
        ipFinder.setZkConnectionString("192.168.1.104:12181");
        spi.setIpFinder(ipFinder);
        IgniteConfiguration cfg = new IgniteConfiguration();
        // Override default discovery SPI.
        cfg.setDiscoverySpi(spi);
        // Start Ignite node.
        Ignite ignite =Ignition.start(cfg);
        System.out.println("IgniteCluster2 start OK.");
        CacheConfiguration<Integer, String> cacheCfg = new CacheConfiguration<Integer, String>();
        cacheCfg.setBackups(1);
        cacheCfg.setCacheMode(CacheMode.PARTITIONED);
        cacheCfg.setName("myCache");
        IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cacheCfg);
        cache.put(2, "ignite2");
        System.out.println(cache.get(1));
        System.out.println(cache.get(2));
    }
}

可以看到,Ignite節點2可以成功訪問到Ignite節點1存入緩存的數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM