zoukankan      html  css  js  c++  java
  • 在Windows系统下搭建Redis集群

    准备工作

     需要4个部件:Redis、Ruby语言运行环境、Redis的Ruby驱动redis-xxxx.gem、创建Redis集群的工具redis-trib.rb。使用redis-trib.rb工具来创建Redis集群,由于该文件是用ruby语言写的,所以需要安装Ruby开发环境,以及驱动redis-xxxx.gem。

    1)下载Redis安装文件:https://github.com/MSOpenTech/redis/releases/,Redis提供msi和zip格式的下载文件,这里下载zip格式Redis-x64-3.2.100版本。

    2)下载Ruby安装文件:http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe

    3)下载Ruby环境下Redis的驱动:https://rubygems.org/gems/redis/versions/3.2.2,考虑到兼容性,这里下载的是3.2.2版本

    注意:下载在页面右下角相关连接一项中

    4)下载Redis官方提供的创建Redis集群的ruby脚本文件redis-trib.rb,路径如下:https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb

    安装Redis

    将下载到的Redis-x64-3.2.100.zip解压即可,为了方便使用,建议放在盘符根目录下,如:D:Redis-ClusterRedis-x64-3.2.100。 

    安装Redis,并运行3个实例(Redis集群需要至少3个以上节点,低于3个无法创建);

    通过配置文件来启动6个不同的Redis实例,由于Redis默认端口为6379,所以这里使用了6380、6381、6382、6383、6384、6385来运行6个Redis实例。

    注意:

      1)为了避免不必要的错误,配置文件尽量保存为utf8格式,并且不要包含注释;

      2)配置文件中以下两种保存日志的方式(保存在文件中、保存到System Log中)请根据需求选择其中一种即可:

    loglevel notice                                                     #日志的记录级别,notice是适合生产环境的
    logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6380_log.txt" #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录
    syslog-enabled yes                                                  #是否使用系统日志   
    syslog-ident redis6380                                              #在系统日志的标识名

    这里使用了保存在文件中的方式,所以先在Redis目录D:Redis-ClusterRedis-x64-3.2.100下新建Logs文件夹

    在Redis安装根目录下,创建编码格式为utf-8的配置文件:redis.6380.conf、redis.6381.conf、redis.6382.conf、redis.6383.conf、redis.6384.conf、redis.6385.conf。

    redis.6380.conf、
    port 6380      
    loglevel notice    
    logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6380_log.txt"       
    appendonly yes
    appendfilename "appendonly.6380.aof"   
    cluster-enabled yes                                    
    cluster-config-file nodes.6380.conf
    cluster-node-timeout 15000
    cluster-slave-validity-factor 10
    cluster-migration-barrier 1
    cluster-require-full-coverage yes
    View Code
    redis.6381.conf、
    port 6381       
    loglevel notice   
    logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6381_log.txt"       
    appendonly yes
    appendfilename "appendonly.6381.aof"    
    cluster-enabled yes                                    
    cluster-config-file nodes.6381.conf
    cluster-node-timeout 15000
    cluster-slave-validity-factor 10
    cluster-migration-barrier 1
    cluster-require-full-coverage yes
    View Code
    redis.6382.conf、
    port 6382       
    loglevel notice    
    logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6382_log.txt"         
    appendonly yes
    appendfilename "appendonly.6382.aof"    
    cluster-enabled yes                                    
    cluster-config-file nodes.6382.conf
    cluster-node-timeout 15000
    cluster-slave-validity-factor 10
    cluster-migration-barrier 1
    cluster-require-full-coverage yes
    View Code
    redis.6383.conf、
    port 6383       
    loglevel notice    
    logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6383_log.txt"         
    appendonly yes
    appendfilename "appendonly.6383.aof"    
    cluster-enabled yes                                    
    cluster-config-file nodes.6383.conf
    cluster-node-timeout 15000
    cluster-slave-validity-factor 10
    cluster-migration-barrier 1
    cluster-require-full-coverage yes
    View Code
    redis.6384.conf、
    port 6384       
    loglevel notice    
    logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6384_log.txt"         
    appendonly yes
    appendfilename "appendonly.6384.aof"    
    cluster-enabled yes                                    
    cluster-config-file nodes.6384.conf
    cluster-node-timeout 15000
    cluster-slave-validity-factor 10
    cluster-migration-barrier 1
    cluster-require-full-coverage yes
    View Code
    redis.6385.conf
    port 6385       
    loglevel notice    
    logfile "D:/Redis-Cluster/Redis-x64-3.2.100/Logs/redis6385_log.txt"         
    appendonly yes
    appendfilename "appendonly.6385.aof"    
    cluster-enabled yes                                    
    cluster-config-file nodes.6385.conf
    cluster-node-timeout 15000
    cluster-slave-validity-factor 10
    cluster-migration-barrier 1
    cluster-require-full-coverage yes
    View Code

    配置解释如下:

     1 port 6380                                 #端口号
     2 loglevel notice                           #日志的记录级别,notice是适合生产环境的
     3 logfile "Logs/redis6380_log.txt"          #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录
     4 syslog-enabled yes                        #是否使用系统日志
     5 syslog-ident redis6380                    #在系统日志的标识名
     6 appendonly yes                            #数据的保存为aof格式
     7 appendfilename "appendonly.6380.aof"      #数据保存文件
     8 cluster-enabled yes                       #是否开启集群
     9 cluster-config-file nodes.6380.conf
    10 cluster-node-timeout 15000
    11 cluster-slave-validity-factor 10
    12 cluster-migration-barrier 1
    13 cluster-require-full-coverage yes

    将上述配置文件保存到Redis目录下,并使用这些配置文件安装6个redis服务,命令如下:

    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6380.conf --service-name redis6380
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6381.conf --service-name redis6381
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6382.conf --service-name redis6382
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6383.conf --service-name redis6383
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6384.conf --service-name redis6384
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-install D:/Redis-Cluster/Redis-x64-3.2.100/redis.6385.conf --service-name redis6385

    注意:

    1)redis.6380.conf等配置文件最好使用完整路径,避免重启Redis集群出现问题

    2)卸载命令为:

    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6380.conf --service-name redis6380
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6381.conf --service-name redis6381
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6382.conf --service-name redis6382
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6383.conf --service-name redis6383
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6384.conf --service-name redis6384
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-uninstall D:/Redis-Cluster/Redis-x64-3.2.100/redis.6385.conf --service-name redis6385

    启动这6个服务,命令如下:

    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6380
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6381
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6382
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6383
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6384
    D:/Redis-Cluster/Redis-x64-3.2.100/redis-server.exe --service-start --service-name redis6385

    执行结果:

    安装ruby

    1)Ruby环境安装。

    双击下载的“rubyinstaller-2.2.4-x64.exe”安装即可,同样,为了操作方便,也是建议安装在盘符根目录下,如: C:Ruby22-x64 ,安装时这里选中后两个选项,

    意思是将ruby添加到系统的环境变量中,在cmd命令中能直接使用ruby的命令

    2)安装Ruby环境下Redis的驱动

    将下载的"Ruby环境下Redis的驱动文件(redis-3.2.2.gem)"拷贝到Ruby安装根目录(C:Ruby22-x64)下。

    然后执行安装命令如下:

    gem install --local path_to_gem/filename.gem  

    创建Redis集群

    将下载的“创建Redis集群的ruby脚本文件redis-trib.rb”文件拷贝到Redis安装根目录(D:Redis-ClusterRedis-x64-3.2.100)下。

    1)使用redis-trib.rb来创建Redis集群

    MD下切换到Redis目录(D:Redis-ClusterRedis-x64-3.2.100)

    D:/Redis-Cluster/Redis-x64-3.2.100/redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
    D:Redis-ClusterRedis-x64-3.2.100>redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
    >>> Creating cluster
    Connecting to node 127.0.0.1:6380: OK
    Connecting to node 127.0.0.1:6381: OK
    Connecting to node 127.0.0.1:6382: OK
    Connecting to node 127.0.0.1:6383: OK
    Connecting to node 127.0.0.1:6384: OK
    Connecting to node 127.0.0.1:6385: OK
    >>> Performing hash slots allocation on 6 nodes...
    Using 3 masters:
    127.0.0.1:6380
    127.0.0.1:6381
    127.0.0.1:6382
    Adding replica 127.0.0.1:6383 to 127.0.0.1:6380
    Adding replica 127.0.0.1:6384 to 127.0.0.1:6381
    Adding replica 127.0.0.1:6385 to 127.0.0.1:6382
    M: bb6ef615bb0ae13275943caec0db9d30b9f35c5e 127.0.0.1:6380   slots:0-5460      (5461 slots) master
    M: b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381   slots:5461-10922  (5462 slots) master
    M: 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382   slots:10923-16383 (5461 slots) master
    S: 5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383   replicates bb6ef615bb0ae13275943caec0db9d30b9f35c5e
    S: ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384   replicates b4d120f2983ad683f7b68992e1ba414722238db7
    S: 9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385   replicates 837779b3965e2c9d4dd4385750aaaaf9a9039fb0
    Can I set the above configuration? (type 'yes' to accept): yes
    >>> Nodes configuration updated
    >>> Assign a different config epoch to each node
    >>> Sending CLUSTER MEET messages to join the cluster
    Waiting for the cluster to join...
    >>> Performing Cluster Check (using node 127.0.0.1:6380)
    M: bb6ef615bb0ae13275943caec0db9d30b9f35c5e
    127.0.0.1:6380 slots:0-5460 (5461 slots) master M: b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381 slots:5461-10922 (5462 slots) master M: 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382 slots:10923-16383 (5461 slots) master M: 5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383 slots: (0 slots) master replicates bb6ef615bb0ae13275943caec0db9d30b9f35c5e M: ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384 slots: (0 slots) master replicates b4d120f2983ad683f7b68992e1ba414722238db7 M: 9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385 slots: (0 slots) master replicates 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered.

    备注:

    1)--replicas #指定集群中每个主节点配备几个从节点,这里设置为1。

    2) redis-trib.rb工具的使用

    1、create:创建集群
    2、check:检查集群
    3、info:查看集群信息
    4、fix:修复集群
    5、reshard:在线迁移slot
    6、rebalance:平衡集群节点slot数量
    7、add-node:将新节点加入集群
    8、del-node:从集群中删除节点
    9、set-timeout:设置集群节点间心跳连接的超时时间
    10、call:在集群全部节点上执行命令
    11、import:将外部redis数据导入集群

    2)检验是否真的创建成功

    输入以下命令:

    redis-trib.rb check 127.0.0.1:6380

     如果现实信息如下,则说明创建的Redis集群是没问题。

    D:Redis-ClusterRedis-x64-3.2.100>redis-trib.rb check 127.0.0.1:6380
    Connecting to node 127.0.0.1:6380: OK
    Connecting to node 127.0.0.1:6383: OK
    Connecting to node 127.0.0.1:6382: OK
    Connecting to node 127.0.0.1:6384: OK
    Connecting to node 127.0.0.1:6385: OK
    Connecting to node 127.0.0.1:6381: OK
    >>> Performing Cluster Check (using node 127.0.0.1:6380)
    M: bb6ef615bb0ae13275943caec0db9d30b9f35c5e 127.0.0.1:6380   slots:0-5460      (5461 slots) master   1 additional replica(s)
    S: 5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383   slots:            (0 slots)    slave    replicates bb6ef615bb0ae13275943caec0db9d30b9f35c5e
    M: 837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382   slots:10923-16383 (5461 slots) master   1 additional replica(s)
    S: ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384   slots:            (0 slots)    slave    replicates b4d120f2983ad683f7b68992e1ba414722238db7
    S: 9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385   slots:            (0 slots)    slave    replicates 837779b3965e2c9d4dd4385750aaaaf9a9039fb0
    M: b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381   slots:5461-10922  (5462 slots) master   1 additional replica(s)
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    
    D:Redis-ClusterRedis-x64-3.2.100>

    3)信息查询

    使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息

    D:Redis-ClusterRedis-x64-3.2.100>redis-cli.exe -h 127.0.0.1 -p 6380
    127.0.0.1:6380> cluster nodes
    5d154137180284d926ef51a91fc75f9438249ef8 127.0.0.1:6383 slave          bb6ef615bb0ae13275943caec0db9d30b9f35c5e 0 1560690706115 4 connected
    bb6ef615bb0ae13275943caec0db9d30b9f35c5e 127.0.0.1:6380 myself,master  -                                        0 0             1 connected 0-5460
    837779b3965e2c9d4dd4385750aaaaf9a9039fb0 127.0.0.1:6382 master         -                                        0 15606907021143  connected 10923-16383
    ad151680a3e36cf2083ef822be0bdb075a7d36de 127.0.0.1:6384 slave          b4d120f2983ad683f7b68992e1ba414722238db7 0 1560690705116 5 connected
    9a2260a5a6a2add84b622a453a6a7b86a29d180d 127.0.0.1:6385 slave          837779b3965e2c9d4dd4385750aaaaf9a9039fb0 0 1560690703615 6 connected
    b4d120f2983ad683f7b68992e1ba414722238db7 127.0.0.1:6381 master         -                                        0 15606907071152  connected 5461-10922
    127.0.0.1:6380> dbsize
    (integer) 0
    127.0.0.1:6380>

  • 相关阅读:
    iaas,paas,saas理解
    July 06th. 2018, Week 27th. Friday
    July 05th. 2018, Week 27th. Thursday
    July 04th. 2018, Week 27th. Wednesday
    July 03rd. 2018, Week 27th. Tuesday
    July 02nd. 2018, Week 27th. Monday
    July 01st. 2018, Week 27th. Sunday
    June 30th. 2018, Week 26th. Saturday
    June 29th. 2018, Week 26th. Friday
    June 28th. 2018, Week 26th. Thursday
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/11033009.html
Copyright © 2011-2022 走看看