当前位置 博文首页 > 超负荷小生的博客:redis-cluster集群-三主三从搭建

    超负荷小生的博客:redis-cluster集群-三主三从搭建

    作者:[db:作者] 时间:2021-09-08 19:42

    总体描述

    搭建三主三从,即三组一主一从。组内是主从关系,可以实现高可用;组间是集群关系,实现分工存储。
    准备六个节点ip:
    192.168.192.131:9001,
    192.168.192.131:9002,
    192.168.192.131:9003,
    192.168.192.131:9004,
    192.168.192.131:9005,
    192.168.192.131:9006,
    这六个中三个master,三个slave,并且具有主从关系

    环境的搭建

    第一步:创建六个文件夹
    因为下面配置文件中的–dir设置的是data所以还需要在六个文件夹中创建data文件夹

    mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
    

    第二步:先复制一个配置文件,修改后在复制到其他文件夹

    cp /redis-4.0.6/redis.conf 9001 #复制redis.conf到9001
    

    修改配置文件

    #取消注释,否则远程连接不上
    #bind 127.0.0.1
    # 将yes改为no,否则远程连接不上
    protected-mode no 
    #端口
    port 1001
     #守护进程模式
    daemonize yes
    #修改pidfile指向路径
    pidfile "/var/run/redis_9001.pid" 
    #修改日志的路径
    logfile "自己的路径/redis-4.0.6/redis-cluster/9001/log/redis.log" 
    #工作目录 ./当前目录也行,要是data还需要新建data文件
    dir "自己的路径/redis-4.0.6/redis-cluster/1001/data" 
    #开启集群配置
    cluster-enabled yes 
    #集群配置文件
    cluster-config-file nodes-1001.conf 
    #过期时间15s,单位是毫秒
    cluster-node-timeout 15000 
    #关键,要不当集群中其中一个主节点宕机后,会导致整个集群不可以。
    cluster-require-full-coverage no 
    #设置访问密码
    requirepass testcluster123 
    #每台节点都配置了密码,如果masterauth没有配置,就会造成主从节点不能切换
    masterauth testcluster123 
    

    第三步:将9001文件夹中的redis.conf配置文件复制到其他文件夹,在原来基础上,只需要更改以下配置即可

    cp 9001/redis.conf 900X
    

    复制到其他文件夹后,需要更改配置文件中的内容

    port 900x
    pidfile "/var/run/redis_900x.pid" 
    logfile "自己的文件/redis-4.0.6/redis-cluster/900x/log/redis.log"
    dir "自己的文件/redis-4.0.6/redis-cluster/900x/data"
    cluster-config-file nodes-100x.conf
    
    mkdir 9001/data
    

    第四步:运行redis,每个配置文件

    cd redis-4.0.6/src
    redis-server /root/redis-4.0.6/redis_cluster/900X/redis.conf
    

    第五步:集群的创建
    1.版本5.0以后执行如下命令:
    其中 cluster-replicas 1 代表 一个master后有几个slave,1代表为1个slave节点 ; -a 密码

    redis-cli --cluster create ip:9001 ip:9002 127.0.0.1:9003 ip:9004 ip:9005 ip:9006 --cluster-replicas 1 -a testcluster123
    

    2、5.0之前的版本使用redis-trib.rb
    安装ruby,使用redis-trib.rb命令

    yum install centos-release-scl-rh
    yum install rh-ruby23  -y
    scl  enable  rh-ruby23 bash
    gem install redis
    

    修改redis-trib.rb脚本:在redis-4.0.6的src下

    将
    @r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60)
    改为:
    @r = Redis.new(:host => @info[:host], :port => @info[:port], :timeout => 60, :password => "你的密码")
    

    在src文件夹下执行如下命令

    ./redis-trib.rb create --replicas 1 ip:9001 ip:9002 ip:9003 ip:9004 ip:9005 ip:9006
    

    效果如下图所示
    在这里插入图片描述出现下图的绿色ok表示成功
    在这里插入图片描述

    环境的测试

    输入以下命令且必须使用 -c

    redis-cli -c -p 9001 -a testcluster123
    

    在这里插入图片描述如图发现set数据时,数据自动分配到9002节点,连接也转移到9002 节点

    查看节点信息
    在这里插入图片描述模拟9001宕机,9004由从机变为主机
    在这里插入图片描述

    cs