centos7-redis集群

简介

集群有什么用
所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定、高效的状态。
使用redis集群的必要性
问题:
我们已经部署好了redis,并且能启动一个redis,实现数据的读写,为什么还要学习redis集群?
答:
(1)单个redis存在不稳定性。当redis服务宕机了,就没有可用的服务了。 (推荐学习:Redis视频教程)
(2)单个redis的读写能力是有限的。
总结:redis集群是为了强化redis的读写能力。

redis主从复制

主从复制模型中,有多个redis节点。
其中,有且仅有一个为主节点Master。从节点Slave可以有多个。
只要网络连接正常,Master会一直将自己的数据更新同步给Slaves,保持主从同步。
在开始redis集群搭建之前,
特点
(1)主节点Master可读、可写.
(2)从节点Slave只读。(read-only)

因此,主从模型可以提高读的能力,在一定程度上缓解了写的能力。因为能写仍然只有Master节点一个,可以将读的操作全部移交到从节点上,变相提高了写能力。

我们先简单回顾一下redis单机版的搭建过程

我的单机版博客https://blog.youkuaiyun.com/qq_41134142/article/details/111353998

一、Redis Cluster(Redis集群)简介

redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.0版本;
redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点;
redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例;
为了实现集群的高可用,即判断节点是否健康(能否正常使用),redis-cluster有这么一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就挂了(fail)。这是判断节点是否挂了的方法;
那么如何判断集群是否挂了呢? -> 如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这个集群就挂了。这是判断集群是否挂了的方法;
那么为什么任意一个节点挂了(没有从节点)这个集群就挂了呢? -> 因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了这16384[0-16383]个slot上,或者说把这些slot均等的分配给了各个节点。当需要在Redis集群存放一个数据(key-value)时,redis会先对这个key进行crc16算法,然后得到一个结果。再把这个结果对16384进行求余,这个余数会对应[0-16383]其中一个槽,进而决定key-value存储到哪个节点中。所以一旦某个节点挂了,该节点对应的slot就无法使用,那么就会导致集群无法正常工作。
综上所述,每个Redis集群理论上最多可以有16384个节点。

查看你的redis版本 cd到你的redis的bin下

redis-server -v 
redis-server --version

二、集群搭建需要的环境

2.1 Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。
2.2 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。因为我没有那么多服务器,也启动不了那么多虚拟机,所在这里搭建的是伪分布式集群,即一台服务器虚拟运行6个redis实例,修改端口号为(7001-7006),当然实际生产环境的Redis集群搭建和这里是一样的。
2.3 安装ruby(这个过程我这用的时间比较长,可能和人品有关吧,快捷的方式都不行,我都是离线来处理的)

三、集群搭建具体步骤如下(注意要关闭防火墙)

3.1 在usr/local目录下新建redis-cluster目录,用于存放集群节点
在这里插入图片描述
3.2 把redis目录下的bin目录下的所有文件复制到/usr/local/redis-cluster/redis01目录下,不用担心这里没有redis01目录,会自动创建的。操作命令如下(注意当前所在路径):

cp -r redis/bin/ redis-cluster/redis01

在这里插入图片描述
3.3 删除redis01目录下的快照文件dump.rdb,并且修改该目录下的redis.cnf文件,具体修改两处地方:一是端口号修改为7001,二是开启集群创建模式,打开注释即可。分别如下图所示:
删除dump.rdb文件
在这里插入图片描述
修改端口号为7001,默认是6379

在这里插入图片描述
将cluster-enabled yes 的注释打开

在这里插入图片描述

3.4 将redis-cluster/redis01文件复制5份到redis-cluster目录下(redis02-redis06),创建6个redis实例,模拟Redis集群的6个节点。然后将其余5个文件下的redis.conf里面的端口号分别修改为7002-7006。分别如下图所示:
创建redis02-06目录

在这里插入图片描述
分别修改redis.conf文件端口号为7002-7006
在这里插入图片描述
3.5 接着启动所有redis节点,由于一个一个启动太麻烦了,所以在这里创建一个批量启动redis节点的脚本文件,命令为start-all.sh,文件内容如下:

cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..


3.6 创建好启动脚本文件之后,需要修改该脚本的权限,使之能够执行,指令如下:

chmod +x start-all.sh

在这里插入图片描述
3.7 执行start-all.sh脚本,启动6个redis节点
在这里插入图片描述
3.8 ok,至此6个redis节点启动成功,接下来正式开启搭建集群,以上都是准备条件。大家不要觉得图片多看起来冗长所以觉得麻烦,其实以上步骤也就一句话的事情:创建6个redis实例(6个节点)并启动
要搭建集群的话,需要使用一个工具(脚本文件),这个工具在redis解压文件的源代码里。因为这个工具是一个ruby脚本文件,所以这个工具的运行需要ruby的运行环境,就相当于java语言的运行需要在jvm上。所以需要安装ruby(这个我搞起来比较麻烦,下面都是这块的介绍),指令如下:

yum install ruby

然后需要把ruby相关的包安装到服务器,我这里用的是redis-4.2.1.gem,大家需要注意的是:redis的版本和ruby包的版本最好保持一致。
将Ruby包安装到服务器:需要先下载再安装
在这里插入图片描述
使用安装,我出现版本问题,下面说了,我下载了两个试了都这样,希望你没有

gem install redis-4.2.1.gem

解决方案:

Centos7 离线安装 redis gem
前置条件,安装rubygems

你自家下载的redis.gem自己找的版本,安装

gem install redis-4.0.3.gem

会出现
在这里插入图片描述
官网:https://index.rubygems.org/pages/download

1.Centos7 离线安装 rubygems
在这里插入图片描述
2.上传到服务器,执行安装
在这里插入图片描述
3.进入目录执行安装
ruby setup.rb

下载redis gem

进入网址:https://rubygems.org/gems/redis/versions
在这里插入图片描述
下载4.2.1的版本,然后执行安装gem install redis-4.2.1.gem还是出现

在这里插入图片描述

尝试新的解决方案

紧接着我的出现问题,在线没法安装官网来
我的在线安装老是不行,443拒接连接,没办法,离线搞定
在线安装参考:https://www.cnblogs.com/carryping/p/7447823.html

解决办法是 先安装rvm,再把ruby版本提升至2.3.3
Centos7 离线安装 rvm

登录网址https://github.com/rvm/rvm/tags
在这里插入图片描述
新建目录,并进入目录:

mkdir rvm && cd rvm

rz上传,并解压

tar -zxvf rvm-1.29.12.tar.gz

在这里插入图片描述

然后到rvm-1.29.12中执行 安装:

./install --auto-dotfiles

使文件生效

source /usr/local/rvm/bin/rvm

查看rvm的版本

rvm -v

查看rvm库中已知的ruby版本

rvm list known

在这里插入图片描述

安装一个ruby版本
这个是重点

rvm install 2.3.3 

这个过程比较慢,等吧
在这里插入图片描述
都让我等了快一个小时了,文件不大,你可以看到给你的时间
在这里插入图片描述

使用一个你安装的ruby版本

rvm use 2.3.3

设置默认版本

rvm remove 2.0.0

卸载一个已知版本

ruby --version

再安装redis就可以了

gem install redis

解决rvm环境问题后继续操作

重新执行安装命令

gem install redis-4.2.1.gem

没问题后,我们已经把ruby工具所需要的运行环境和ruby包安装好了,接下来需要把这个ruby脚本工具复制到usr/local/redis-cluster目录下。那么这个ruby脚本工具在哪里呢?之前提到过,在redis解压文件的源代码里,即redis/src目录下的redis-trib.rb文件。

注:有时间在优化完善

参考:https://blog.youkuaiyun.com/qq_25763595/article/details/107731545
https://blog.youkuaiyun.com/qq_25763595/article/details/107731563
https://www.cnblogs.com/carryping/p/7447823.html
https://blog.youkuaiyun.com/qq_25763595/article/details/107731478

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值