Redis集群环境搭建

Redis简介

        Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。官网链接:https://redis.io 或 http://redis.cn (redis的特性、使用烦请百度)

Redis集群搭建前提

  1. 请确认至少有两台+主机(如果硬件不够,可以试用虚拟机);
  2. 能够 常用Linux命令

    本文介绍在两台服务器中搭建redis 3主3从集群环境,3个master,每个master对应一个slave

第一步:Redis下载

      下载地址:http://redis.cn/download.html,我选择的版本是redis-3.2.3(如果版本不一致可能存在差异)。

      下载下来压缩包为redis-3.2.3.tar.gz。请使用tar -xzvf redis-3.2.3.tar.gz解压至/opt目录

第二步:Redis安装

  1. #cd /opt/redis-3.2.3
  2. #make && make install
  3. #cd utils
  4. #./install_server.sh

    默认文件地址:

    Port

    6379

    Config file

    /etc/redis/6379.conf

    Log file

    /var/log/redis_6379.log

    Data dir

    /var/lib/redis/6379

    Executable

    /usr/local/bin/redis-server

    Cli Executable

    /usr/local/bin/redis-cli

第三步:修改防火墙配置

  1. #systemctl stop firewalld.service          #停止firewall
  2. #systemctl disable firewalld.service     #禁止firewall开机启动

第四步:创建redis节点

  1. #cd /etc/redis
  2. #cp /opt/redis-3.2.3/redis.conf 7001.conf
  3. #vi 7001.conf

    对应修改以下key-value值:

    key
    value
    备注
    bind10.100.160.132 
    protected-modeno 
    daemonizeyesredis后台运行
    pidfile/var/run/redis_7001.pidpidfile文件
    port7001端口
    cluster-enabledyes开启集群
    cluster-config-filenodes_7001.conf集群的配置,配置文件首次启动自动生成
    cluster-node-timeout5000请求超时
    appendonlyyesaof日志开启,有需要就开启,每次写操作都会记录一条日志
    masterauthpassword设置密码
    requirepasspassword 
  4. 拷贝两个文件并修改:
    #cp 7001.conf 7002.conf
    #sed -i "s/7001/7002/g" 7002.conf

    #cp 7001.conf 7003.conf
    #sed -i "s/7001/7003/g" 7003.conf

第五步:启动redis

        #redis-cli shutdown

        #redis-server /etc/redis/6379.conf

        #redis-server /etc/redis/7001.conf &

        #redis-server /etc/redis/7002.conf &

        #redis-server /etc/redis/7003.conf &

        启动完成后,查看是否启动成功:#ps -ef | grep redis

        

第六步:按以上步骤配置第二台服务器redis环境

第七步:创建集群

  1. 退回至第一台服务器,新建三个master节点
    #./opt/redis-3.2.3/src/redis-trib.rb create 10.100.160.132:7001 10.100.160.132:7003 10.100.160.133:7005
  2. 分别给三个master添加slave节点(注意master-id为以上创建的三个master节点ID)
    #./opt/redis-3.2.3/src/redis-trib.rb add-node --slave --master-id faf56c35103d83e93ddf242ec43440f291727e3d 10.100.160.132:7002 10.100.160.132:7001
    #./opt/redis-3.2.3/src/redis-trib.rb add-node --slave --master-id c32440c9e7eddf80170b2bb0355e8a3dffdd6448 10.100.160.133:7004 10.100.160.132:7003
    #./opt/redis-3.2.3/src/redis-trib.rb add-node --slave --master-id 0f9f7341a5b9fd03de3959ed88e888a0561d8647 10.100.160.133:7006 10.100.160.133:7005
    其中: --slave 表示需要添加的节点为slave类型,--master-id faf56c35103d83e93ddf242ec43440f291727e3d 为master的id,然后第一个节点为要添加的slave节点,第二个节点为master节点
  3. 成功之后,查看各节点情况:
    #cd /opt/redis-3.2.3/src/
    #./redis-trib.rb check 10.100.160.132:7001
        

      以上以手动完成redis集群环境创建,以下介绍自动创建方式(不推荐

    #./opt/redis-3.2.3/src/redis-trib.rb create --replicas 1 10.100.160.132:7001 10.100.160.132:7002 10.100.160.132:7003 0.100.160.133:7004 0.100.160.133:7005 0.100.160.133:7006

      --replicas  1  表示 自动为每一个master节点分配一个slave节点    上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)

      注:系统自动分配时,可能并不符合我们的分配意愿,推荐手动分配

配置中遇到的问题及解答:

1、创建集群节点提示:

             /usr/bin/env: ruby: No such file or directory

     原因:执行的ruby的脚本,需要ruby的环境

     解决:yum install ruby

2、创建集群节点单提示:

             /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)

             from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'

             from ./src/redis-trib.rb:25:in `<main>'

     原因:ruby缺少redis接口,需要安装(下载地址:https://rubygems.org/downloads/redis-3.2.2.gem

     解决:下载完成后安装,gem install redis-3.2.2.gem

3、创建集群节点单提示:

              Waiting for the cluster to join....................................

      各个节点的配置文件中,bind一定要配置为本机的ip地址,否则其他机器 telnet ip port 不通,集群也就不能成功

      如果第一次构建集群不成功,再次使用redis-trib.rb时会出现类似err slot 0 is already busy (redis::commanderror)的报错

      这时需要逐个登录上面命令中涉及到的节点,清空因为上次不成功留下的数据

      例如:清空节点10.100.160.132:7001 信息,在10.100.160.132上

            #redis-cli -c -h 10.100.160.132 -p 7001

            进入后输入:

      FLUSHALL
          CLUSTER RESET SOFT
          exit

 

            删除配置文件中配置的

            cluster-config-file  nodes_7001.conf

            如果是6379节点nodes_6379.conf 在/var/lib/redis/6379/下,把这个目录下的文件都删掉即可

            每个节点清空后关闭节点:

            #ps -ef | grep redis

     root     16486     1  0 19:06 ?        00:00:01 redis-server 192.168.1.1:7002 [cluster]
        root     16490     1  0 19:06 ?        00:00:00 redis-server 192.168.1.1:7001 [cluster]
        root     16494     1  0 19:06 ?        00:00:00 redis-server 192.168.1.1:7000 [cluster]
        root     16498     1  0 19:06 ?        00:00:01 redis-server 192.168.1.1:6379 [cluster] 

            #kill -9 16486 16490 16494 16498

           之后启动节点后,再运行redis-trib.rb命令创建集群即可

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值