Centos7 Redis5.0分片集羣搭建

 

搭建之後發現,Redis5.0比Redis4.0搭建主從集羣方便多了,推薦使用Redis5.0搭建集羣

有幾個要注意的地方首需要注意:

1、Redis5.0要求在3個主節點的主從集羣中,--cluster-replicas 2設置每個主節點的從節點個數,這裏每個主節點的從節點個數爲2,每臺機器平均下來布三個節點

2、另一個注意的問題是防火牆,有可能啓動並沒有任何問題,但是在使用以下命令創建集羣時會失敗

redis-cli --cluster create ......

原因有可能是:

1、Redis端口未在防火牆中配置,請把Redis堅挺的端口加入防火牆白名單中。參考:https://blog.csdn.net/XIANZHIXIANZHIXIAN/article/details/78918772

2、Redis集羣總線端口未在防火牆中配置,請把Redis集羣總線端口加入防火牆白名單中。參考:https://blog.csdn.net/XIANZHIXIANZHIXIAN/article/details/82392172

正式開始安裝步驟

1、從官網下載Redis5.0穩定版的壓縮包並解壓

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar -xvf redis-5.0.5.tar.gz

2、執行源碼編譯安裝,PREFIX表示安裝的目標路徑,本例中是/usr/local/redis+監聽端口(這裏可以偷懶一下只安裝一個,然後複製安裝完畢後的文件就行,目標路徑文件夾不存在的話需要先創建)。如圖所示:

cd redis-5.0.5/src
make
make install PREFIX=/usr/local/redis6379

3、進入配置環節,複製源碼包中配置文件到安裝路徑下,需要配置9個節點的文件,端口和IP按配置類推

cp redis-5.0.5/redis.conf redis6379/
vim redis6379/redis.conf

需要修改配置文件中的內容爲下框所示,其中需要注意:各個節點密碼都必須一致,否則Redirected就會失敗,關於masterauth和requirepass的不同在文末有解答

daemonize yes                       #讓Redis可以後臺運行
pidfile /var/run/redis_6379.pid     #每個節點的pid文件建議修改爲resid_{port}.pid的形式
port 6379                           #Redis監聽的端口
bind 192.168.56.103                 #綁定Redis節點所在機器的IP
masterauth passwd1234               #設置密碼
requirepass passwd1234              #設置密碼
cluster-enabled yes                 #支持集羣
cluster-config-file nodes-6379.conf
cluster-node-timeout 5000           #超時時間,單位ms
appendonly yes                      #開啓AOF日誌

4、啓動每臺機器上所有的Redis,啓動結果如圖所示

5、激動人心的一刻,創建Redis集羣命令

./redis-cli --cluster create 192.168.56.103:6379 192.168.56.103:6380 192.168.56.103:6381 192.168.56.102:6382 192.168.56.102:6383 192.168.56.102:6384 192.168.56.104:6385 192.168.56.104:6386 192.168.56.104:6387 --cluster-replicas 2 -a passwd1234

結果成功有圖爲證,這樣一套Redis5.0主從集羣就搭建完畢啦

>>> Performing hash slots allocation on 9 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 192.168.56.102:6383 to 192.168.56.103:6379
Adding replica 192.168.56.104:6386 to 192.168.56.103:6379
Adding replica 192.168.56.103:6381 to 192.168.56.102:6382
Adding replica 192.168.56.104:6387 to 192.168.56.102:6382
Adding replica 192.168.56.102:6384 to 192.168.56.104:6385
Adding replica 192.168.56.103:6380 to 192.168.56.104:6385
M: 22076b539128c24a17525e342724a019097c1a43 192.168.56.103:6379
   slots:[0-5460] (5461 slots) master
S: b2721b37476c3d882603449b5127602f897b3d77 192.168.56.103:6380
   replicates 5c8e4776df0a606b45a428e5b700cf32375bdfa1
S: 2446a79701b970c6f57cd3ae8fc4b276d49c0480 192.168.56.103:6381
   replicates f37d30f23b5d1c4f6f4ff43cf6d3f8309eb50aaa
M: f37d30f23b5d1c4f6f4ff43cf6d3f8309eb50aaa 192.168.56.102:6382
   slots:[5461-10922] (5462 slots) master
