本文主要介紹已經安裝好的redis的集羣的搭建
若沒有安裝redis,可以參考我上篇文章
https://blog.csdn.net/qq_41047000/article/details/106032905
進入redis安裝目錄下創建目錄
cd /usr/local/redis
mkdir redis-cluster
cd redis-cluster
mkdir 7000 7001 7002 7003 7004 7005
將redis下的redis.confi文件複製到每個目錄下
cp redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7000
cp redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7001
cp redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7002
cp redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7003
cp redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7004
cp redis-4.0.8/redis.conf /usr/local/redis/redis-cluster/7005
修改每個文件夾下的redis.conf
#例如
vim redis-cluster/7000/redis.conf
#修改如下
# 端口號
port 7000
# 後臺啓動
daemonize yes
# 開啓集羣
cluster-enabled yes
#集羣節點配置文件(注意需要跟端口號一樣)
cluster-config-file nodes-7000.conf
#數據文件存放位置(注意此處的路徑需要自己創建好)
dir /usr/local/redis/redis-cluster/7000/data/
# 集羣連接超時時間
cluster-node-timeout 5000
# 進程pid的文件位置 (注意需要跟端口號一樣)
pidfile /var/run/redis-7000.pid
# 開啓aof
appendonly yes
# aof文件路徑
appendfilename "appendonly-7000.aof"
# rdb文件路徑
dbfilename dump-7000.rdb
修改完六個配置內容後開始啓動
cd /usr/local/redis
#這裏閒一個個啓動麻煩的話可以自己配置一個配置文件啓動
bin/redis-server redis-cluster/7000/redis.conf
bin/redis-server redis-cluster/7001/redis.conf
bin/redis-server redis-cluster/7002/redis.conf
bin/redis-server redis-cluster/7003/redis.conf
bin/redis-server redis-cluster/7004/redis.conf
bin/redis-server redis-cluster/7005/redis.conf
啓動完後查看進程
[root@frank redis]# ps -ef|grep redis
#顯示有六個則是啓動成功
root 1698 1 0 10:11 ? 00:00:00 bin/redis-server *:7000 [cluster]
root 1728 1 0 10:15 ? 00:00:00 bin/redis-server *:7001 [cluster]
root 1733 1 0 10:15 ? 00:00:00 bin/redis-server *:7002 [cluster]
root 1738 1 0 10:15 ? 00:00:00 bin/redis-server *:7003 [cluster]
root 1743 1 0 10:15 ? 00:00:00 bin/redis-server *:7004 [cluster]
root 1749 1 1 10:15 ? 00:00:00 bin/redis-server *:7005 [cluster]
到這裏只是啓動了六個單進程的redis,開始創建集羣,先安裝好ruby
yum install ruby rubygems -y
使用gem要先鏡像一下
#這裏需要鏡像一下
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
#確保鏡像成功
[root@frank redis]# gem sources -l
*** CURRENT SOURCES ***
https://gems.ruby-china.com/
然後執行連接ruby-redis
[root@frank redis]# gem install redis
上面步驟有可能報錯查了資料發現是版本太低
解決辦法是 先安裝rvm,再把ruby版本提升
ERROR: Error installing redis:
redis requires Ruby version >= 2.3.0.
ruby版本提升(若沒有報錯不需要進行此步驟)
#安裝curl
sudo yum install curl
#安裝rvm
curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm
#查看rvm庫中已知的ruby版本
rvm list known
#安裝一個ruby版本
rvm install 2.4.0
#使用一個ruby版本
rvm use 2.4.0
#卸載一個已知版本
rvm remove 2.3.0
#查看版本
ruby --version
#再安裝redis就可以了
gem install redis
創建集羣
#進入src下面
cd /usr/local/redis/redis-4.0.8/src
#創建集羣
[root@frank src]# ./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
Adding replica 127.0.0.1:7004 to 127.0.0.1:7000
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7003 to 127.0.0.1:7002
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 1b76695d84bc510b79eedc42c471ed424d06f8e2 127.0.0.1:7000
slots:0-5460 (5461 slots) master
M: 25beb35c19a0b5967a874b4e151b719d4df2cfeb 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
M: 225f7ab7cee8a4f77bc41ae7c67b90d179875db3 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
S: cf995294ef29569ed34a32e8202a378732022c4d 127.0.0.1:7003
replicates 25beb35c19a0b5967a874b4e151b719d4df2cfeb
S: 31cf1120d517dc2a3c65887799680a06fad03efb 127.0.0.1:7004
replicates 225f7ab7cee8a4f77bc41ae7c67b90d179875db3
S: c2f3c82b875d57422c66bd89e3a60a6b3dc05ffd 127.0.0.1:7005
replicates 1b76695d84bc510b79eedc42c471ed424d06f8e2
#這裏直接寫入yes就行
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.
>>> Performing Cluster Check (using node 127.0.0.1:7000)
M: 1b76695d84bc510b79eedc42c471ed424d06f8e2 127.0.0.1:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
M: 225f7ab7cee8a4f77bc41ae7c67b90d179875db3 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
M: 25beb35c19a0b5967a874b4e151b719d4df2cfeb 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
S: c2f3c82b875d57422c66bd89e3a60a6b3dc05ffd 127.0.0.1:7005
slots: (0 slots) slave
replicates 1b76695d84bc510b79eedc42c471ed424d06f8e2
S: cf995294ef29569ed34a32e8202a378732022c4d 127.0.0.1:7003
slots: (0 slots) slave
replicates 25beb35c19a0b5967a874b4e151b719d4df2cfeb
S: 31cf1120d517dc2a3c65887799680a06fad03efb 127.0.0.1:7004
slots: (0 slots) slave
replicates 225f7ab7cee8a4f77bc41ae7c67b90d179875db3
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
到這裏集羣就安裝好了,測試一下
#往7000 裏面存入數據,會發現存儲到7001裏面中了,是因爲分配key的時候,它會使用CRC16算法,這裏將keyname分配到了7001節點上
[root@frank bin]# ./redis-cli -c -p 7000
127.0.0.1:7000> set name frank
-> Redirected to slot [5798] located at 127.0.0.1:7001
OK
127.0.0.1:7001> get name
"frank"
在啓動時會發現一個個啓動太麻煩,這裏配置一下啓動關閉文件
#進入安裝redis的路徑
cd /usr/local/redis
#編寫關閉文件
#vi stop-all.sh
#加入下面內容,編輯完之後按esc鍵輸入 :wq 退出保存
#這裏得找到自己配置啓動得地方,我得是在bin下面
bin/redis-cli -p 7000 shutdown
bin/redis-cli -p 7001 shutdown
bin/redis-cli -p 7002 shutdown
bin/redis-cli -p 7003 shutdown
bin/redis-cli -p 7004 shutdown
bin/redis-cli -p 7005 shutdown
#賦值權限
chmod u+x stop-all.sh
#編寫啓動文件
vi start-all.sh
#加入下面內容,編輯完之後按esc鍵輸入 :wq 退出保存
#這裏得找到自己配置啓動得地方,我得是在bin下面
bin/redis-server redis-cluster/7000/redis.conf
bin/redis-server redis-cluster/7001/redis.conf
bin/redis-server redis-cluster/7002/redis.conf
bin/redis-server redis-cluster/7003/redis.conf
bin/redis-server redis-cluster/7004/redis.conf
bin/redis-server redis-cluster/7005/redis.conf
#賦值權限
chmod u+x start-all.sh
啓動 stop-all.sh文件
#啓動
[root@frank redis]# ./stop-all.sh
#查看進程
[root@frank redis]# ps -ef|grep redis
root 20731 20106 0 15:05 pts/0 00:00:00 grep --color=auto redis
啓動start-all.sh文件
#啓動文件
[root@frank redis]# ./start-all.sh
20751:C 13 May 15:07:29.734 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20751:C 13 May 15:07:29.735 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20751, just started
20751:C 13 May 15:07:29.735 # Configuration loaded
20753:C 13 May 15:07:29.786 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20753:C 13 May 15:07:29.786 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20753, just started
20753:C 13 May 15:07:29.786 # Configuration loaded
20755:C 13 May 15:07:29.839 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20755:C 13 May 15:07:29.839 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20755, just started
20755:C 13 May 15:07:29.839 # Configuration loaded
20757:C 13 May 15:07:29.948 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20757:C 13 May 15:07:29.949 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20757, just started
20757:C 13 May 15:07:29.949 # Configuration loaded
20768:C 13 May 15:07:30.026 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20768:C 13 May 15:07:30.026 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20768, just started
20768:C 13 May 15:07:30.026 # Configuration loaded
20773:C 13 May 15:07:30.122 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
20773:C 13 May 15:07:30.122 # Redis version=4.0.8, bits=64, commit=00000000, modified=0, pid=20773, just started
20773:C 13 May 15:07:30.123 # Configuration loaded
#查看進程
[root@frank redis]# ps -ef|grep redis
root 20752 1 0 15:07 ? 00:00:00 bin/redis-server *:7000 [cluster]
root 20754 1 0 15:07 ? 00:00:00 bin/redis-server *:7001 [cluster]
root 20756 1 0 15:07 ? 00:00:00 bin/redis-server *:7002 [cluster]
root 20767 1 0 15:07 ? 00:00:00 bin/redis-server *:7003 [cluster]
root 20772 1 0 15:07 ? 00:00:00 bin/redis-server *:7004 [cluster]
root 20777 1 0 15:07 ? 00:00:00 bin/redis-server *:7005 [cluster]
到這裏本文講解也結束了,親測有效的,有問題歡迎留言給博主哦,覺得有用的話順便點個讚唄~