在Window环境下搭建一个三主三从模式的Redis集群

所需软件:Redis、Ruby语言运行环境、Redis的Ruby驱动、创建Redis集群的工具redis-trib.rb

二 安装配置redis
redis下载地址: https://github.com/MSOpenTech/redis/releases; 下载Redis-x64-3.2.100.zip。

集群规划有三个节点的集群,每个节点有一主一备。需要6台虚拟机(也就是后面的六个Redis文件夹)。

把 redis 解压后,再复制出 5 份,配置 三主三从集群。 由于 redis 默认端口号为 6379,那么其它5份的端口可以为6380,6381,6382,6383,6384。 并且把目录(文件夹名字)使用端口号命名。
在这里插入图片描述

打开目录6379下有一个文件 redis.windows.conf,修改里面的端口号,以及集群支持配置。
在这里插入图片描述
打开目录6379下有一个文件 redis.windows.conf,修改里面的端口号,以及集群支持配置(记得一定要把port前面的#号去掉,那个是注释,如果不把注释去掉搭建集群会失败)。
在这里插入图片描述
同理修改刚刚这个文件( redis.windows.conf)其他配置来支持集群
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes

修改以上配置的原因
如果cluster-enabled 不为yes, 那么在使用JedisCluster集群代码获取的时候,会报错。
cluster-node-timeout 调整为 15000,那么在创建集群的时候,不会超时。
cluster-config-file nodes-6379.conf 是为该节点的配置信息,这里使用 nodes-端口.conf命名方法。服务启动后会在目录生成该文件。
(要注意的是以上配置的前面都会有一个#符号,记得把它去掉)
在这里插入图片描述

在6379这个目录下编写一个 bat 来启动 redis,在每个节点目录下建立 start.bat,内容如下:
title redis-6380
redis-server.exe redis.windows.conf

在这里插入图片描述

注意,刚刚以上配置6379的 redis.windows.conf文件在另外5个文件夹(6380,6381,6382,6383,6384)也操作一边

三 安装Ruby
redis的集群使用 ruby脚本编写,所以系统需要有 Ruby 环境,去百度搜索关键字"ruby下载安装"即可,这个比较简单,就不做过多解释
安装图如下(安装时3个选项都勾选):
在这里插入图片描述
四 安装Redis的Ruby驱动
下载地址 https://rubygems.org/pages/download, 下载后解压,然后切换到解压目录中,D:\Program Files\redis\Ruby25-x64 打开命令行(cmd), 在命令行执行: ruby setup.rb。

然后GEM 安装 Redis :切换到redis安装目录,需要在命令行中,执行 gem install redis
在这里插入图片描述

五 安装集群脚本redis-trib

下载地址 https://raw.githubusercontent.com/antirez/redis/unstable/src/redis-trib.rb

打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb,点击鼠标保存到一个Redis的目录下,最好保存6份,让每一个集群节点都有一份
在这里插入图片描述
集群的命令为 :redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

代码解释:–replicas 1 表示每个主数据库拥有从数据库个数为1。master节点不能少于3个,所以我们用了6个redis

六 启动每个节点并且执行集群构建脚本

把每个节点下的 start.bat双击启动,然后打开命令行切换你Redis安装目录中执行集群创建的命令:
redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

注意:如果上面的语句执行不成功。可以在前面加上ruby再运行。
(ruby redis-trib.rb create --replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384

会出现如下图的情况
在这里插入图片描述
然后中间期间会出现 Can I set the above configuration? (type ‘yes’ to accept): 请确定并输入 yes 。成功后的结果如下

在这里插入图片描述
七测试
命令 redis-cli –c –h ”127.0.0.1” –p “6379” ; (解释一下:c 表示集群)
在这里插入图片描述
输入dbsize 来查询记录总数
在这里插入图片描述
这样子就已经是配置成功了,当你想用Redis集群的时候,就打开6379-6384文件夹下的start.bat文件,让它们运行起来就行。这个三主三从模式是关闭掉其中一个主节点(6379-6381),它们的副节点(6382-6384)就会自动变为刚刚下线的主节点(如果刚刚下线的主节点再次上线,会变为刚刚晋升为主节点的副节点),可以全部关闭所有的主节点或者全部的副节点,也就是节点数要大于等于3,不然会报错。

八Java代码连接Redis集群的实例

public static JedisCluster getJedis() {
		JedisPoolConfig config=new JedisPoolConfig();
		config.setMaxTotal(30);
		config.setMaxIdle(10);
		
		JedisCluster jedisCluster=null;
		try {
			Set<HostAndPort> jedisClusterNode=new HashSet<HostAndPort>();
			jedisClusterNode.add(new HostAndPort("127.0.0.1", 6379));
			jedisClusterNode.add(new HostAndPort("127.0.0.1", 6380));
			jedisClusterNode.add(new HostAndPort("127.0.0.1", 6381));
			jedisClusterNode.add(new HostAndPort("127.0.0.1", 6382));
			jedisClusterNode.add(new HostAndPort("127.0.0.1", 6383));
			jedisClusterNode.add(new HostAndPort("127.0.0.1", 6384));
			jedisCluster=new JedisCluster(jedisClusterNode, config);
			
		}catch(Exception e) {
			e.printStackTrace();
		}
		return jedisCluster;
	}
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
集群规划: 主机名 IP 安装的软件 运行的进程 weekend01 192.168.1.201 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) weekend02 192.168.1.202 jdk、hadoop NameNode、DFSZKFailoverController(zkfc) weekend03 192.168.1.203 jdk、hadoop ResourceManager weekend04 192.168.1.204 jdk、hadoop ResourceManager weekend05 192.168.1.205 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain weekend06 192.168.1.206 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain weekend07 192.168.1.207 jdk、hadoop、zookeeper DataNode、NodeManager、JournalNode、QuorumPeerMain 说明: 1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态。Active NameNode对外提供服务,而Standby NameNode则不对外提供服务 仅同步active namenode的状态,以便能够在它失败时快速进行切换。 hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM。这里我们使用简单的QJM。在该方案中,主备NameNode之间通过一组JournalNode同步元数据 信息,一条数据只要成功写入多数JournalNode即认为写入成功。通常配置奇数个JournalNode 这里还配置了一个zookeeper集群,用于ZKFC(DFSZKFailoverController)故障转移,当Active NameNode挂掉了,会自动切换Standby NameNode为standby状态 2.hadoop-2.2.0中依然存在一个问题,就是ResourceManager只有一个,存在单点故障,hadoop-2.4.1解决了这个问题,有两个ResourceManager,一个是Active,一个 是Standby,状态由zookeeper进行协调

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值