Ignite作为分布式内存,集群管理必不可少,Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于静态IP的节点发现。

两个最重要的TCP通信设置类:

1、 TcpDiscoverySpi

用于设置集群维持与节点发现的tcp通信ip,port。

2、 TcpCommunicationSpi

用于设置业务数据(缓存数据)tcp通信的ip,port。

3、 两者的区别与联系

TcpDiscoverySpi用于维持管理集群,交换的是用户不感知的ignite内部数据;

TcpCommunicationSpi用于业务数据交换;

TcpCommunicationSpi设置的业务数据交换ip,port通过TcpDiscoverySpi在集群间传递。

对于集群管理,我们主要关心TcpDiscoverySpi的设置,TcpDiscoverySpi可以设置节点发现方法(setDiscoverySpi),TcpDiscoveryVmIpFinder用于设置静态IP,TcpDiscoveryVmIpFinder设置了一个IP,即可以感知到此IP能感知到的所有节点信息。

我用了2台笔记本电脑运行了3个Ignite节点,并配置了静态IP发现规则,每个节点都成功的获取到了不同节点缓存的数据。

3个Ignite节点类结构一致,代码如下:

package com.coshaho.learn.ignite.cluster;

import java.util.Arrays;

import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; /**
*
* IgniteCluster1.java Create on 2017年5月30日 下午8:42:18
*
* 类功能说明: 运行在IP为192.168.1.103的笔记本上的Ignite节点
*
* Copyright: Copyright(c) 2013
* Company: COSHAHO
* @Version 1.0
* @Author coshaho
*/
public class IgniteCluster1
{
public static void main(String[] args)
{
IgniteConfiguration cfg=new IgniteConfiguration();
// Explicitly configure TCP discovery SPI to provide list of initial nodes
// from the first cluster. TcpDiscoverySpi discoverySpi=new TcpDiscoverySpi();
// Initial local port to listen to.
discoverySpi.setLocalPort(49100);
// Changing local port range. This is an optional action.
discoverySpi.setLocalPortRange(20); TcpDiscoveryVmIpFinder ipFinder=new TcpDiscoveryVmIpFinder();
ipFinder.setAddresses(Arrays.asList("192.168.1.105:49300..49320"));
// Overriding IP finder.
discoverySpi.setIpFinder(ipFinder);
// Overriding discovery SPI.
cfg.setDiscoverySpi(discoverySpi); // Explicitly configure TCP communication SPI by changing local port number for
// the nodes from the first cluster.
TcpCommunicationSpi commSpi=new TcpCommunicationSpi();
commSpi.setLocalPort(48100);
// Overriding communication SPI.
cfg.setCommunicationSpi(commSpi); // Starting a node.
Ignite ignite = Ignition.start(cfg);
System.out.println("IgniteCluster1 start OK.");
CacheConfiguration<Integer, String> cacheCfg = new CacheConfiguration<Integer, String>();
cacheCfg.setName("myCache");
IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cacheCfg);
System.out.println(cache.get(1));
System.out.println(cache.get(2));
System.out.println(cache.get(3));
}
}
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.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi; /**
*
* IgniteCluster2.java Create on 2017年5月30日 下午8:42:07
*
* 类功能说明: 运行在IP为192.168.1.105的笔记本上的Ignite节点
*
* Copyright: Copyright(c) 2013
* Company: COSHAHO
* @Version 1.0
* @Author coshaho
*/
public class IgniteCluster2
{
public static void main(String[] args)
{
IgniteConfiguration cfg=new IgniteConfiguration();
// Explicitly configure TCP discovery SPI to provide list of initial nodes
// from the second cluster. TcpDiscoverySpi discoverySpi=new TcpDiscoverySpi();
// Initial local port to listen to.
discoverySpi.setLocalPort(49200);
// Changing local port range. This is an optional action.
discoverySpi.setLocalPortRange(20);
// Overriding discovery SPI.
cfg.setDiscoverySpi(discoverySpi); // Explicitly configure TCP communication SPI by changing local port number for
// the nodes from the second cluster.
TcpCommunicationSpi commSpi=new TcpCommunicationSpi();
commSpi.setLocalPort(48200);
cfg.setCommunicationSpi(commSpi); // Starting a 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));
System.out.println(cache.get(3)); }
}
package com.coshaho.learn.ignite.cluster;

import java.util.Arrays;

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.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder; /**
*
* IgniteCluster3.java Create on 2017年5月30日 下午8:41:22
*
* 类功能说明: 运行在IP为192.168.1.105的笔记本上的Ignite节点
*
* Copyright: Copyright(c) 2013
* Company: COSHAHO
* @Version 1.0
* @Author coshaho
*/
public class IgniteCluster3 {
public static void main(String[] args)
{
// 192.168.1.105 192.168.1.103
IgniteConfiguration cfg=new IgniteConfiguration(); // Explicitly configure TCP discovery SPI to provide list of initial nodes
// from the first cluster.
TcpDiscoverySpi discoverySpi=new TcpDiscoverySpi();
// Initial local port to listen to.
discoverySpi.setLocalPort(49300);
// Changing local port range. This is an optional action.
discoverySpi.setLocalPortRange(20); TcpDiscoveryVmIpFinder ipFinder=new TcpDiscoveryVmIpFinder();
ipFinder.setAddresses(Arrays.asList("192.168.1.105:49200..49220"));
// Overriding IP finder.
discoverySpi.setIpFinder(ipFinder);
// Overriding discovery SPI.
cfg.setDiscoverySpi(discoverySpi); TcpCommunicationSpi commSpi=new TcpCommunicationSpi();
commSpi.setLocalPort(48300);
cfg.setCommunicationSpi(commSpi); // Starting a node.
Ignite ignite = Ignition.start(cfg);
System.out.println("IgniteCluster3 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(3, "ignite3");
System.out.println(cache.get(1));
System.out.println(cache.get(2));
System.out.println(cache.get(3));
}
}

Ignite集群管理——基于静态IP的节点发现的更多相关文章

