zoukankan      html  css  js  c++  java
  • centos7/rhel7下安装redis4.0集群

    相关介绍

    Redis从3.0版本开始支持集群!    

    集群一般由多个节点组成,节点数量至少6个才能保证组成完整高可用的集群。

    每个节点需要开启配置文件中的cluster-enabled yes,让Redis运行在集群模式下。

         

    测试环境

    资源有限,这里使用3台虚拟机模拟6个节点(用端口区分),每台虚机2个节点,如下图:

     

    :Redis默认端口:6379,这里方便起见,设定从7001~7006来区分6个节点。

    操作步骤

    Redis下载官网:https://redis.io/

    1. 节点准备

    每台机器都先编译安装Redis 经测试,redis-3.2.9 集群搭建方法一样

    [root@server-1 ~]# tar  zxvf  redis-4.0.1.tar.gz

    [root@server-1 ~]# cd redis-4.0.1

    [root@server-1 redis-4.0.1]# make && make install    //不需要configure,直接make,别忘了系统先装好gcczlib-devel

    [root@server-1 redis-4.0.1]# redis-server  -v    //检查一下版本

    server-2和server-3操作同上;

    2. 配置每个节点

    server-1

    [root@server-1 redis-4.0.1]# mkdir -p /opt/redis-cluster/{7001,7004}  //在/opt目录下新建一个redis-cluster文件夹,并在里面新建2个文件夹,用来区分节点

    [root@server-1 redis-4.0.1]# cp redis.conf /opt/redis-cluster/7001/redis-7001.conf

    [root@server-1 redis-4.0.1]# vim /opt/redis-cluster/7001/redis-7001.conf    //必要需要修改如下,其他细化优化的配置项可暂时保持默认

          bind 192.168.1.21             #本机IP

          port 7001                   #改为设定的端口

          daemonize yes                    #后台启动

          cluster-enabled yes          #启动集群模式

          cluster-config-file nodes-7001.conf  #集群内部配置文件,改掉端口号 

          cluster-node-timeout 15000     #节点超时时间,单位:毫秒   

    [root@server-1 redis-4.0.1]# cp redis.conf /opt/redis-cluster/7004/redis-7004.conf

    [root@server-1 redis-4.0.1]# vim /opt/redis-cluster/7004/redis-7004.conf

          bind 192.168.1.21             #本机IP

          port 7004                   #改为设定的端口

          daemonize yes                    #后台启动

          cluster-enabled yes          #启动集群模式

          cluster-config-file nodes-7004.conf  #集群内部配置文件,改掉端口号 

          cluster-node-timeout 15000     #节点超时时间,单位:毫秒

    server-2

    [root@server-2 redis-4.0.1]# mkdir -p /opt/redis-cluster/{7002,7005}

        ......参考server-1......    

    server-3

    [root@server-3 redis-4.0.1]# mkdir -p /opt/redis-cluster/{7003,7006}

        ......参考server-1......

      

    3. 启动每个节点

    server-1

    [root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7001/redis-7001.conf

    [root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7004/redis-7004.conf

    server-2

    [root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7002/redis-7002.conf

    [root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7005/redis-7005.conf

    server-3

    [root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7003/redis-7003.conf

    [root@server-1 redis-4.0.1]# redis-server /opt/redis-cluster/7006/redis-7006.conf

        

    4. redis-trib.rb环境准备该文件存在于redis-4.0.1/src/目录中    //只需要在其中一台上执行此步骤!!

    redis-trib.rb是采用Ruby实现的Redis集群管理工具。内部通过Cluster相关命令帮助

    我们简化集群创建、检查、槽迁移和均衡等常见操作,使用之前需要安装Ruby依赖环境。

    以下安装Ruby的方法如果觉得麻烦,可以参考另一篇文章centos7/rhel7安装较高版本ruby2.2/2.3/2.4+

    ①安装Ruby

    ~]# wget http://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.5.tar.gz

    ~]# tar zxvf  ruby-2.3.5.tar.gz

    ~]# cd ruby-2.3.5

    ruby-2.3.5]# ./configure  --prefix=/opt/ruby

    ruby-2.3.5]# make && make install

    ruby-2.3.5]# ln -s /opt/ruby/bin/ruby /usr/bin/ruby

    ruby-2.3.5]# ln -s /opt/ruby/bin/gem /usr/bin/gem

    ~]#ruby -v    //查看一下

    ②安装rubygem redis依赖

    ~]# wget http://rubygems.org/downloads/redis-3.3.0.gem

    ~]# gem install -l redis-3.3.0.gem

    如果这步报错,如下:

    ~]# gem install -l redis-3.3.0.gem
    ERROR: Loading command: install (LoadError)
     cannot load such file -- zlib
    ERROR: While executing gem ... (NoMethodError)
        undefined method `invoke_with_build_args' for nil:NilClass

    解决办法如下:

    yum -y install zlib-devel
    进入ruby源码文件夹,安装ruby自身提供的zlib包
    cd ruby-2.3.5/ext/zlib
    ruby ./extconf.rb
    make
    make install

    然后再次执行gem install -l redis-4.0.1.gem,正常通过显示Successfully... 。

    ③检查redis-trib.rb的可用性

    ~]# ./redis-4.0.1/src/redis-trib.rb    //如下图所示代表可用了

    5. 创建集群

    只需要执行一条长命令,如下:

    ~]#./redis-4.0.1/src/redis-trib.rb create  --replicas 1 192.168.1.21:7001 192.168.1.22:7002 192.168.1.23:7003 192.168.1.21:7004 192.168.1.22:7005 192.168.1.23:7006

    说明:--replicas参数指定集群中每个主节点配备几个从节点,这里设置为1。

       这里因为测试,只用了3台机器,如果部署节点使用不同的IP地址,redis-trib-rb会尽可能保证主从节点不分配在同一台机器下,

       因此会重新排序节点表顺序。节点列表顺序用于确定主从角色,先主节点之后是从节点。

       创建过程中首先会给出主从节点角色分配的计划,如下图:

    最后的输出报告说明:16384个槽全部被分配完,集群创建成功。

    这里需要注意给redis-trib.rb的节点地址必须是不包含任何槽/数据的节点,否则会拒绝创建集群。

      

    6. 集群完整性检查

    集群完整性指所有的槽都分配到存活的主节点上,只要16384个槽中有一个没有分配给节点则表示集群不完整。

    可以用redis-trib.rb check命令检测之前创建的集群是否成功,check命令只需要给出集群中任意一个节点地址就可以

    完成整个集群的检查工作,命令使用如下所示:

    [root@server-1 ~]# ./redis-4.0.1/src/redis-trib.rb check 192.168.1.22:7002

    结束.

        

  • 相关阅读:
    阿里P8架构师谈:阿里双11秒杀系统如何设计?
    秒杀系统设计的知识点
    秒杀系统架构优化思路
    秒杀系统解决方案
    Entity Framework Code First (七)空间数据类型 Spatial Data Types
    Entity Framework Code First (六)存储过程
    Entity Framework Code First (五)Fluent API
    Entity Framework Code First (四)Fluent API
    Entity Framework Code First (三)Data Annotations
    Entity Framework Code First (二)Custom Conventions
  • 原文地址:https://www.cnblogs.com/ding2016/p/7892542.html
Copyright © 2011-2022 走看看