redis在Windows下以後臺服務一鍵搭建集羣(多機器)

redis在Windows下以後臺服務一鍵搭建集羣(多機器)

 

一、概述

此教程介紹如何在windows系統中多臺機器之間佈置redis集羣,同時要以後臺服務的模式運行。佈置以腳本的形式,一鍵完成。多臺機器之間佈置集羣比單臺機器佈置僞集羣複雜得多,關於單機僞集羣佈置,參見另博文《redisWindows下以後臺服務一鍵搭建集羣(單機--僞集羣)》。

二、準備的工具與環境

此節準備環境部分,與《redisWindows下以後臺服務一鍵搭建集羣(單機--僞集羣)》說明一樣,不同的是,環境可以只在其中一臺機器上配置即可,然後最後操作執行集羣的指令也只能在此臺機器完成。

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,安裝 GEMRedisruby支持環境由於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.13節中下載的工具

 

顯示已經連接成功了,這個時候,你可以直接安裝redisruby之間通信的一個組件了,直接在命令行輸入命令:

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

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章