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

    主库宕机,从库会被自动选举为主库master,并继承原主库的哈希槽,当master恢复,会成为现主库的从库,且同步宕机期间的数据

    若集群创建出错

    step1:关服务

    ./redis-cli -h fdv-web02.reda -p 7000 -a reda2019 shutdown

    step2:删除rdb数据文件,nodes-****.conf

    rm -rf dump.rdb  nodes-****.conf

    redis-5.0.5单机版安装

    Step1: 安装依赖包make,gcc

        yum -y install make gcc

    step2:使用rz(lrzsz) 上传redis-5.0.5.tar.gz到/apps/applications/software目录http://download.redis.io/releases/redis-5.0.3.tar.gz

    Step3:tar解包redis-5.0.5.tar.gz,删除tar包,并cd进入

    tar -xf redis-5.0.5.tar.gz

    rm -rf redis-5.0.5.tar.gz        //删除tar包

    cd redis-5.0.5

    Step4:编译redis

    make         //编译

    make install  PREFIX=/apps/applications/software/redis              //安装

    mkdir /apps/applications/software/redis/{conf,log,data}

    step5:配置/etc/security/limits.conf 文件添加

    * - nofile 10032

    * soft nofile 65536

    * hard nofile 65536

    step6:准备redis配置文件

    cp /apps/applications/software/redis-5.0.5/redis.conf  apps/applications/software/redis/conf/redis-7000.conf

    编辑redis-7000.conf

    详解:(进入文件后输入/并在其后写入关键字)

    pidfile /apps/applications/software/redis/data/redis-7000.pid          //pid存放路径

    logfile /apps/applications/software/redis/log/redis-7000.log          //redis日志文件存放路径

    port 7000                            //redis端口

    bind econ-web01.reda            //主机名

    dbfilename dump-7000.rdb        //redis数据文件名

    dir /apps/applications/software/redis/data             //redis数据库数据文件rdb文件放置的路径

    cluster-config-file /apps/applications/software/redis/data/nodes-7000.conf                   //集群信息存放文件

    cluster-enabled yes        //启用集群

    clster-node-timeout 5000            //节点超时时间,一直最好

    protected-mode no   //关闭redis保护模式

    daemonize yes               //开启守护进程模式

    Step7:复制redir-7000.conf到redir-7001.conf

    cd /apps/applications/software/redis/conf/

    cp redis-7000.conf redis-7001.conf

    Step8:redis-7001.conf配置文件的7000批量更改为7001

    vim redis-7001.conf

    输入:

    :% s/7000/7001/g

     其他两台操作相同,但是记得修改port和bind

    Step9:编写redis启动脚本和停服务脚本

    cd /apps/applications/software/redis

     启动脚本start.sh:

    #!/bin/bash

    export BASH_HOME=$HOME
    $BASH_HOME/software/redis/bin/redis-server $BASH_HOME/software/redis/conf/redis-7000.conf > $BASH_HOME/software/redis/log/redis-7000.log &
    $BASH_HOME/software/redis/bin/redis-server $BASH_HOME/software/redis/conf/redis-7001.conf > $BASH_HOME/software/redis/log/redis-7001.log &

    停止脚本stop.sh:

    #!/bin/bash
    export BASH_HOME=$HOME
    $BASH_HOME/software/redis/bin/./redis-cli -h fdv-web02.reda -p 7000 -a reda2019 shutdown
    $BASH_HOME/software/redis/bin/./redis-cli -h fdv-web02.reda -p 7001 -a reda2019 shutdown

    chmod +x start_all.sh stop_all.sh   #赋予x权限,变成可执行脚本

    1、在 redis5 之后,redis cluster 的搭建不在需要默认的ruby脚本,使用 redis-cli 命令即可完成搭建
    2、创建集群的这些redis实例中都必须是空的
    3、在一个 redis 的集群中默认存在 16384 个哈希槽,这 16384 个哈希槽会默认分配给集群中的主节点
    4、增加一个主节点,就意味着要从原来的主节点中移动部分哈希槽给新的主节点
    5、删除一个主节点,就需要把该主节点分配到的哈希槽归还给别的主节点
    6、在主节点之间移动哈希槽不需要停止操作,因此对集群没多大影响
    7、一个集群最好有奇数个主节点
    8、集群创建过程中涉及到的命令


    集群创建:./redis-cli --cluster create

                     ip:port   ip:port

                    ip:port    ip:port

                   ip:port     ip:port    --cluster-replicas 1   [-a 密码]                    [--cluster-replicas 1 表示每个主节点下有一个从节点]

    添加一个主节点:

                       ./redis-cli --cluster  add-node  新ip:port  集群任一ip:port  
    添加一个节点作为另外一个节点的从节点:
                         ./redis-cli --cluster  add-node  新ip:port  集群任一ip:port    --cluster-slave
    删除一个节点 :

                            ./redis-cli --cluster del-node 集群任一ip:port   节点id

    连接到集群:

                   ./redis-cli -c -p 访问的端口 -h 访问的机器 -a 密码


    查看集群中的节点:

       ./redis-cli -p 7000 cluster nodes

        ./redis-cli --cluster check    集群ip:端口   -a 密码

      ./redis-cli --cluster info   集群ip:端口   -a 密码


    集群中的每个redis节点需要放行2个端口的访问:
       正常的客户端通讯端口,比如6379
       集群总线端口,总是 客户端通讯接口+10000,比如:16379,该端口主要是 集群总线进行故障检测、配置更新、故障转移等操作


    如果redis集群中的某个主节点和与之相关的所有从节点都宕机了,那么redis集群将无法提供服务,因为我们不能再提供 这个master node 节点上的 哈希槽。


    1.redis 集群不保证强一致性,这意味着在某些时候可能丢失某些写数据。
     |- 因为集群中从节点的复制是异步的。
     |- redis 集群在绝对需要时也支持同步写入,但是这也不能保证完全的强一致性。

    2.配置redis集群的最小配置文件如下:

     

     3.cluster-config-file 这个配置中指定的 配置文件 由redis自动维护,我们自己不要随意修改。这个文件有redis集群实例在启动时生成

    4.由于本地机器不够,因此可在一台电脑上进行搭建,以不同的端口进行区分。

    redis集群配置清单

     

    ********************************************************

    创建集群
    1、集群创建命令
    redis-cli --cluster create host1:port1 ... hostN:portN --cluster-replicas 一个主 的从个数
    2、集群创建(3主3从-注意节点的顺序)

    可以看到:16384个哈希槽平均分配给了3个主节点,从节点没有分配哈希槽。

    3、向集群中设置值测试一下

    -c 表示的是连接集群.
    从上图可以看到,我们连接的是 7001 端口,但是设置值的时候,由于key(cluster)对应的哈希槽的值是14041,所以重定向到了 7003 端口上。

     

    动态向集群中添加一个主节点并分片
               添加节点命令:redis-cli --cluster   add-node   新节点ip:新节点port   集群中以存在的节点ip:集群中已存在的节点port
               分片命令:redis-cli --cluster    reshard  需要分片的节点ip:需要分片的节点端口

    注意:此时该节点只是作为主节点添加到了集群中,但是没有进行分片,是不可存储数据的,如果要存储数据,需要进行分片操作

    动态向集群中添加一个从节点

    /usr/local/redis/redis-5.0.3/src/redis-cli --cluster add-node 新节点ip:新节点port   集群中以存在的节点ip:集群中已存在的节点port --cluster-slave



    动态删除集群中一个从节点

    /usr/local/redis/redis-5.0.3/src/redis-cli --cluster del-node   集群中以存在的节点ip:集群中已存在的节点  所要删除的redis服务器id

    动态删除集群中一个主节点
    step1:归还槽

     

     

     step2:删除节点

    命令: /usr/local/redis/redis-5.0.3/src/redis-cli --cluster del-node 集群中以存在的节点ip:集群中已存在的节点  所要删除的redis服务器id

     

  • 相关阅读:
    ios 开发证书制作
    iOS UILable 高度自适
    asp 中创建日志打印文件夹
    ios iphone、ipad启动画面尺寸
    ios 更改UITableview中Section的字体颜色
    Azure Blob 存储简介
    java追加文件
    java读取文件
    DNS原理及其解析过程
    单点登录原理与简单实现
  • 原文地址:https://www.cnblogs.com/krystal-LA-zx/p/12119296.html
Copyright © 2011-2022 走看看