S: 74f0f0e1643e42080d833711bbc21621e2096d92 192.168.56.102:6383
   replicates 22076b539128c24a17525e342724a019097c1a43
S: 0d337229379bf4affdd7b34588d478c1a4e5e569 192.168.56.102:6384
   replicates 5c8e4776df0a606b45a428e5b700cf32375bdfa1
M: 5c8e4776df0a606b45a428e5b700cf32375bdfa1 192.168.56.104:6385
   slots:[10923-16383] (5461 slots) master
S: ba4dfb00796ca00c0e723b7ed7e4a30627a2d787 192.168.56.104:6386
   replicates 22076b539128c24a17525e342724a019097c1a43
S: 10ab954c7d757abb4f9464c00eb04e1336e1bb07 192.168.56.104:6387
   replicates f37d30f23b5d1c4f6f4ff43cf6d3f8309eb50aaa
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 192.168.56.103:6379)
M: 22076b539128c24a17525e342724a019097c1a43 192.168.56.103:6379
   slots:[0-5460] (5461 slots) master
   2 additional replica(s)
M: f37d30f23b5d1c4f6f4ff43cf6d3f8309eb50aaa 192.168.56.102:6382
   slots:[5461-10922] (5462 slots) master
   2 additional replica(s)
S: 2446a79701b970c6f57cd3ae8fc4b276d49c0480 192.168.56.103:6381
   slots: (0 slots) slave
   replicates f37d30f23b5d1c4f6f4ff43cf6d3f8309eb50aaa
M: 5c8e4776df0a606b45a428e5b700cf32375bdfa1 192.168.56.104:6385
   slots:[10923-16383] (5461 slots) master
   2 additional replica(s)
S: 0d337229379bf4affdd7b34588d478c1a4e5e569 192.168.56.102:6384
   slots: (0 slots) slave
   replicates 5c8e4776df0a606b45a428e5b700cf32375bdfa1
S: 10ab954c7d757abb4f9464c00eb04e1336e1bb07 192.168.56.104:6387
   slots: (0 slots) slave
   replicates f37d30f23b5d1c4f6f4ff43cf6d3f8309eb50aaa
S: b2721b37476c3d882603449b5127602f897b3d77 192.168.56.103:6380
   slots: (0 slots) slave
   replicates 5c8e4776df0a606b45a428e5b700cf32375bdfa1
S: 74f0f0e1643e42080d833711bbc21621e2096d92 192.168.56.102:6383
   slots: (0 slots) slave
   replicates 22076b539128c24a17525e342724a019097c1a43
S: ba4dfb00796ca00c0e723b7ed7e4a30627a2d787 192.168.56.104:6386
   slots: (0 slots) slave
   replicates 22076b539128c24a17525e342724a019097c1a43
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

6、驗證一下,搭建成功

./redis-cli --cluster check 192.168.56.103:6381 -a passwd1234

關於masterauth和requirepass的不同,如下文所示:

REDIS啓用密碼認證的疑問
首先,Redis主從和clsuter是支持密碼認證的。

其次,關於啓用redis密碼認證的涉及的幾個問題:

1、是否只設置requirepass就可以?masterauth是否需要同步設置?

答案:redis啓用密碼認證一定要requirepass和masterauth同時設置。

如果主節點設置了requirepass登錄驗證,在主從切換,slave在和master做數據同步的時候首先需要發送一個ping的消息給主節點判斷主節點是否存活,再監聽主節點的端口是否聯通,發送數據同步等都會用到master的登錄密碼,否則無法登錄,log會出現響應的報錯。也就是說slave的masterauth和master的requirepass是對應的,所以建議redis啓用密碼時將各個節點的masterauth和requirepass設置爲相同的密碼,降低運維成本。當然設置爲不同也是可以的,注意slave節點masterauth和master節點requirepass的對應關係就行。

2、requreipass和master的作用?

masterauth作用:主要是針對master對應的slave節點設置的,在slave節點數據同步的時候用到。

requirepass作用:對登錄權限做限制,redis每個節點的requirepass可以是獨立、不同的。

 

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