数据库
首页 > 数据库> > Redis集群教程

Redis集群教程

作者:互联网

Redis 集群(Redis 5.0.5)

总体目标

在两台机器上部署Redis集群,用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境,分别是192.168.112.130与192.168.112.131,每台机器上使用6600,6700,6800三个端口。

  1. 下载与解压

    wget http://download.redis.io/releases/redis-5.0.5.tar.gz
    tar xzf redis-5.0.5.tar.gz
    cd redis-5.0.5
    make
    

    如果没有安装C/C++编译器,安装指令如下:

    yum -y install gcc-c++
    

    或者手动下载再上传至服务器。

  2. 进行配置。

    在经历过不少麻烦后,我发现可以考虑使用linux提供的在vi中使用命令行:s/old/new 来修改配置文件关键字的方法来进行修改。

    首先还是创建相应的文件夹,在redis-5.0.5目录项新建cluster目录,然后在cluster目录下新建三个目录,分别是6600,6700,6800。

    cd /home/yan/redis-5.0.5
    mkdir cluster
    cd cluster
    mkdir 6600 6700 6800
    

    首先我们配置6600节点,首先复制官方的配置文件到6600目录。

    cd /home/yan/redis-5.0.5
    cp redis.conf cluster/6600
    

    接着修改配置文件相关内容:

    port  6600				                                
    bind 0.0.0.0            				 // 为了让其他机器访问,必须修改为0.0.0.0或内网IP
    daemonize    yes                         // redis后台运行
    pidfile  /var/run/redis_6600.pid         // pidfile文件对应6600,6700,6800
    cluster-enabled  yes                     // 开启集群 把注释#去掉
    cluster-config-file  nodes_6600.conf     // 集群的配置  配置文件首次启动自动
    cluster-node-timeout  15000              // 请求超时  默认15秒,可自行设置
    appendonly  yes                          // 有需要就开启,它会每次写操作都记录一条日志
    

    并且添加密码,即在里面添加如下一行内容:

    requirepass 123456
    

    检查6600是否配置好。

    src/redis-server cluster/6600/redis.conf
    

    能够正常运行的话则表示修改成功。接着配置6700和6800就非常简单了。

    首先复制6600的配置文件到6700与6800目录下

    cp cluster/6600/redis.conf cluster/6700
    cp cluster/6600/redis.conf cluster/6800
    

    vi 进入编辑页面,使用:s/old/new 方法替代所有的6600为6700。

    vi cluster/6700/redis.conf 
    ## 在vi界面中输入
    :%s/6600/6700/g
    

    同样的道理,把6800目录下的配置文件进行修改。

  3. 总体测试

    分别启动三个节点(前面已经启动6600)

    src/redis-server cluster/6700/redis.conf
    src/redis-server cluster/6800/redis.conf
    

    查看是否成功启动:

    ps aux | grep redis
    

    在这里插入图片描述

  4. 另外一个服务器,因为端口相同,所以推荐直接使用SCP命令进行下载。

    # 首先跳转到未配置的服务器6600路径
    cd /home/yan/redis-5.0.5/cluster/6600
    scp yan@192.168.112.131:/home/yan/redis-5.0.5/cluster/6600/redis.conf
    

    可能会提示输入密码,输入配置好的那台服务器密码即可。同样适用于6700,6800,然后启动方法也是一样的。

  5. 创建集群

    在其中某一个服务器上创建集群即可。

    src/redis-cli --cluster create 192.168.112.131:6600 192.168.112.131:6700 192.168.112.131:6800 192.168.112.130:6600 192.168.112.130:6700 192.168.112.130:6800   
    

    官网教程除了上面这种还有就是下载安装Ruby然后再执行某个脚本的,但是经过一番折腾我发现并不方便,不如直接用上面方式创建。

    运行成功后会有个提示,输入yes即可。

    集群成功后效果如图所示:

    在这里插入图片描述

  6. 最后测试一下集群效果,在某一台服务上登陆另外一台的redis,然后写入一个键值对,然后再用另一台服务器查看这个数据。

    src/redis-cli -h 192.168.112.130 -p 6700 -a 123456
    

    然后输入 set hello world

    接着在另外一个节点查看即可。

常见错误

源码安装时,报错,

zmalloc.h:50:31: fatal error: jemalloc/jemalloc.h: No such file or directory

指令make指令时,改为 make MALLOC=libc


集群时,提示需要密码,

[ERR] Node 192.168.112.131:6600 NOAUTH Authentication required.

运行时指令需要添加密码。即 -a 123456


集群时,提示某个redis不是空的,

[ERR] Node 192.168.112.131:6600 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

首先需要清空redis-5.0.5目录下的三类文件 appendonly.aof、dump.rdb、node_xxx.conf,然后清空已经有的数据,

flushdb
cluster reset

集群完成后,做个测试时,

192.168.112.131:6700> set hello world
(error) MOVED 866 192.168.112.131:6600

不能在这个地方进行set,根据提示需要到6600端口进行。


官方教程

https://redis.io/topics/cluster-tutorial

总结

Redis集群感觉有些麻烦,特别是在第一次集群的时候,可能会遇到一系列问题,但是经历过这次集群就非常简单了。
跟其他的博客教程可能不一样,集群的时候我并没有安装Ruby,当然我尝试安装过,不过后来发现比较麻烦,所以还是觉得官方提供的另一种集群方法更加方便一些。
如果有遇到什么问题,欢迎留言交流!

Smileyan
2019年7月31日 11:11

标签:教程,Redis,redis,192.168,6600,cluster,集群,6700
来源: https://blog.csdn.net/smileyan9/article/details/97897665