Linux下redis集羣搭建與部署(詳細)

本文主要介紹已經安裝好的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]

到這裏本文講解也結束了,親測有效的,有問題歡迎留言給博主哦,覺得有用的話順便點個讚唄~

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