搭建一個最小的叢集需要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.199.101 -p 7001 shutdown
cd /usr/local/redisCluster/redis02/
./redis-cli -h 192.168.199.101 -p 7002 shutdown
cd /usr/local/redisCluster/redis03/
./redis-cli -h 192.168.199.101 -p 7003 shutdown
cd /usr/local/redisCluster/redis04/
./redis-cli -h 192.168.199.101-p 7004 shutdown
cd /usr/local/redisCluster/redis05/
./redis-cli -h 192.168.199.101 -p 7005 shutdown
cd /usr/local/redisCluster/redis06/
./redis-cli -h 192.168.199.101 -p 7006 shutdown
createCluster.sh:
ruby redis-trib.rb create --replicas 1 192.168.199.101:7001 192.168.199.101:7002 192.168.199.101:7003 192.168.199.101:7004 192.168.199.101:7005 192.168.199.101: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.199.101 -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各個執行個體中生成的檔案即可再次按步驟啟動叢集(當然,這是在測試時這麼幹)。