  1. Ignite集群管理——基于Zookeeper的节点发现

    Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于Zookeeper的节点发现. 环境准备,两台笔记本电脑A,B.A笔记本上使用VMware虚拟机安装了U ...

  2. Elasticsearch集群管理之添加、删除节点

    1.问题抛出 1.1 新增节点问题 我的群集具有黄色运行状况,因为它只有一个节点,因此副本保持未分配状态,我想要添加一个节点,该怎么弄? 1.2 删除节点问题 假设集群中有5个节点,我必须在运行时删除 ...

  3. Hadoop集群管理

    1.简介 Hadoop是大数据通用处理平台,提供了分布式文件存储以及分布式离线并行计算,由于Hadoop的高拓展性,在使用Hadoop时通常以集群的方式运行,集群中的节点可达上千个,能够处理PB级的数 ...

  4. Spark的集群管理器

    上篇文章谈到Driver节点和Executor节点,但是如果想要运行Driver节点和Executor节点,就不能不说spark的集群管理器.spark的集群管理器大致有三种,一种是自带的standa ...

  5. Kubernetes集群管理工具kubectl命令技巧大全

    一. kubectl概述 Kubectl是用于控制Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署. kubectl命令的语法如下 ...

  6. 基于puppet分布式集群管理公有云多租户的架构浅谈

    基于puppet分布式集群管理公有云多租户的架构浅谈 一.架构介绍   在此架构中,每个租户的业务集群部署一台puppet-master作为自己所在业务集群的puppet的主服务器,在每个业务集群所拥 ...

  7. 基于zookeeper+mesos+marathon的docker集群管理平台

    参考文档: mesos:http://mesos.apache.org/ mesosphere社区版:https://github.com/mesosphere/open-docs mesospher ...

  8. 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.6.集群管理命令

    3.6. 集群管理命令 3.6.1. RAC的启动与关闭 oracle rac默认会开机自启动,如需维护时可使用以下命令: 关闭: crsctl stop cluster 停止本节点集群服务 crsc ...

  9. 学习笔记(4)——实验室集群管理结点IP配置

    经过验证,集群管理结点mgt的IP配置应为如下所示: [root@mgt zmq]# ifconfig//外部网卡 eth0 Link encap:Ethernet HWaddr 5C:F3:FC:E ...

随机推荐

  1. [工具] Snipaste

    https://zh.snipaste.com/ Snipaste 是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上! 下载并打开 Snipaste,按下 F1 来开始截图, 选择“复制到剪贴 ...

  2. Coding 代码管理快速入门(转)

    当项目创建好了之后,我们该如何上传代码到 coding 上呢? Coding 网站使用“ Git 仓库”(类似 github )来管理代码. 其操作原理在于:利用 git 服务,将本地的项目目录下的文 ...

  3. iOS - 开源框架、项目和学习资料汇总(其他篇)

    数据库 1. FMDB – sqlite的工具, 多线程FMDatabaseQueue实例,FMDB数据库的使用演示和封装工具类.GXDatabaseUtils – 在FMDB基础上的工具.2. re ...

  4. 【vue】vue.js安装教程/vue项目搭建

    前提:已安装nodejs——npm  (备注教程  “物理安装”  ) 第一步:建了一个managerSys文件夹,用于保存项目 第二步:从cmd进入该文件夹,之后开始安装vue.js相关 1)在该项 ...

  5. poj3728The merchant 【倍增】【LCA】

    There are N cities in a country, and there is one and only one simple path between each pair of citi ...

  6. HDU 3642 - Get The Treasury - [加强版扫描线+线段树]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3642 Time Limit: 10000/5000 MS (Java/Others) Memory L ...

  7. codeforces 869A/B/C

    A. The Artful Expedient time limit per test 1 second memory limit per test 256 megabytes input stand ...

  8. win7操作系统说明

    · 能够使用windows7操作系统成为了许多电脑用户的一大喜悦之事,相比之前的Vista系统,windows7系统真的是好看了,快了,好用了,但你是否担心自己的windows7系统就像新安装其他Wi ...

  9. 企业证书安装App

    通过苹果自带的浏览器访问:itms-services:///?action=download-manifest&url=https://www.xxxx.com:xxx/xxxx/xxx.pl ...

  10. 使用Homebrew在Mac OS X EI Capitan上安装与配置nginx和PHP

    安装nginx brew install nginx sudo nginx 测试安装 在浏览器打开下面的链接地址 http://localhost:8080 nginx.conf配置 # HTTPS ...