redis cluster 集群搭建-示例

此示例是在一台服务器上搭建的伪集群,生产尽量多台机器部署,可一台机器开启多个节点,集群最少是6个节点(主从结构以及半数选举机制决定)
1.下载reids

wget https://download.redis.io/releases/redis-6.2.6.tar.gz

使用make命令编译Redis需要c语言环境,CentOS自带c语言环境,若是使用其他Linux系统中没有c语言环境,则需要安装,如yum安装: yum install gcc-c++
查看Linux系统有没有 gcc 环境
         gcc --version
没有就安装,下载安装最新版的 gcc 编译器,安装C语言的编译环境
        yum install gcc-c++
        gcc -v   // 查看gcc版本
安装完 gcc 后, 解压redis安装包
2.解压并安装redis
        tar -zxvf redis-6.2.6.tar.gz
        mv redis-6.2.6 /usr/local/redis
        cd /usr/local/redis
        [root@redis-cluster /data/redis-6.2.6]# make
编译过后,就是安装了,安装Redis的命令如下:
        make install PREFIX=/usr/local/redis
该命令中,前面的”make install PREFIX=”是固定的,而”/usr/local/redis”是Redis的安装目录,一般就这么写,如若需要安装在其他地方,只需将此路径更换即可。
安装完redis后,修改配置参数
3、修改配置
        cd /usr/local/redis
修改redis.conf文件:vim redis.conf
修改如下配置:
        daemonize yes,把默认的no改为yes(允许支持后台启动)
        bind 0.0.0.0  让所有人都可访问,将bind 127.0.0.1 -::1修改为bind 0.0.0.0 
        protected-mode no 改为no 关闭redis的服务保护模式,要配合requirepass 设置密码使用,如果想要开启密码保护,则所有节点的密码都必须一致
            requirepass boyunvision2021
            logfile "/usr/local/redis/bin/redis.log" 如果不设置路径不会保存日志
            loglevel verbose
            appendonly yes #打开aof功能
            maxmemory设置为0,表示cache大小无限制
            maxmemory-policy noeviction
            aof-use-rdb-preamble yes
            如果appendonly.aof文件没有生成则执行下redis-cli config set appendonly yes 或者已经登录redis-cli则直接执行config set appendonly yes 文件就生成了
集群配置修改:
       port 1990                      // 节点端口
       cluster-enabled yes              // 开启集群模式
       cluster-node-timeout 15000       // 节点超时时间(接收 pong 消息回复的时间)
       cluster-config-file  /usr/local/redis/cluster/1990/nodes-1990.conf //集群内部配置文件
       pidfile /usr/local/redis/bin/redis_1990.conf //pid存放
       logfile /usr/local/redis/bin/redis1990.log  //日志存放路径
       dbfilename dump1990.rdb
修改完一个redis.conf文件后,复制redis.conf文件到/usr/local/redis/cluster/1990、1991......1995每个目录下一个文件,并修改文件名为redis1990.conf、redis1991.conf......redis1995.conf
4、启动,执行如下命令同时启动所有
    /usr/local/redis/bin/redis-server /usr/local/redis/1990/redis1990.conf && 
    /usr/local/redis/bin/redis-server /usr/local/redis/1991/redis1991.conf && 
    /usr/local/redis/bin/redis-server /usr/local/redis/1992/redis1992.conf && 
    /usr/local/redis/bin/redis-server /usr/local/redis/1993/redis1993.conf && 
    /usr/local/redis/bin/redis-server /usr/local/redis/1994/redis1994.conf && 
    /usr/local/redis/bin/redis-server /usr/local/redis/1995/redis1995.conf
5、开启集群,集群最少是6个节点
因为我们的redis版本是6.2.6,根据redis官网,redis5及以上的版本可以使用redis-cli --cluster 命令创建集群:
/usr/local/redis/bin/redis-cli --cluster create --cluster-replicas 1 ip:1995 ip:1994 ip:1993 ip:1992 ip:1991 ip:1990
如果你的redis设置的有密码,在以上命令的后边加上密码即可
redis-cli --cluster create --cluster-replicas 1 -a 密码 ip:1995 ip:1994 ip:1993 ip:1992 ip:1991 ip:1990
如果要对集群设置密码:requirepass和masterauth 都需要进行设置,并且需要每个节点的密码都保持相同;
6、测试
./redis-cli -c -p 1995 -a 密码

部分问题解决方案:

1、ERR Slot 0 is already busy (Redis::CommandError)
原因分析:
    这是由于之前搭建集群是,slot 被占用了,清理一下之前数据,重启就可
解决:
    /usr/local/redis/bin/redis-cli -h ip -p 1995
#执行如下两条命令后重启
flushall
cluster reset

2、 分配指定范围的槽位不成功(error) ERR Invalid or out of range slot
解决:
    redis-cli -h 服务器IP -p 端口号 cluster addslots {0..5460}

3、redis最后集群创建出现 /usr/bin/env: ruby: 没有那个文件或目录问题
解决:
    /usr/local/redis/bin/redis-cli -h ip -p 1995 --cluster create --cluster-replicas 1 ip:1995 ip:1994 ip:1993 ip:1992 ip:1991 ip:1990
    >>> Performing hash slots allocation on 6 nodes...   最少是6个节点
    Master[0] -> Slots 0 - 5460
    Master[1] -> Slots 5461 - 10922
    ......

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值