由于当前系统技术栈需要,跑的主机都是Windows系统,用到Redis,所以整了个Win下的Redis部署集群。
目录
下载Redis官方提供的创建Redis集群的ruby脚本redis-tirb.rb
环境说明
- 操作系统:Windows Server 2012 R2 x64
- CPU:4核
- 内存:8GB
目前已单台服务器部署集群为例,部署多台服务器类似。因Redis是单线程处理,多核CPU也只能使用一个核,所以部署在同一台电脑上,通过运行多个Redis实例组成集群,从而提高CPU利用率。
组件列表清单
- Redis:Windows下使用微软编译发布V3.0.504版本
- Ruby:Ruby语言环境V2.2.4-x64
- Redis的Ruby驱动:redis-3.2.2.gem
- 创建Redis集群工具:redis-trib.rb
各组件安装部署具体流程
-
下载安装Redis
下载地址https://github.com/microsoftarchive/redis/releases
Redis提供msi和zip格式下载文件,这里下载zip格式3.0.504版本。将下载到的Redis-x64-3.0.504.zip解压即可,建议放在盘符更目录下,并修改目录名为Redis,如D:\Redis或E:\Redis。
通过配置文件来启动6个不同的Redis实例,分别3个主节点和3个从节点,端口分配为6380、6381、6382、6390、6391、6392。
每个实例都有各自配置文件。
配置文件中以下两种保存日志的方式(保存在文件中、保存到System Log中)请根据需求选择其中一种即可:
loglevel notice #日志的记录级别,notice是适合生产环境的
logfile "Logs/redis6380_log.txt" #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录
syslog-enabled yes #是否使用系统日志
syslog-ident redis6380 #在系统日志的标识名
这里使用保存在文件中的方式,所以先在Redis目录D:/Redis下新建Logs文件夹。
redis.windows-service.6380.conf 内容如下:
port 6380
loglevel notice
logfile "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.windows-service.6381.conf 内容如下:
port 6381
loglevel notice
logfile "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.windows-service.6382.conf 内容如下:
port 6382
loglevel notice
logfile "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.windows-service.6390.conf 内容如下:
port 6390
loglevel notice
logfile "Logs/redis6390_log.txt"
appendonly yes
appendfilename "appendonly.6390.aof"
cluster-enabled yes
cluster-config-file nodes.6390.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
redis.windows-service.6391.conf 内容如下:
port 6391
loglevel notice
logfile "Logs/redis6391_log.txt"
appendonly yes
appendfilename "appendonly.6391.aof"
cluster-enabled yes
cluster-config-file nodes.6391.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
redis.windows-service.6392.conf 内容如下:
port 6392
loglevel notice
logfile "Logs/redis6392_log.txt"
appendonly yes
appendfilename "appendonly.6392.aof"
cluster-enabled yes
cluster-config-file nodes.6392.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\cluster\目录下,并使用这些配置文件安装6个Redis服务,命令如下:注:redis.6380.conf等配置文件最好使用完整路径,避免重启Redis集群出现问题。
D:\Redis\redis-server.exe --service-install D:\Redis\cluster\redis.windows-service.6380.conf --service-name redis6380
D:\Redis\redis-server.exe --service-install D:\Redis\cluster\redis.windows-service.6381.conf --service-name redis6381
D:\Redis\redis-server.exe --service-install D:\Redis\cluster\redis.windows-service.6382.conf --service-name redis6382
D:\Redis\redis-server.exe --service-install D:\Redis\cluster\redis.windows-service.6390.conf --service-name redis6390
D:\Redis\redis-server.exe --service-install D:\Redis\cluster\redis.windows-service.6391.conf --service-name redis6391
D:\Redis\redis-server.exe --service-install D:\Redis\cluster\redis.windows-service.6392.conf --service-name redis6392
启动服务,命令如下:
D:/Redis/redis-server.exe --service-start --service-name redis6380
D:/Redis/redis-server.exe --service-start --service-name redis6381
D:/Redis/redis-server.exe --service-start --service-name redis6382
D:/Redis/redis-server.exe --service-start --service-name redis6390
D:/Redis/redis-server.exe --service-start --service-name redis6391
D:/Redis/redis-server.exe --service-start --service-name redis6392
执行结果:
-
下载安装ruby
下载路径:http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.2.4-x64.exe
下载后,双击安装即可,同样,为了操作方便,也是建议安装在盘符根目录下,如: C:\Ruby22-x64 ,安装时这里选中后两个选项,意思是将ruby添加到系统的环境变量中,在cmd命令中能直接使用ruby的命令。
-
下载ruby环境下Redis驱动
考虑到兼容性,这里下载3.2.2版本https://rubygems.org/gems/redis/versions/3.2.2
安装该驱动,假如驱动文件放在C:/Ruby22-x64/下,命令如下:
gem install --local C:/Ruby22-x64/redis-3.2.2.gem
-
下载Redis官方提供的创建Redis集群的ruby脚本redis-tirb.rb
路径:https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb
打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb,建议保存到Redis的目录下。
注意:因为redis-trib.rb是ruby代码,必须用ruby来打开,若redis-trib.rb无法识别,需要手动选择该文件的打开方式:
-
创建Redis集群
CMD控制台切换到Redis目录,使用redis-trib.rb脚本来创建Redis集群:
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:6390 127.0.0.1:6391 127.0.0.1:6392
其中,replicas 参数为1,说明一个主分配一个副本从节点,参数为0,说明都是主节点。
当出现提示时,需要手动输入yes,输入后,当出现以下内容,说明已经创建了Redis集群。
检验是否真的创建成功,输入以下命令:
redis-trib.rb check 127.0.0.1:6380
使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息
redis-cli.exe -c -p 6380
redis-cli常用命令:
dbsize:查询记录总数
cluster info:查看集群的信息
更多指令:https://redis.io/commands
-
性能测试
使用自带工具进行性能测试,命令如下:
redis-benchmark.exe -h 127.0.0.1 -p 6380 -q -n 100000
开启流水线,命令如下:
redis-benchmark -n 1000000 -t set,get -P 16 -q -p 6380
在个人笔记本上性能测试,还算可以了吧。
以上不足之处,还请帮忙指出,多多指教。
参考资料
大家好,我是Kimihong,多年程序员,用过C/C++/Java/C#,写过Android程序,正在学习Python,对GO感兴趣,擅长后端开发。有个weixin公众号叫『阿尔法电子』,专注于计算机科学技术/科技趣闻/创意DIY/分享,每周至少更新一次,期待你的关注,和我一起学习、成长。转载请注明出处。