zoukankan      html  css  js  c++  java
  • Redis集群搭建

    第一步:安装Redis

    详情参考之前的博客。

    第二步:修改配置,创建节点

    我们现在要搞六个节点,三主三从,

    端口规定分别是7001,7002,7003,7004,7005,7006

    我们先在/usr/local目录下新建一个redis-cluster目录,

    mkdir /usr/local/redis-cluster

    Reids安装包里有个集群工具,要复制到redis-cluster目录下

    cp redis-3.2.11/src/redis-trib.rb /usr/local/redis-cluster
    

    然后该目录下再创建6个目录,

    分别是7001,7002,7003,7004,7005,7006,用来存在redis配置文件;

    mkdir /usr/local/redis-cluster/7001  ...

    将redis安装目录下的文件拷贝到每个700X目录内

    这里我们要使用redis集群,要先修改redis的配置文件redis.conf

    vi /usr/local/redis-cluster/7001/redis.conf

    修改一下几个

    port 7001  //六个节点配置文件分别是7001-7006

    bind 192.168.1.109    //多台机器创建集群时必须修改 默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问,单机集群可修改可不修改

    daemonize yes        //redis后台运行

    pidfile /var/run/redis_7001.pid   //pidfile文件对应7001-7006

    cluster-enabled yes   //开启集群

    cluster-config-file nodes_7001.conf  //保存节点配置,自动创建,自动更新对应7001-7006

    cluster-node-timeout 5000    //集群超时时间,节点超过这个时间没反应就断定是宕机

    appendonly yes   //存储方式,aof,将写操作记录保存到日志中

    7001下的修改完后,我们把7001下的配置分别复制到7002-7006 然后对应的再修改下配置即可;

    cp /usr/local/redis-cluster/7001/redis.conf /usr/local/redis-cluster/7002/   ...
    vi /usr/local/redis-cluster/7002/redis.conf  ...

    编辑后5个配置文件,把 port ,pidfile,cluster-config-file 分别修改下即可;

    第三步:启动六个节点的redis

    分别启动六个节点:

    /usr/local/redis-cluster/7001/bin/redis-server /usr/local/redis-cluster/7001/redis.conf   ...

    查看进程:如下图说明启动成功。

    第四步:创建集群

    执行redis官方提供的redis-trib.rb工具,此脚本是ruby脚本,它依赖ruby环境

    在使用之前 需要安装ruby,以及redis和ruby连接

    yum -y install ruby ruby-devel rubygems rpm-build
    
    gem install redis

    创建集群:

    ./redis-trib.rb create --replicas 1  127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
    ./redis-trib.rb create --replicas 1  192.168.56.101:7001 192.168.56.101:7002 192.168.56.101:7003 192.168.56.101:7004 192.168.56.101:7005  192.168.56.101:7006

    说明:

    redis集群至少需要3个主节点,每个主节点有一个从节点总共6个节点

    replicas指定为1表示每个主节点有一个从节点

    注意:

    如果执行时报如下错误:

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

    解决方法是删除生成的配置文件nodes.conf,如果不行则说明现在创建的结点包括了旧集群的结点信息,需要删除redis的持久化文件后再重启redis,比如:appendonly.aof、dump.rdb

    显示下图内容即为创建成功!

     

    第五步:集群数据测试

    先连接任意一个节点,然后添加一个key:

    redis-cli是redis默认的客户端工具,启动时加上`-c`参数,`-p`指定端口,就可以连接到集群。

    这里还得加-h 指定机器IP 。bind设置本地回环是无需添加。

    ./redis-cli -h 192.168.56.101 -p 7001 -c
    ./redis-cli -p 7001 -c

    未使用本地回环而是设置了本机ip的话,不加-h会报错,如下:

    正确连接到集群如下图:

    第六步:集群宕机测试

    各端口初始情况如下:

    当前7001,7003,7005节点为主节点正在服务

    我们选择干掉7001节点的进程。

    kill 2339

    再次查看集群节点情况

    ./redis-trib.rb check 192.168.56.101:7002
    

     

    发出警告:7004节点是未知节点ID的奴隶,即发现ID即为刚刚挂掉的7001节点的ID。等待一分钟再次查询节点情况

    发现从节点7004已经顶替7001开始工作。

    然后我们再次干掉7004节点。查看节点情况

    这时我们发现出事了,因为主从节点都挂了 所以有一部分哈希槽没得分配,最后一句

    [ERR] Not all 16384 slots are covered by nodes.  没有安全覆盖;

    所以不能正常使用集群;

    注:成功创建集群后如果重启服务器,则只要开启各个节点即可重新启动集群服务。

  • 相关阅读:
    萌新向Python数据分析及数据挖掘 第三章 机器学习常用算法 第三节 梯度下降法 (上)理解篇
    萌新向Python数据分析及数据挖掘 第三章 机器学习常用算法 第二节 线性回归算法 (下)实操篇
    萌新向Python数据分析及数据挖掘 第三章 机器学习常用算法 第二节 线性回归算法 (上)理解篇
    萌新向Python数据分析及数据挖掘 第三章 机器学习常用算法 第一节 KNN算法 (下)实操篇
    萌新向Python数据分析及数据挖掘 第三章 机器学习常用算法 第一节 KNN算法 (上)理解篇
    萌新向Python数据分析及数据挖掘 第二章 pandas 第五节 Getting Started with pandas
    Oracle数据库安装和授权
    c# 如何获取JSON文件以及如何获取Config文件(framework 和 net .Core)
    C#Core查询数据库存储EXCEL文件
    如何在WINDOW系统下编译P12证书制作
  • 原文地址:https://www.cnblogs.com/Zlcode/p/8306434.html
Copyright © 2011-2022 走看看