redis單機版偽分散式叢集搭建
繼上一篇redis單機伺服器搭建成功之後,按如下方式進行叢集搭建。
搭建一個最小的叢集需要6臺機器(由節點投票機制決定至少需要3臺主節點,另外為了高可用每個主節點至少要備一個從節點,所以總共需要6個節點。這裡6個節點全部設在一臺機上,通過埠號來分別。實現偽分散式。)
1.在/usr/local/目錄下建立資料夾redisCluster,並在redisCluster目錄下建立6個資料夾
mkdir /usr/local/redisCluster
mkdir /usr/local/redisCluster/redis0{1,2,3,4,5,6}
2.複製單機單例項下可正常啟動redis情況下的 /usr/local/bin 目錄下的所有檔案分別到上面建立的6個資料夾中
cp /usr/local/bin/* /usr/local/redisCluster/redis01/
cp /usr/local/bin/* /usr/local/redisCluster/redis02/
cp /usr/local/bin/* /usr/local/redisCluster/redis03/
cp /usr/local/bin/* /usr/local/redisCluster/redis04/
cp /usr/local/bin/* /usr/local/redisCluster/redis05/
cp /usr/local/bin/* /usr/local/redisCluster/redis06/
3.再對每個例項裡面的redis.conf進行修改(這裡修改其中一份,然後其他5份進行復制之後修改下埠號即可,可以用ssh工具將該配置檔案下載到windows中進行編輯修改,更快捷省事)
vi /usr/local/redisCluster/redis01/redis.conf
找到以下幾處進行修改(修改這10處就基本滿足叢集啟動條件了,其他引數可自行百度)
第1處: port 6379 ————> 值 改成 7001 第2處: daemonize no ————> 值 改成 yes 第3處: pidfile /var/run/redis_6379.pid ————> 值 改成 ./redis_7001.pid 第4處: logfile "" ————> 值 改成 "./logs/redis_7001.log" 第5處: bind 127.0.0.1 ————> 值 改成 本機IP(如我這裡是192.168.25.129) 第6處: protected-mode yes ————> 值 改成 no 第7處: # cluster-enabled yes ————> 去掉註釋 第8處: # cluster-config-file nodes-6379.conf ————> 去掉註釋 並把數字改成對應埠號,如這裡是7001 第9處: # cluster-node-timeout 15000 ————> 去掉註釋 第10處: appendonly no ————> 值 改成 yes
4.將上面編輯號儲存的/usr/local/redisCluster/redis01/目錄下的redis.conf檔案重新命名為7001.conf,然後複製5份分別放到redis02、redis03、redis04、redis05、redis06資料夾下面(可刪除掉原資料夾中的redis.conf檔案),然後再對每個資料夾下的.conf檔案重新命名為對應埠號.conf,接著編輯裡面的內容,將之前修改為7001的全部修改成對應埠號儲存即可,這個工作放到windows中來做可以很方便快捷。(由於配置檔案中把log配到當前目錄下的logs資料夾中,所以還要在各個資料夾下建立logs資料夾)
5.將ruby指令碼拷貝到redisCluster目錄下
cp /usr/local/redis/redis-4.0.8/src/redis-trib.rb /usr/local/redisCluster/
6.建立redis叢集啟動、停止的指令碼以及ruby建立叢集的指令碼並授權
touch /usr/local/redisCluster/startCluster.sh
touch /usr/local/redisCluster/shutdownCluster.sh
touch /usr/local/redisCluster/createCluster.sh
chmod 777 /usr/local/redisCluster/*.sh
內容分別如下:
startCluster.sh:
cd /usr/local/redisCluster/redis01
./redis-server ./7001.conf
cd /usr/local/redisCluster/redis02
./redis-server ./7002.conf
cd /usr/local/redisCluster/redis03
./redis-server ./7003.conf
cd /usr/local/redisCluster/redis04
./redis-server ./7004.conf
cd /usr/local/redisCluster/redis05
./redis-server ./7005.conf
cd /usr/local/redisCluster/redis06
./redis-server ./7006.conf
shutdownCluster.sh:
cd /usr/local/redisCluster/redis01/
./redis-cli -h 192.168.25.129 -p 7001 shutdown
cd /usr/local/redisCluster/redis02/
./redis-cli -h 192.168.25.129 -p 7002 shutdown
cd /usr/local/redisCluster/redis03/
./redis-cli -h 192.168.25.129 -p 7003 shutdown
cd /usr/local/redisCluster/redis04/
./redis-cli -h 192.168.25.129 -p 7004 shutdown
cd /usr/local/redisCluster/redis05/
./redis-cli -h 192.168.25.129 -p 7005 shutdown
cd /usr/local/redisCluster/redis06/
./redis-cli -h 192.168.25.129 -p 7006 shutdown
createCluster.sh:
ruby redis-trib.rb create --replicas 1 192.168.25.129:7001 192.168.25.129:7002 192.168.25.129:7003 192.168.25.129:7004 192.168.25.129:7005 192.168.25.129:7006
最後redisCluster目錄和各個redis例項目錄結構如下:
7.先用剛剛建立的指令碼啟動6個例項,再用ruby指令碼建立叢集
cd /usr/local/redisCluster/
./startCluster.sh
檢視程序:
ps -ef | grep redis
再執行ruby指令碼建立叢集
./createCluster.sh
然後 輸 yes
這樣叢集就搭建成功了。登入任意一個節點客戶端驗證(-c 表示以叢集方式登入),也可以用redis客戶端工具RedisDesktopManager來視覺化地管理redis資料庫。
cd /usr/local/redisCluster/redis01/
./redis-cli -h 192.168.25.129 -p 7001 -c
這樣一路順風就搭建完成了。超簡單有沒有?
但是初次搭建,可能linux中有些軟體沒有安裝,需要聯網安裝的。
主要有下面幾個:
yum -y install gcc ## make install 命令需要此環境
yum -y intall ruby ## 安裝ruby(此時安裝的可能使低版本的)
curl -L get.rvm.io | bash -s stable ## 安裝rvm
source /usr/local/rvm/scripts/rvm ## 使安裝的rvm立即生效
rvm install 2.4.1 ## 通過rvm來安裝ruby高階版本
gem install redis ## 通過ruby的工具包gem來安裝redis介面
順利到此,則執行ruby指令碼的環境已具備
通過startCluster.sh指令碼先啟動6個例項,然後通過createCluster.sh指令碼建立叢集即可成功.
另外,需要注意的是,在關閉redis叢集之後,再次重複步驟啟動叢集時會報錯,此時只需要刪除redis各個例項中生成的檔案即可再次按步驟啟動叢集(當然,這是在測試時這麼幹)。