redis在Windows下以后台服务一键搭建集群(多机器)
redis在Windows下以后台服务一键搭建集群(多机器)
一、概述
此教程介绍如何在windows系统中多台机器之间布置redis集群,同时要以后台服务的模式运行。布置以脚本的形式,一键完成。多台机器之间布置集群比单台机器布置伪集群复杂得多,关于单机伪集群布置,参见另博文《redis在Windows下以后台服务一键搭建集群(单机--伪集群)》。
二、准备的工具与环境
此节准备环境部分,与《redis在Windows下以后台服务一键搭建集群(单机--伪集群)》说明一样,不同的是,环境可以只在其中一台机器上配置即可,然后最后操作执行集群的指令也只能在此台机器完成。
2.1资源下载
以下准备的工具,想要了解详细过程的,可以逐一按下面的分步说明,一一下载。当然,不想麻烦的,这里有一个包含所有工具的完整的包,直接下载即可,csdn下载链接:http://download.csdn.net/download/mingojiang/10188229
1.下载Redis for windows的最新版本,解压到c:\redis目录下备用。github下载链接:https://github.com/MSOpenTech/redis/releases
2.下载ruby环境RubyInstaller,这是ruby的运行环境。官网下载:http://rubyinstaller.org/downloads/ 我选的是“Ruby 2.3.3 (x64)”。
3,安装 GEM,Redis的ruby支持环境。由于GFW的问题,GEM的源在国内不可用,可以@翻##墙,提供一下免费&&翻@#墙工具,百度网盘下载链接:https://pan.baidu.com/s/1eSiLWo6密码: enfm,下载后需要解压码:edsryu4yu9hgfr34kj098@#^%(*@#FHk43ee6y9p8743。
4,下载 redis-trib.rb ,放到c:\redis目录下备用
github下载链接:https://github.com/antirez/redis/tree/3.2/src
这个是redis集群工作要用到的小工具,ruby语言开发的小工具。
2.2安装环境
1. 安装RubyInstaller
安装2.1章中第2节下载的RubyInstaller,勾选
Install Td/Tk Support
Add Ruby executables to your PATH
Associate .rb and .rbw files with this Ruby installation
2.安装 GEM
番@#!墙:运行第2.1章3节中下载的工具
显示已经连接成功了,这个时候,你可以直接安装redis与ruby之间通信的一个组件了,直接在命令行输入命令:
gem install redis
提示成功即可。
至此环境准备完闭
三、创建实例脚本
注意:由于中英文可能遇到兼容问题,所以运行脚本时,请把脚本文件放到英文目录下。
关于脚本,嫌麻烦的,通过本人csdn下载链接可直接下载,里面包含了所需的所有资料,下载链接为:http://download.csdn.net/download/mingojiang/10188229
创建一文本“install.bat”,打开脚本编辑,以三台机器,每台机器三个节点为例,分别为每台机器创建一份脚本。前三个参数IP、端口前缀与安装路径需要自行配置,请参看脚本注释说明,如下:
rem 本机IP,请自行配置
set localIp=192.168.1.159
rem 本机要开放的端口,一般以本机IP的尾号,固定三尾数,
rem 不够三位,后补0,如192.168.1.159,那设置成159,
rem 如果本机IP为192.168.1.31,那设置为310
set portPre=159
rem 你要安装的盘符,可自行配置
set InstallPath=D:\
set sourcePath=%~dp0
cd /d %InstallPath%
mkdir redis-cluster
cd redis-cluster
mkdir %portPre%01 %portPre%02 %portPre%03
copy %sourcePath%redis-server.exe %portPre%01
copy %sourcePath%redis-server.exe %portPre%02
copy %sourcePath%redis-server.exe %portPre%03
copy %sourcePath%EventLog.dll %portPre%01
copy %sourcePath%EventLog.dll %portPre%02
copy %sourcePath%EventLog.dll %portPre%03
copy %sourcePath%redis.windows-service.conf %portPre%01
copy %sourcePath%redis.windows-service.conf %portPre%02
copy %sourcePath%redis.windows-service.conf %portPre%03
copy %sourcePath%redis-trib.rb
copy %sourcePath%redis.windows-service.conf
copy %sourcePath%redis-cli.exe
copy %sourcePath%startLocalRedisService.bat
copy %sourcePath%stopLocalRedisService.bat
copy %sourcePath%uninstall.bat
copy %sourcePath%CreateCluster.bat
copy %sourcePath%add-auth.bat
rename %portPre%01\redis.windows-service.conf redis.conf
rename %portPre%02\redis.windows-service.conf redis.conf
rename %portPre%03\redis.windows-service.conf redis.conf
rem 关闭回显
@echo off
rem 定义变量延迟环境
setlocal enabledelayedexpansion
rem 读取所有内容
for /f "eol=* tokens=*" %%i in (%portPre%01\redis.conf) do (
rem 设置变量a为每行内容
set a=%%i
rem 如果该行有123,则将其改为456
set "a=!a:# cluster-enabled yes=cluster-enabled yes!"
rem 修改绑定的IP
set "a=!a:bind 127.0.0.1=bind %localIp%!"
rem 把修改后的全部行存入$
set "a=!a:port 6379=port %portPre%01!"
set "a=!a:dir ./=dir %InstallPath%redis-cluster\%portPre%01\!"
set "a=!a:# cluster-config-file nodes-6379.conf=cluster-config-file nodes.conf!"
echo !a!>>$)
rem 用$的内容替换原来a.txt内容
move $ %portPre%01\redis.conf
for /f "eol=* tokens=*" %%i in (%portPre%02\redis.conf) do (
set a=%%i
set "a=!a:# cluster-enabled yes=cluster-enabled yes!"
rem 修改绑定的IP
set "a=!a:bind 127.0.0.1=bind %localIp%!"
set "a=!a:port 6379=port %portPre%02!"
set "a=!a:dir ./=dir %InstallPath%redis-cluster\%portPre%02\!"
set "a=!a:# cluster-config-file nodes-6379.conf=cluster-config-file nodes.conf!"
echo !a!>>$)
move $ %portPre%02\redis.conf
for /f "eol=* tokens=*" %%i in (%portPre%03\redis.conf) do (
set a=%%i
set "a=!a:# cluster-enabled yes=cluster-enabled yes!"
rem 修改绑定的IP
set "a=!a:bind 127.0.0.1=bind %localIp%!"
set "a=!a:port 6379=port %portPre%03!"
set "a=!a:dir ./=dir %InstallPath%redis-cluster\%portPre%03\!"
set "a=!a:# cluster-config-file nodes-6379.conf=cluster-config-file nodes.conf!"
echo !a!>>$)
move $ %portPre%03\redis.conf
@echo on
echo modify redis.conf file finished....
echo begin install redis windows services.....
%InstallPath%redis-cluster\%portPre%01\redis-server.exe --service-install %InstallPath%redis-cluster\%portPre%01\redis.conf --service-name %portPre%01redisM
%InstallPath%redis-cluster\%portPre%02\redis-server.exe --service-install %InstallPath%redis-cluster\%portPre%02\redis.conf --service-name %portPre%02redisM
%InstallPath%redis-cluster\%portPre%03\redis-server.exe --service-install %InstallPath%redis-cluster\%portPre%03\redis.conf --service-name %portPre%03redisM
echo install redis windows services finished.....
echo begin start all the redis as windows service......
%InstallPath%redis-cluster\%portPre%01\redis-server.exe --service-start --service-name %portPre%01redisM
%InstallPath%redis-cluster\%portPre%02\redis-server.exe --service-start --service-name %portPre%02redisM
%InstallPath%redis-cluster\%portPre%03\redis-server.exe --service-start --service-name %portPre%03redisM
echo start all the redis as windows service finished....
rem 延时20秒,自动关闭窗口
ping -n 20 127.0>nul
四、创建集群脚本
通过以上第三节中的说明,分别在每个机器上创建一个脚本,并执行成功,然后在部署了环境的服务器上执行集群搭建工作。也是通过脚本完成,创建文本,命名“CreateCluster.bat”, 脚本需要配置每个机器的IP与端口号前缀,配置在脚本的前几行,配置好后,执行脚本按提醒操作,成功后即可,脚本如下:
rem 必须自己指定各个结点的IP与对应的端口前缀,格式为IP:portPre
rem 必须详细配置,此为三个服务器的IP,与对应redis结点的端口号前缀(端口号是连接的)
set localIp1=192.168.1.159:159
set localIp2=192.168.1.159:160
set localIp3=192.168.1.159:161
cd /d %~dp0
echo begin create redis cluster......
redis-trib.rb create --replicas 2 %localIp1%01 %localIp2%01 %localIp3%01 %localIp2%02 %localIp3%02 %localIp1%02 %localIp3%03 %localIp1%03 %localIp2%03
echo create redis cluster finished....
rem 延时20秒,自动关闭窗口
ping -n 20 127.0>nul
五、集群加密脚本
如果你无要为你的集群加密,请路过此节。为每台机器创建文本,命名“add-auth.bat”,脚本需要配置端口前缀与密码,密码需要全部配置成一样,配置好后,执行脚本按提醒操作,成功后即可,脚本如下:
rem 本机要开放的端口,一般以本机IP的尾号,固定三尾数,
rem 不够三位,后补0,如192.168.1.159,那设置成159,
rem 如果本机IP为192.168.1.31,那设置为%portPre%
set portPre=159
rem 给你的集群加上密码,可自行配置
set auth_password=#disiswnin((ndw0rksinm0stP0SIXsyst#mslik#Linux@*BSD@0ux(nd0SX(r#th#tw00p#r(tingsyst#
cd /d %~dp0
echo begin stop all the redis as windows service......
%portPre%01\redis-server.exe --service-stop --service-name %portPre%01redisM
%portPre%02\redis-server.exe --service-stop --service-name %portPre%02redisM
%portPre%03\redis-server.exe --service-stop --service-name %portPre%03redisM
echo stop all the redis as windows service finished....
echo begin add password to the windows service redis......
@echo off
rem 定义变量延迟环境
setlocal enabledelayedexpansion
rem 读取所有内容
for /f "eol=* tokens=*" %%i in (%portPre%01\redis.conf) do (
rem 设置变量a为每行内容
set a=%%i
rem 如果该行有123,则将其改为456
set "a=!a:# requirepass foobared=requirepass %auth_password%!"
set "a=!a:# masterauth <master-password>=masterauth %auth_password%!"
echo !a!>>$)
rem 用$的内容替换原来a.txt内容
move $ %portPre%01\redis.conf
for /f "eol=* tokens=*" %%i in (%portPre%02\redis.conf) do (
set a=%%i
set "a=!a:# cluster-config-file nodes-6379.conf=cluster-config-file nodes.conf!"
set "a=!a:# requirepass foobared=requirepass %auth_password%!"
set "a=!a:# masterauth <master-password>=masterauth %auth_password%!"
echo !a!>>$)
move $ %portPre%02\redis.conf
for /f "eol=* tokens=*" %%i in (%portPre%03\redis.conf) do (
set a=%%i
set "a=!a:# requirepass foobared=requirepass %auth_password%!"
set "a=!a:# masterauth <master-password>=masterauth %auth_password%!"
echo !a!>>$)
move $ %portPre%03\redis.conf
@echo on
echo end add password to the windows service redis......
echo begin start all the redis as windows service......
%portPre%01\redis-server.exe --service-start --service-name %portPre%01redisM
%portPre%02\redis-server.exe --service-start --service-name %portPre%02redisM
%portPre%03\redis-server.exe --service-start --service-name %portPre%03redisM
echo start all the redis as windows service finished....
echo off
rem 延时30秒,自动关闭窗口
ping -n 10 127.0>nul
六、卸载集群脚本
对安装后的集群服务,如果想要卸载,流程是,先停止所有节点服务,然后再反注册即可。为每台机器创建一个文本,每个机器脚本第一个参数需要配置端口前缀,脚本命名“uninstall.bat”,然后编辑脚本:
rem 本机要开放的端口,一般以本机IP的尾号,固定三尾数,
rem 不够三位,后补0,如192.168.1.159,那设置成159,
rem 如果本机IP为192.168.1.31,那设置为310
set portPre=159
cd /d %~dp0
echo begin stop all the redis as windows service......
%portPre%01\redis-server.exe --service-stop --service-name %portPre%01redisM
%portPre%02\redis-server.exe --service-stop --service-name %portPre%02redisM
%portPre%03\redis-server.exe --service-stop --service-name %portPre%03redisM
echo stop all the redis as windows service finished....
echo "unistall redis service....."
%portPre%01\redis-server.exe --service-uninstall --service-name %portPre%01redisM
%portPre%02\redis-server.exe --service-uninstall --service-name %portPre%02redisM
%portPre%03\redis-server.exe --service-uninstall --service-name %portPre%03redisM
echo "uninstall redis service finished"
rem 延时10秒,自动关闭窗口
ping -n 10 127.0>nul
七、停止集群节点脚本
有时想要停止所有节点服务,在服务管理器中,一个一个手动停止也是一种办法,但是麻烦,一个一个操作,费事,可通过脚本一键停止,为每台机器创建一个文本,配置第一个参数,脚本命名“stopLocalRedisService.bat”,编辑脚本:
rem 本机要开放的端口,一般以本机IP的尾号,固定三尾数,
rem 不够三位,后补0,如192.168.1.159,那设置成159,
rem 如果本机IP为192.168.1.31,那设置为310
set portPre=159
cd /d %~dp0
echo begin stop all the redis as windows service......
%portPre%01\redis-server.exe --service-stop --service-name %portPre%01redisM
%portPre%02\redis-server.exe --service-stop --service-name %portPre%02redisM
%portPre%03\redis-server.exe --service-stop --service-name %portPre%03redisM
echo stop all the redis as windows service finished....
rem 延时5秒,自动关闭窗口
ping -n 5 127.0>nul
八、启动集群脚本脚本
有时想要启动所有节点服务,在服务管理器中,一个一个手动启动也是一种办法,但是麻烦,一个一个操作,费事,可通过脚本一键启动,每台机器创建一个文本,配置第一个参数,脚本命名“startLocalRedisService.bat”,编辑脚本:
rem 本机要开放的端口,一般以本机IP的尾号,固定三尾数,
rem 不够三位,后补0,如192.168.1.159,那设置成159,
rem 如果本机IP为192.168.1.31,那设置为310
set portPre=159
cd /d %~dp0
echo begin start all the redis as windows service......
%portPre%01\redis-server.exe --service-start --service-name %portPre%01redisM
%portPre%02\redis-server.exe --service-start --service-name %portPre%02redisM
%portPre%03\redis-server.exe --service-start --service-name %portPre%03redisM
echo start all the redis as windows service finished....
rem 延时5秒,自动关闭窗口
ping -n 5 127.0>nul
九、集群的测试、运维
集群搭建后,需要测试,调试,运维等,涉及到很多的命令与方法,请参加另一博文:http://blog.csdn.net/mingojiang/article/details/78902370
redis在Windows下以后台服务一键搭建集群(多机器)的更多相关文章
- redis在Windows下以后台服务一键搭建集群(单机--伪集群)
redis在Windows下以后台服务一键搭建集群(单机--伪集群) 一.概述 此教程介绍如何在windows系统中同一台机器上布置redis伪集群,同时要以后台服务的模式运行.布置以脚本的形式,一键 ...
- redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(多机)
redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(多机) 一.概述 此教程介绍如何在windows系统中多个服务器之间,布置redis哨兵模式(主从复制),同时要以后台服务的模式运行 ...
- redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(单机)
redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(单机) 一.概述 此教程介绍如何在windows系统中单机布置redis哨兵模式(主从复制),同时要以后台服务的模式运行.布置以脚本 ...
- [MapReduce_add_1] Windows 下开发 MapReduce 程序部署到集群
0. 说明 Windows 下开发 MapReduce 程序部署到集群 1. 前提 在本地开发的时候保证 resource 中包含以下配置文件,从集群的配置文件中拷贝 在 resource 中新建 ...
- redis 在windows 上面的安装和使用,集群搭建
redis作为nosql数据库,将数据存储到内存中(缓存),具有非常高的性能.下面讲解一下redis的安装及java api的使用. 1:redis 安装 windows 上面直接下载msi文件,安装 ...
- windows下的Nginx+Squid+Tomcat+Memcached集群
- ansible_playbook 一键搭建集群架构
目录 基础优化 SSH.Ansible,批量管理服务项目 剧本开始-----.10分钟左右 mail.yaml base.yaml rsync.yaml nfs.yaml web.yaml tweb. ...
- Redis在windows下的环境搭建
Redis在windows下的环境搭建 下载windows版本redis,,官方下载地址:http://redis.io/download, 不过官方没有Windows版本,官网只提供linux版本的 ...
- Redis在windows下的配置
Redis在windows下的配置(在windows-64下安装redis,请参考微软redis的github:https://github.com/MSOpenTech/redis/releases ...
随机推荐
- IPv4 和 IPv6地址
目前Internet上使用的基本都是IPv4地址,也就是说地址总共是32个比特位,也就是32位二进制数. 所以IPv4地址总的容量是 2的32次方 = 4294967296 比如 11010010 ...
- 6.(转载)SSRF漏洞挖掘经验
SSRF 漏洞的寻找 一.从WEB功能上寻找 我们从上面的概述可以看出,SSRF是由于服务端获取其他服务器的相关信息的功能中形成的,因此我们大可以 列举几种在web 应用中常见的从服务端获取其他服务器 ...
- es6基础系列五--数组的拓展
Array.from() 用于将两类对象转为真正的数组,类似数组对象和可遍历对象(包括数据结构Set和Map)转化为数组 格式:Array.from(arrayLike[, mapFn[, thisA ...
- kolla-ansible安装cinder
LVM后端 环境拓扑 节点 IP 主机名 Controller/Network/Apollo 92.0.0.11 anode Compute/Storage 92.0.0.12 bnode multi ...
- 洛谷P2294 [HNOI2005]狡猾的商人
P2294 [HNOI2005]狡猾的商人 题目描述 输入输出格式 输入格式: 从文件input.txt中读入数据,文件第一行为一个正整数w,其中w < 100,表示有w组数据,即w个账本,需要 ...
- CF868F Yet Another Minimization Problem(决策单调性)
题目描述:给定一个序列,要把它分成k个子序列.每个子序列的费用是其中相同元素的对数.求所有子序列的费用之和的最小值. 输入格式:第一行输入n(序列长度)和k(需分子序列段数).下一行有n个数,序列的每 ...
- Spring MVC那点事儿
自问自答 1 Spring MVC的启动原理? spring mvc是基于ioc容器的,因此需要先创建IOC容器,才能创建对应的spring mvc执行环境. IOC容器是通过ContextLoade ...
- 再看thinkphp5分页类使用
之前使用tp5的分页paginate类时只用到了第一个参数,也就是每页显示多少行 今天又仔细看了下手册和paginate类,发现paginate可传入的参数有很多,可以满足更多需求 比如可以指定分页的 ...
- POJ1442 Black Box 堆
用大根堆和小根堆分别存放前$i-1$大的元素前$k-i$小的元素. 将当前序列的元素压入最小堆,如果最小堆的最小数大于最大堆的最大数则进行交换,保证最大堆中的所有数小于最小堆. 因为$i$值每进行一次 ...
- Django基础(1)
昨日内容回顾: 1. socket创建服务器 2. http协议: 请求协议 请求首行 请求方式 url?a=1&b=2 协议 请求头 key:value 请求体 a=1&b=2(只有 ...