Redis Cluster集群安装(手工搭建 && redis-cli工具搭建)

2021-12-24更新:本教程 Redis-6.2.1 同样适用 

集群搭建,推荐使用 Redis Cluster 方式搭建!!!


1.环境准备

  • Redis 5.0.3(请点击:下载)
  • CentOS 6.2
  • 虚拟机(6台,IP分别为192.168.204.201~192.168.204.206)
  • 安装目录:/usr/local/lib目录下
  • 主从分配:主:192.168.204.201、192.168.204.202、192.168.204.203
  •                   从:192.168.204.204、192.168.204.205、192.168.204.206

2.Redis集群节点数选择

       在搭建Redis集群时,到底选择几个节点合适呢?到底是应该选择奇数节点还是偶数节点呢?我们来通过一组示例来进行分析:

节点3节点环境4节点环境5节点环境6节点环境

以此类推

...

...

节点主从分配1master  2slave2master  2slave2master  3slave3master  3slave
存储空间最大等于1个节点的容量(如果是2个master的话,那么数据丢失一部分)2个节点的容量2个节点的容量3个节点的容量
允许几个节点故障允许1个节点故障允许1个节点故障(集群中半数以上节点认为故障,才会选举)允许2个节点故障允许2个节点故障

       通过对比我们发现,Redis集群选则几个节点,选择奇数偶数节点,还是得看也无需求。不过,企业既然选择了Redis集群,也不差这一个节点的钱,一般做法是偶数节点的Redis集群。

        之前的Redis集群,是通过代理主机来解决的,但是 Redis3.0 中提供了解决方案。就是无中心化集群配置。【比如有三个节点,分别是:用户、订单、库存。无中心化集群,即:客户端连接到哪个节点都OK,都能对集群进行操作。比如要操作用户相关,但是客户端连接到了订单节点。集群内部会帮我们跳转至要操作的节点】

3.Redis编译安装

      单机版Redis安装,请移步:Redis介绍 && 安装,此处仅作简单介绍(安装至192.168.204.201)

      ①使用命令:tar zxvf redis-5.0.3.tar.gz -C /usr/local/lib 解压缩至/usr/local/lib目录下

      ②进入redis-5.0.3目录;

      ③使用命令:yum install gcc,来安装gcc;

      ④执行命令:make,来完成编译。

 提示:

      ①如果出现如下提示,则说明未安装gcc,gcc-4.4.7-4.el6.x86_64.rpm,使用命令:yum install gcc,来安装gcc。

