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节点类结构一致,代码如下:

  1. package com.coshaho.learn.ignite.cluster;
  2.  
  3. import java.util.Arrays;
  4.  
  5. import org.apache.ignite.Ignite;
  6. import org.apache.ignite.IgniteCache;
  7. import org.apache.ignite.Ignition;
  8. import org.apache.ignite.configuration.CacheConfiguration;
  9. import org.apache.ignite.configuration.IgniteConfiguration;
  10. import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
  11. import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
  12. import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
  13.  
  14. /**
  15. *
  16. * IgniteCluster1.java Create on 2017年5月30日 下午8:42:18
  17. *
  18. * 类功能说明: 运行在IP为192.168.1.103的笔记本上的Ignite节点
  19. *
  20. * Copyright: Copyright(c) 2013
  21. * Company: COSHAHO
  22. * @Version 1.0
  23. * @Author coshaho
  24. */
  25. public class IgniteCluster1
  26. {
  27. public static void main(String[] args)
  28. {
  29. IgniteConfiguration cfg=new IgniteConfiguration();
  30. // Explicitly configure TCP discovery SPI to provide list of initial nodes
  31. // from the first cluster.
  32.  
  33. TcpDiscoverySpi discoverySpi=new TcpDiscoverySpi();
  34. // Initial local port to listen to.
  35. discoverySpi.setLocalPort(49100);
  36. // Changing local port range. This is an optional action.
  37. discoverySpi.setLocalPortRange(20);
  38.  
  39. TcpDiscoveryVmIpFinder ipFinder=new TcpDiscoveryVmIpFinder();
  40. ipFinder.setAddresses(Arrays.asList("192.168.1.105:49300..49320"));
  41. // Overriding IP finder.
  42. discoverySpi.setIpFinder(ipFinder);
  43. // Overriding discovery SPI.
  44. cfg.setDiscoverySpi(discoverySpi);
  45.  
  46. // Explicitly configure TCP communication SPI by changing local port number for
  47. // the nodes from the first cluster.
  48. TcpCommunicationSpi commSpi=new TcpCommunicationSpi();
  49. commSpi.setLocalPort(48100);
  50. // Overriding communication SPI.
  51. cfg.setCommunicationSpi(commSpi);
  52.  
  53. // Starting a node.
  54. Ignite ignite = Ignition.start(cfg);
  55. System.out.println("IgniteCluster1 start OK.");
  56. CacheConfiguration<Integer, String> cacheCfg = new CacheConfiguration<Integer, String>();
  57. cacheCfg.setName("myCache");
  58. IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cacheCfg);
  59. System.out.println(cache.get(1));
  60. System.out.println(cache.get(2));
  61. System.out.println(cache.get(3));
  62. }
  63. }
  1. package com.coshaho.learn.ignite.cluster;
  2.  
  3. import org.apache.ignite.Ignite;
  4. import org.apache.ignite.IgniteCache;
  5. import org.apache.ignite.Ignition;
  6. import org.apache.ignite.cache.CacheMode;
  7. import org.apache.ignite.configuration.CacheConfiguration;
  8. import org.apache.ignite.configuration.IgniteConfiguration;
  9. import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
  10. import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
  11.  
  12. /**
  13. *
  14. * IgniteCluster2.java Create on 2017年5月30日 下午8:42:07
  15. *
  16. * 类功能说明: 运行在IP为192.168.1.105的笔记本上的Ignite节点
  17. *
  18. * Copyright: Copyright(c) 2013
  19. * Company: COSHAHO
  20. * @Version 1.0
  21. * @Author coshaho
  22. */
  23. public class IgniteCluster2
  24. {
  25. public static void main(String[] args)
  26. {
  27. IgniteConfiguration cfg=new IgniteConfiguration();
  28. // Explicitly configure TCP discovery SPI to provide list of initial nodes
  29. // from the second cluster.
  30.  
  31. TcpDiscoverySpi discoverySpi=new TcpDiscoverySpi();
  32. // Initial local port to listen to.
  33. discoverySpi.setLocalPort(49200);
  34. // Changing local port range. This is an optional action.
  35. discoverySpi.setLocalPortRange(20);
  36. // Overriding discovery SPI.
  37. cfg.setDiscoverySpi(discoverySpi);
  38.  
  39. // Explicitly configure TCP communication SPI by changing local port number for
  40. // the nodes from the second cluster.
  41. TcpCommunicationSpi commSpi=new TcpCommunicationSpi();
  42. commSpi.setLocalPort(48200);
  43. cfg.setCommunicationSpi(commSpi);
  44.  
  45. // Starting a node.
  46. Ignite ignite =Ignition.start(cfg);
  47. System.out.println("IgniteCluster2 start OK.");
  48. CacheConfiguration<Integer, String> cacheCfg = new CacheConfiguration<Integer, String>();
  49. cacheCfg.setBackups(1);
  50. cacheCfg.setCacheMode(CacheMode.PARTITIONED);
  51. cacheCfg.setName("myCache");
  52. IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cacheCfg);
  53. cache.put(2, "ignite2");
  54. System.out.println(cache.get(1));
  55. System.out.println(cache.get(2));
  56. System.out.println(cache.get(3));
  57.  
  58. }
  59. }
  1. package com.coshaho.learn.ignite.cluster;
  2.  
  3. import java.util.Arrays;
  4.  
  5. import org.apache.ignite.Ignite;
  6. import org.apache.ignite.IgniteCache;
  7. import org.apache.ignite.Ignition;
  8. import org.apache.ignite.cache.CacheMode;
  9. import org.apache.ignite.configuration.CacheConfiguration;
  10. import org.apache.ignite.configuration.IgniteConfiguration;
  11. import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
  12. import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
  13. import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
  14.  
  15. /**
  16. *
  17. * IgniteCluster3.java Create on 2017年5月30日 下午8:41:22
  18. *
  19. * 类功能说明: 运行在IP为192.168.1.105的笔记本上的Ignite节点
  20. *
  21. * Copyright: Copyright(c) 2013
  22. * Company: COSHAHO
  23. * @Version 1.0
  24. * @Author coshaho
  25. */
  26. public class IgniteCluster3 {
  27. public static void main(String[] args)
  28. {
  29. // 192.168.1.105 192.168.1.103
  30. IgniteConfiguration cfg=new IgniteConfiguration();
  31.  
  32. // Explicitly configure TCP discovery SPI to provide list of initial nodes
  33. // from the first cluster.
  34. TcpDiscoverySpi discoverySpi=new TcpDiscoverySpi();
  35. // Initial local port to listen to.
  36. discoverySpi.setLocalPort(49300);
  37. // Changing local port range. This is an optional action.
  38. discoverySpi.setLocalPortRange(20);
  39.  
  40. TcpDiscoveryVmIpFinder ipFinder=new TcpDiscoveryVmIpFinder();
  41. ipFinder.setAddresses(Arrays.asList("192.168.1.105:49200..49220"));
  42. // Overriding IP finder.
  43. discoverySpi.setIpFinder(ipFinder);
  44. // Overriding discovery SPI.
  45. cfg.setDiscoverySpi(discoverySpi);
  46.  
  47. TcpCommunicationSpi commSpi=new TcpCommunicationSpi();
  48. commSpi.setLocalPort(48300);
  49. cfg.setCommunicationSpi(commSpi);
  50.  
  51. // Starting a node.
  52. Ignite ignite = Ignition.start(cfg);
  53. System.out.println("IgniteCluster3 start OK.");
  54. CacheConfiguration<Integer, String> cacheCfg = new CacheConfiguration<Integer, String>();
  55. cacheCfg.setBackups(1);
  56. cacheCfg.setCacheMode(CacheMode.PARTITIONED);
  57. cacheCfg.setName("myCache");
  58. IgniteCache<Integer, String> cache = ignite.getOrCreateCache(cacheCfg);
  59. cache.put(3, "ignite3");
  60. System.out.println(cache.get(1));
  61. System.out.println(cache.get(2));
  62. System.out.println(cache.get(3));
  63. }
  64. }

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. Unity3D Mecanim :Body Mask的使用、 角色Retargeting原理分析、Apply RootMotion

    一.Body Mask的使用 1.1.配置好骨骼后通过Muscles来微调角色骨骼中的运动范围,以避免角色在动画中的不正确的叠加或失真等现象. 1.2.身体遮罩BodyMask更形象的描述就是身体的开 ...

  2. 配置java环境变量后没有生效的解决办法

    参考文章:https://blog.csdn.net/tooky_poom/article/details/60768458 系统安装了jdk1.7,环境变量正常,但是安装jdk1.8后,修改环境变量 ...

  3. oracle的日期相减

    oracle的日期相减 : 两个date类型的 日期相减,得到的是天数,可能是带小数点的.如下:

  4. python转化字符串形式的json

    在使用python对字符串形式的json进行 json.loads() 的操作时,遇到了:JSONDecodeError: Invalid \escape,提示\无法excape,可以通过以下方式将字 ...

  5. 基于Token的多平台身份认证价格设计

    1   概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情. 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格局 . 不同的客户端产生了不同的用户使用 ...

  6. Pycharm中如何使用科学计算库

    1.简便起见 比起麻烦的安装各种库,我们选择最方便的Anaconda的conda或pip(兼容支持)安装相关库. Pycharm本身缺少numpy和matplotlib这些库,而另一个Python的开 ...

  7. SQL Fundamentals || DCL(Data Control Language) || 系统权限&对象权限管理(GRANT&REVOKE)

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  8. physics---hdu5826(积分)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5826 题意:有n个小球在一条直线上滚动,起始位置为xi, 方向为di(-1往左走,1往右走),初始速度 ...

  9. 洛谷P2414 阿狸的打字机 [NOI2011] AC自动机+树状数组/线段树

    正解:AC自动机+树状数组/线段树 解题报告: 传送门! 这道题,首先想到暴力思路还是不难的,首先看到y有那么多个,菜鸡如我还不怎么会可持久化之类的,那就直接排个序什么的然后按顺序做就好,这样听说有7 ...

  10. 几种常用CSS3样式

    在我们日常工作中,由于考虑到浏览器的兼容性,所以很少用CSS3样式.关于其标准,W3C 仍然在对 CSS3 规范进行开发.不过,现代浏览器已经实现了相当多的 CSS3 属性.最近学习了CSS3,发现功 ...