Ignite集群管理——基于静态IP的节点发现
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的节点发现的更多相关文章
- Ignite集群管理——基于Zookeeper的节点发现
Ignite支持基于组播,静态IP,Zookeeper,JDBC等方式发现节点,本文主要介绍基于Zookeeper的节点发现. 环境准备,两台笔记本电脑A,B.A笔记本上使用VMware虚拟机安装了U ...
- Elasticsearch集群管理之添加、删除节点
1.问题抛出 1.1 新增节点问题 我的群集具有黄色运行状况,因为它只有一个节点,因此副本保持未分配状态,我想要添加一个节点,该怎么弄? 1.2 删除节点问题 假设集群中有5个节点,我必须在运行时删除 ...
- Hadoop集群管理
1.简介 Hadoop是大数据通用处理平台,提供了分布式文件存储以及分布式离线并行计算,由于Hadoop的高拓展性,在使用Hadoop时通常以集群的方式运行,集群中的节点可达上千个,能够处理PB级的数 ...
- Spark的集群管理器
上篇文章谈到Driver节点和Executor节点,但是如果想要运行Driver节点和Executor节点,就不能不说spark的集群管理器.spark的集群管理器大致有三种,一种是自带的standa ...
- Kubernetes集群管理工具kubectl命令技巧大全
一. kubectl概述 Kubectl是用于控制Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装部署. kubectl命令的语法如下 ...
- 基于puppet分布式集群管理公有云多租户的架构浅谈
基于puppet分布式集群管理公有云多租户的架构浅谈 一.架构介绍 在此架构中,每个租户的业务集群部署一台puppet-master作为自己所在业务集群的puppet的主服务器,在每个业务集群所拥 ...
- 基于zookeeper+mesos+marathon的docker集群管理平台
参考文档: mesos:http://mesos.apache.org/ mesosphere社区版:https://github.com/mesosphere/open-docs mesospher ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.6.集群管理命令
3.6. 集群管理命令 3.6.1. RAC的启动与关闭 oracle rac默认会开机自启动,如需维护时可使用以下命令: 关闭: crsctl stop cluster 停止本节点集群服务 crsc ...
- 学习笔记(4)——实验室集群管理结点IP配置
经过验证,集群管理结点mgt的IP配置应为如下所示: [root@mgt zmq]# ifconfig//外部网卡 eth0 Link encap:Ethernet HWaddr 5C:F3:FC:E ...
随机推荐
- 【CF700E】Cool Slogans 后缀自动机+线段树合并
[CF700E]Cool Slogans 题意:给你一个字符串S,求一个最长的字符串序列$s_1,s_2,...,s_k$,满足$\forall s_i$是S的子串,且$s_i$在$s_{i-1}$里 ...
- Thinkphp框架下设置session的过期时间
打开项目中的配置文件,添加session的过期配置,如下: 'SESSION_OPTIONS' => array( 'name' => 'BJYSESSION', //设置session名 ...
- Spring Boot 利用插件构造QueryDSL语句时报错:You need to run build with JDK or have tools.jar on the classpath.If this occur....
You need to run build with JDK or have tools.jar on the classpath.If this occures during eclipse bui ...
- 使用Dockerfile文件制作centos6.8基础镜像,基于centos基础镜像的ssh远程登录镜像,jdk1.8镜像,tomcat镜像,elasticsearch镜像等等
一.首先制作一个centos6.8的裸机镜像 创建一个干净的目录: [root@docker centos6.]# ls c68-docker.tar.xz Dockerfile Dockerfile ...
- Mysql: mysqlbinlog命令查看日志文件
想查看mysql的binlog文件,但是裸的binlog文件是无法直视的,mysqlbinlog这个工具是用来查看binlog文件内容的(使用方式man mysqlbinlog查看),但是使用mysq ...
- pandas常用
#python中的pandas库主要有DataFrame和Series类(面向对象的的语言更愿意叫类) DataFrame也就是#数据框(主要是借鉴R里面的data.frame),Series也就是序 ...
- 基于Docker部署nodejs应用
基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...
- MySQL权限和用户管理
Mysql权限系统(由mysql权限表进行控制user和db)通过下面两个方面进行认证: 1)对于连接的用户进行身份验证,合法的通过验证,不合法的拒绝连接. 2)对于通过连接认证的用户,可以在合法的范 ...
- android call and audio
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system ConnCtl *:s android audio (http://blog.cs ...
- router-link params传参
1.router.js配置 需要在路径后定义上要传的属性名 --> /:属性名(query方式不需要) { path: '/CreateProgress/:name1', name: ...