zoukankan      html  css  js  c++  java
  • redis 集群环境搭建

    原理:

    1,每个Redis群集的节点都需要打开两个TCP连接,由于这两个连接就需要两个端口,分别是用于为客户端提供服务的常规Redis TCP命令端口(例如6379)以及通过将10000和命令端口相加(10000+6379)而获得的端口,就是集群端口(例如16379)。

    2,节点使用群集总线进行故障检测,配置更新,故障转移授权等。 客户端不应尝试与群集总线端口通信,为了保证Redis命令端口的正常使用,请确保在防火墙中打开这两个端口,否则Redis群集节点将无法通信。

    要求:

    1,redis集群必须要求有6个实例,也就是说至少要启动6个redis-server进程。

    2,每个redis都需要开放两个端口,如果不能关闭防火墙,就要放行两个端口。总共至少是12个端口号。

    3,redis版本限制.

      redis版本>=5.xxx,直接使用 ./redis-cli --cluster create 指令构建redis集群。

      redis版本<5.xxx,需要安装ruby、rubygems环境,使用 ./redis-trib.rb create 指令构建redis集群,

    步骤:

    1,在同一台主机上首先安装好单机redis。解压,make,修改配置文件,启动命令等。

    2,暂时不启动上面的server实例,将redis文件复制五份,按端口号命名。替换redis.conf中的端口号。建立一个cluster-redis的文件夹,将这些redis都放进去。

    3,在集群文件夹下新建一个bin目录,复制一份redis的/bin工具进去,方便以后一起使用。

    4,使用集群的详细配置文件 redis.conf如下:

    port 7001(每个节点的端口号)
    daemonize yes
    bind 192.168.119.131(绑定当前机器 IP)
    dir /usr/local/redis-cluster/7001/data/(数据文件存放位置)
    pidfile /var/run/redis_7001.pid(pid 9001和port要对应)
    cluster-enabled yes(启动集群模式)
    cluster-config-file nodes7001.conf(9001和port要对应)#这不是用户可编辑的配置文件,而是Redis群集节点每次发生更改时自动保留群集配置(基本上为状态)的文件,以便能够在启动时重新读取它。 
    cluster-node-timeout 15000  #Redis群集节点可以不可用的最长时间,而不会将其视为失败。 如果主节点超过指定的时间不可达,它将由其从属设备进行故障切换。 此参数控制Redis群集中的其他重要事项。
    appendonly yes  #开启aof 持久化存储

    5,更改好其他redis实例的配置文件。 

    6,我用的redis版本大于5.0,所以不需要安装ruby环境。如需要ruby 环境,可以看这篇https://www.cnblogs.com/ding2016/p/7903147.html

    7,指定各自的配置文件,启动所有redis-server实例。

    8,执行创建集群命令:

       ./bin/redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.01:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1

      replicas设置为1

      比如6个节点,设置1,6*(1/2)=3个master,6*(1/2)=3个slave;

      比如24个节点,设置2,24*(1/3)=8个master,24*(2/3)=16个slave。

    9,按提示下一步就可以了。

      slot(槽点)是用来进行写指令的,只分配给master,一共16384个槽点,均匀分配给各个master。slave只是作为备份,不执行写指令,不需要槽点,所以分配0个槽点。

    10,任意连接摸一个节点,测试 -h host -p port

      例如:redis1/bin/redis-cli   -c    #连接到集群节点(不管是master、还是slave)都要使用参数-c,c即cluster

      >cluster info

      >info replication

     

    排错:

      配置文件中的路径最好都设置成绝对路径,并且要打开日志。及时根据日志排除错误。

  • 相关阅读:
    通过WebRTC实现实时视频通信(三)
    通过WebRTC实现实时视频通信(二)
    通关机器学习,必须掌握的32种算法
    Github如何回退/回滚到某个版本
    Markdown语法与入门
    如何上传代码到github?
    Latex中如何设置字体颜色(3种方式)
    Package CJK Error: Invalid character code. 问题解决方法--xelatex和pdflatex编译的转换
    PyCharm快捷键
    最全PyCharm教程
  • 原文地址:https://www.cnblogs.com/fengfengyang/p/15506101.html
Copyright © 2011-2022 走看看