本次Redis 集群搭建使用官方提供的Redis Cluster的管理工具:redis-trib.rb;
一共需要4个部件:
将下载的 Redis-x64-3.2.100.zip 解压到 D盘下的 Redis-Cluster 文件夹里:D:\Redis-Cluster\Redis-x64-3.2.100
需要运行3个实例,Redis集群需要至少3个以上节点,低于3个无法创建;
通过配置文件来启动6个不同的Redis实例,将创建一个三主三从的集群;
由于Redis默认端口为6379,所以这里使用了6380、6381、6382、6383、6384、6385来运行6个Redis实例;
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-Cluster\Redis-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
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
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
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
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
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
port 6380 #端口号 loglevel notice #日志的记录级别,notice是适合生产环境的 logfile "Logs/redis6380_log.txt" #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录 syslog-enabled yes #是否使用系统日志 syslog-ident redis6380 #在系统日志的标识名 appendonly yes #数据的保存为aof格式 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
将上述配置文件保存到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
redis.6380.conf等配置文件最好使用完整路径,避免重启Redis集群出现问题
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
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
双击下载的 “rubyinstaller-2.2.4-x64.exe” 安装即可,同样,为了操作方便,也是建议安装在盘符根目录下 D:\Ruby27-x64
意思是将ruby添加到系统的环境变量中,在cmd命令中能直接使用ruby的命令
安装Ruby环境下Redis的驱动
将下载的"Ruby环境下Redis的驱动文件(redis-3.2.2.gem)"拷贝到Ruby安装根目录(D:\Ruby27-x64)下。
然后执行安装命令如下:
gem install --local D:\Ruby27-x64\redis-3.2.2.gem
将下载的“创建Redis集群的ruby脚本文件 “redis-trib.rb” 文件拷贝到Redis安装根目录(D:\Redis-Cluster\Redis-x64-3.2.100)下。
CMD 下切换到Redis目录(D:\Redis-Cluster\Redis-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-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 >>> 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、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数据导入集群
输入一下命令
redis-trib.rb check 127.0.0.1:6380
如果现实信息如下,则说明创建的Redis集群是没问题。
D:\Redis-Cluster\Redis-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-Cluster\Redis-x64-3.2.100>
使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息
D:\Redis-Cluster\Redis-x64-3.2.100>redis-cli.exe -h 127.0.0.1 -p 6380 127.0.0.1:6380> cluster nodes5d154137180284d926ef51a91fc75f9438249ef8 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>
搜索
复制
<iframe height="240" width="320"></iframe>