zoukankan      html  css  js  c++  java
  • Redis5.0.8集群安装

    redis是根据redis的配置文件启动的,方便管理,我们根据端口创建单节点的文件夹。

    本篇文章基于上一篇单机Redis安装,https://www.cnblogs.com/diaoye/p/12762440.html

    1.创建文件夹

    mkdir /usr/local/redis-cluster
    cd redis-cluster/
    mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data

    此处切忌偷懒,6个是有6个的道理的,三主三从,三个主节点方便选举,不然出现平票是选不出老大的。

    2.复制运行脚本

    在 /usr/local/redis-cluster 下创建bin文件夹,用来存放集群运行脚本,并把安装好的Redis的src路径下的运行脚本拷贝过来,命令如下:

    mkdir redis-cluster/bin
    cd /usr/local/redis/src
    cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin

    3.复制一个实例到9001文件夹下,并修改redis.conf配置

    cp /usr/local/redis/* /usr/local/redis-cluster/9001

    修改以下参数

    port 9001(每个节点的端口号)
    daemonize yes
    bind 192.168.119.131(绑定当前机器 IP)
    dir /usr/local/redis-cluster/9001/data/(数据文件存放位置)
    pidfile /var/run/redis_9001.pid(pid 9001和port要对应)
    cluster-enabled yes(启动集群模式)
    cluster-config-file nodes9001.conf(9001和port要对应)
    cluster-node-timeout 15000
    appendonly yes

    集群搭建配置重点就是取消下图中的这三个配置的注释

     4.再复制出五个实例

    我们已经完成了一个节点了,其实接下来就是机械化的再完成另外五个节点,其实可以这么做:把 9001 实例 复制到另外五个文件夹中,唯一要修改的就是 redis.conf 中的所有和端口的相关的信息即可,其实就那么四个位置。开始操作,看图:

    cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002
    cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003
    cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004
    cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005
    cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006

    cp -rf 命令是不使用别名来复制,因为 cp 其实是别名 cp -i,操作时会有交互式确认,比较烦人。

    5.修改9002-9006 的 redis.conf 文件

    其实非常简单了,你通过搜索会发现其实只有四个点需要修改,我们全局替换下吧,进入相应的节点文件夹,做替换就好了。命令非常简单,看图:

    vim redis.conf
    :%s/9001/9002g

    回车后,就会有替换几个地方成功的提示,不放心可以手工检查下

    其实我们也就是替换了下面这四行:

    port 9002
    dir /usr/local/redis-cluster/9002/data/
    cluster-config-file nodes-9002.conf
    pidfile /var/run/redis_9002.pid

    到这里,我们已经把最基本的环境搞定了,接下来就是启动了。

    6.启动9001-9006节点

    /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9001/redis.conf 
    /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9002/redis.conf 
    /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9003/redis.conf 
    /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9004/redis.conf 
    /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9005/redis.conf 
    /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9006/redis.conf

    可以检查一下是否启动成功

    ps -ef|grep redis

    随便找个节点测试

    /usr/local/redis-cluster/bin/redis-cli -h 192.168.119.131 -p 9001
    set name mafly

    连接成功了,但报错了

    (error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽)

    这是因为虽然我们配置并启动了 Redis 集群服务,但是他们暂时还并不在一个集群中,互相直接发现不了,而且还没有可存储的位置,就是所谓的slot(槽)

    7.创建集群

    ./usr/local/redis-cluster/bin/redis-cli --cluster create 192.168.0.229:9001 192.168.0.229:9002 192.168.0.229:9003 192.168.0.229:9004 192.168.0.229:9005 192.168.0.229:9006 --cluster-replicas 1

    --replicas 1表示主从复制比例为 1:1,即一个主节点对应一个从节点;然后,默认给我们分配好了每个主节点和对应从节点服务,以及 solt 的大小,因为在 Redis 集群中有且仅有 16383 个 solt ,默认情况会给我们平均分配,当然你可以指定,后续的增减节点也可以重新分配。

     8.测试集群是否可用

    ./usr/local/redis-cluster/bin/redis-cli -h 192.168.0.229 -c -p 9001

     成功!

    参考的大佬文档

    https://www.cnblogs.com/mafly/p/redis_cluster.html

    https://www.cnblogs.com/zhanh247/p/12709727.html

    https://www.cnblogs.com/AzkbanHan/p/11497589.html

  • 相关阅读:
    maven中net.sf.json报错的解决方法(转载)
    [PY3]——环境配置(1)——pyenv | pip | ipython | jupyter(含安装pyenv环境shell脚本)
    [LNMP]——LNMP环境配置
    Tomcat
    Amoeba+Mysql 实现读写分离
    LVS+keepalived DR模式配置高可用负载均衡集群
    [Mysql高可用]——双主互备+keepalived
    Mysql 日志管理
    Mysql基本操作总结
    [Mysql]——通过例子理解事务的4种隔离级别
  • 原文地址:https://www.cnblogs.com/diaoye/p/12810238.html
Copyright © 2011-2022 走看看