zoukankan      html  css  js  c++  java
  • Redis 5.0.3集群部署

    参考文章

    https://blog.csdn.net/yyTomson/article/details/85783753

    https://www.cnblogs.com/zy-303/p/10273167.html

       

    1,环境两台centos7主机IP地址为:172.16.103.12和172.16.103.13

    2,上传软件包到/root/software下,编译安装两台主机上的redis软件。

    cd root/software/

    tar -zxvf redis-5.0.3.tar.gz

    安装编译依赖的gcc包

    yum -y install gcc

    编译安装

    cd redis-5.0.3

    make && make install

    3,将 redis-trib.rb 复制到 /usr/local/bin 目录下

    cd src/

    cp redis-trib.rb /usr/local/bin/

    4,在两个节点上都创建redis_cluster目录,并且在该目录下创建7000,7001,7002目录

    mkdir -p /redis_cluster

    cd /redis_cluster/

    mkdir 7000 7001 7002

    5,拷贝redis.conf文件到两个节点上的7000,7001,7002目录下

    cp /root/software/redis-5.0.3/redis.conf /redis_cluster/7000

    cp /root/software/redis-5.0.3/redis.conf /redis_cluster/7001

    cp /root/software/redis-5.0.3/redis.conf /redis_cluster/7002

    6,编辑7000/1/2目录下的redis.conf配置文件,主要修改一下几项

    port 7000 //端口7000,7002,7003

    bind 本机ip //默认ip127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群

    daemonize yes //redis后台运行

    pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002

    cluster-enabled yes //开启集群 把注释#去掉

    cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002

    cluster-node-timeout 15000 //请求超时 默认15秒,可自行设置

    appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志

    #requirepass password123        //该项是设置密码,也可以设置,也可以不设置,此处不设置密码,查阅官方文档,未找到设置密码之后创建集群的命令格式

       

    以上操作均在两个节点都执行和修改

       

    7,启动各节点上的redis服务

    172.16.103.12上执行

    redis-server /redis_cluster/7000/redis.conf

    redis-server /redis_cluster/7001/redis.conf

    redis-server /redis_cluster/7002/redis.conf

    172.16.103.13上执行

    redis-server /redis_cluster/7000/redis.conf

    redis-server /redis_cluster/7001/redis.conf

    redis-server /redis_cluster/7002/redis.conf

    8,可以使用netstat 命令检查redis的开启情况,使用的端口是7000,7001和7002,下面创建集群

    在172.16.103.12上执行

    redis-cli --cluster create --cluster-replicas 1 172.16.103.12:7000 172.16.103.12:7001 172.16.103.12:7002 172.16.103.13:7000 172.16.103.13:7001 172.16.103.13:7002

    集群创建成功

    8,登陆验证

    登陆创建一个键值

    登陆其他节点,get键值

    9,集群的关闭,以及集群的自动启动

    关闭集群的脚本,需要在两个节点都执行

    #脚本开始

    #!/bin/bash

    redis-cli -h 172.16.103.12 -p 7000 shutdown

    redis-cli -h 172.16.103.12 -p 7001 shutdown

    redis-cli -h 172.16.103.12 -p 7002 shutdown

    #脚本结束

    #脚本开始

    #!/bin/bash

    redis-cli -h 172.16.103.13 -p 7000 shutdown

    redis-cli -h 172.16.103.13 -p 7001 shutdown

    redis-cli -h 172.16.103.13 -p 7002 shutdown

    #脚本结束

    开机启动的脚本

    #脚本开始

    #!/bin/bash

    redis-server /redis_cluster/7000/redis.conf &> /dev/null

    redis-server /redis_cluster/7001/redis.conf &> /dev/null

    redis-server /redis_cluster/7002/redis.conf &> /dev/null

    if [ $? -eq 0 ]

    then

    redis-cli --cluster create --cluster-replicas 1 172.16.103.12:7000 172.16.103.12:7001 172.16.103.12:7002 172.16.103.13:7000 172.16.103.13:7001 172.16.103.13:7002 &> /root/software/redis-cluster-start.log

    else

    echo "Redis Services Started Succeed! Please Check Node!"

    fi

    cat /root/software/redis-cluster-start.log | grep "All 16384 slots covered"

    if [ $? -eq 0 ]

    then

    echo "Redis Cluster Started Succeed!"

    else

    echo "Redis Cluster Started Failed! Please check /root/software/redis-cluster-start.log"

    fi

    #脚本结束

       

    这个启动脚本运行过程中需要用户输入yes,这个用户输入的功能不知道怎么添加到脚本中。请大神指点。

    10,相关报错:

    如图所示报错:[ERR] Node 172.16.103.12:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

    解决该报错的方法为停止所有节点的redis服务,使用命令为;

    redis-cli -h 172.16.103.13 -p 7000 shutdown //Ip地址端口根据实际修改

    删除所有节点上的/root/software(redis软件包所在的位置)下的nodes_*.conf文件和dump.rdbappendonly.aof文件,删除所有节点上/redis_cluster(创建的集群目录)中的nodes_*.conf文件和dump.rdbappendonly.aof文件,然后再重新创建集群,初步接触redis,不确定删除以上文件是否会造成数据丢失,但是redis本身作为缓存数据库,即为缓存,应该多数都不重要吧。

  • 相关阅读:
    单页面应用和多页面应用区别及优缺点
    Vue中双向数据绑定是如何实现的?
    vue组件中data为什么必须是一个函数?
    $nextTick的使用
    分别简述computed和watch的使用场景
    webpack结合postcss-loader实现css样式浏览器兼容前缀的添加
    KeyError:‘uid' Python常见错误
    GO语言学习之 跨平台编译
    图表动态选择+图表联动
    软件需求与分析大作业进度八
  • 原文地址:https://www.cnblogs.com/withfeel/p/10672716.html
Copyright © 2011-2022 走看看