/bin/sh: cc: command not found
make[1]: *** [adlist.o] Error 127
make[1]: Leaving directory `/usr/local/lib/redis-5.0.3/src‘ 
make: *** [all] Error 2

      ②如果出现如下提示,则将执行 make 改为执行 make MALLOC=libc,可能是因为编译库的问题。再执行 make install 执行成功后,到此编译安装结束。

In file included from adlist.c:34:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/local/lib/redis-5.0.3/src‘
make: *** [all] Error 2

4.集群搭建

       已经在192.168.204.201节点安装单节点Redis,如需集群搭建,我们需要对Redis中配置文件 redis.conf 进行配置;

      

 ①通过 vi 或者 vim ,进入 redis.conf 文件进行编辑,编辑如下几项即可:

//1.端口(默认6379,如果机器不够可能会在一个机器部署多个节点,此处端口则需要修改,反之不需要修改,使用默认即可)
port 6379

//2.本机ip(默认127.0.0.1,需要改为其他节点机器可访问的ip,否则创建集群时无法访问对应的端口,无法创建集群;
//如果这行写成当前节点机器固定ip,这样本机或者其他客户端通过命令行连接,则需要指定ip和port了(命令:./redis-cli -h 192.168.204.202 -p 6379)
//切记:集群搭建完成后,也可以将bind这行注释掉,这样任何客户端都可以连接该节点了();)
bind 127.0.0.1

//3.配置后台启动
daemonize yes  #后台启动

//4.是否启动集群模式(集群需要修改为yes)
cluster-enabled yes #启动集群模式

//5.指定集群节点超时时间(打开注释即可)
cluster-node-timeout 15000

//6.指定集群节点的配置文件(打开注释即可)
// 这个文件不需要手工编辑,它由Redis节点创建和更新.每个Redis群集节点都需要不同的群集配置文件.确保在同一系统中运行的实例没有重叠群集配置文件名
cluster-config-file nodes-6379.conf

//7.(建议)指定redis集群持久化方式(默认rdb,建议使用aof方式,此处是否修改不影响)
//(1)如需了解rdb和aof区别,请移步:https://blog.csdn.net/lzb348110175/article/details/88225011
//(2)了解aof重写,请移步:https://blog.csdn.net/lzb348110175/article/details/99294016
appendonly yes  #指定使用aof持久化

//8.是否处于保护模式
//此处涉及到bind部分,如果bind为指定本机的ip,则此处可以不修改;如bind处你注释掉了,则此处需要修改为非保护模式
protected-mode no #非保护模式

②进入redis目录,cd /usr/local/lib/redis-5.0.3,通过如下命令:src/redis-server ../redis.conf,即可启动redis服务


③通过scp命令,配置免密登陆,将192.168.204.201节点的redis-5.0.3文件夹,直接发送到其他5台节点。如需了解scp命令,请移步:Linux命令---scp;如需了解免密登陆配置,请移步:ZooKeeper集群批量启动(本文有免密登陆配置)

      命令:scp -r /usr/local/lib/redis-5.0.3 root@192.168.204.202:/usr/local/lib

                 scp -r /usr/local/lib/redis-5.0.3 root@192.168.204.203:/usr/local/lib   .........


④在其他5台机器,通过②中命令,便可以将所有节点Redis服务启动,如果启动正常,请继续往下看


⑤开放指定端口,如果你每个节点都是使用6379端口,那么你需要开放该端口。如何开放指定端口,请移步:Linux开放指定端口

       此处切记,这里还有一个Redis集群总线的概念,在你开放6379端口的同时,需要开放Redis集群总线端口,集群总线端口为你使用端口+10000。如果你使用6379,那么Redis集群总线端口就是:16379(Redis集群总线,可自行百度)

  然后执行命令:service iptables restart,重新启动防火墙,使配置生效


⑥集群配置

 集群配置分为手动搭建工具搭建两种方式:接下来分别讲解

    (1)手工搭建:

       ①通过命令:src/redis-server ./redis.conf,将6台服务器redis服务都启动

       ②用客户端连接到192.168.204.201服务器的redis实例,通过cluster meet命令分别连接其他节点,使集群节点之间相关联   

192.168.204.201:6379> cluster meet 192.168.204.202 6379
OK
192.168.204.201:6379> cluster meet 192.168.204.203 6379
OK
192.168.204.201:6379> cluster meet 192.168.204.204 6379
OK
192.168.204.201:6379> cluster meet 192.168.204.205 6379
OK
192.168.204.201:6379> cluster meet 192.168.204.206 6379
OK

       ③连接好可以使用cluster nodes命令查看集群状态,虽然连接各个节点连接成功但是还不能使用,因为还没有将16384个槽分配到集群节点中。接下来完成虚拟槽的分配,将16384个槽分配到三个主节点201、202、203服务器。 添加完槽位后可以使用cluster info命令查看集群状态。

//退出当前客户端实例,通过如下命令完成slot槽的分配
redis-cli -h 192.168.204.201 -p 6379 cluster addslots {0..5461}
redis-cli -h 192.168.204.202 -p 6379 cluster addslots {5462..10922}
redis-cli -h 192.168.204.203 -p 6379 cluster addslots {10923..16383}

      ④将三个master主节点和三个slave从节点关联(根据master主节点ID来关联)。master主节点的ID,你可以通过cluster nodes命令来查看,也可以通过cluster slots命令来查看。

    

//分别进入204、205、206从节点,完成与master主节点的关联
192.168.204.204:6379> cluster replicate 77fd6c14cbc3f6afc6c2dd474b71e898a130a1ed
OK
192.168.204.205:6379> cluster replicate 777380a888e13148089d2bbb3b1e133622b74932
OK
192.168.204.206:6379> cluster replicate fa81aa314321a55a22d8144c2cd86db0c926f898
OK

      ⑤ 至此Redis集群手工搭建完成。


    (2)工具搭建:

随机选择一台节点,执行如下命令来配置集群:(前三个ip主机为master,后三个ip主机为slave)

redis-cli --cluster create --cluster-replicas 1 192.168.204.201:6379 192.168.204.202:6379 192.168.204.203:6379 192.168.204.204:6379 192.168.204.205:6379 192.168.204.206:6379

      ①启动过程,输入yes,集群正常启动;

          可能出现异常:no route to host,这可能是系统防火墙没关;

      ②如果一直处在Waiting for the cluster to join..............,有可能是redis.conf中bind处的问题;

      ③可能因为节点数量过少启动失败,--cluster-replicas 1 的意思就是:为集群中的每个主节点创建1个从节点,本文集群选择3个主节点(分别为201,202,203),所以至少需要存在3个从节点,否则集群创建就会失败;

      ④如图,便可以看到集群已经创建成功。根据我们命令:前三台节点时master主节点,后三台节点是slave从节点。

⑤至此Redis集群使用redis-cli工具搭建完成。 


⑦我们进入redis-cli客户端,通过info replication命令,便能够查看各个节点的角色。

    如果配置了bind为本机ip,你需要使用:redis-cli -h 本机IP -p 端口,进入redis-cli客户端


 ⑧至此,Redis集群搭建完成,我们可以通过命令:redis-cli -h IP -p 端口,在集群内的随意一台机器上连接集群中的其他redis服务。(如果需要通过redis-cli操作集群,一定要加上-c参数,开启集群模式,即:redis-cli -c -h IP -p 端口,否则会报如下错误:(error) MOVED 11469 192.168.204.20x:6379)

【重点】:集群的配置,在 Redis3.0 中提供了无中心化集群配置。所以在客户端要操作集群时,一定要加上-c参数,开启集群模式!!!

⑨连接集群模式后,你可以通过cluster nodes命令来查看集群节点信息,也可以通过cluster slots命令来查看。参考上文手工搭建过程


Redis集群另一种方式搭建:

      Redis 哨兵模式,【哨兵集群 + 主从复制】搭建,参考:Redis哨兵机制 && 哨兵集群搭建_扛麻袋的少年的博客-CSDN博客_redis哨兵搭建集群本文讲解,基于Redis版本:5.0.3 本文是在Redis集群的基础之上,通过Redis哨兵机制来完成Redis集群的高可用方案。如需了解Redis Cluster集群的安装,请移步:Redis-5.0.3集群安装1.什么是哨兵 顾名思义,哨兵的作用就是监控Redis系统的运行状况,在Redis中,哨兵叫做sentinel。它的功能包括两个: ①监...https://blog.csdn.net/lzb348110175/article/details/99585022


Redis Cluster 集群如何扩容、缩容,参考: 

Redis Cluster 集群如何扩容 & 缩容https://blog.csdn.net/lzb348110175/article/details/122168638


Redis Cluster方式集群安装(手工搭建  &&  redis-cli工具搭建),介绍到此为止

如果本文对你有所帮助,那就给我点个赞呗 ^_^ 

End

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扛麻袋的少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值