redis5集群搭建


主庫宕機,從庫會被自動選舉為主庫master,並繼承原主庫的哈希槽,當master恢復,會成為現主庫的從庫,且同步宕機期間的數據

若集群創建出錯

step1:關服務

./redis-cli -h fdv-web02.reda -p 7000 -a reda2019 shutdown

step2:刪除rdb數據文件,nodes-****.conf

rm -rf dump.rdb  nodes-****.conf

 

redis-5.0.5單機版安裝

Step1: 安裝依賴包make,gcc

    yum -y install make gcc

step2:使用rz(lrzsz) 上傳redis-5.0.5.tar.gz到/apps/applications/software目錄http://download.redis.io/releases/redis-5.0.3.tar.gz

Step3:tar解包redis-5.0.5.tar.gz,刪除tar包,並cd進入

tar -xf redis-5.0.5.tar.gz

rm -rf redis-5.0.5.tar.gz        //刪除tar包

cd redis-5.0.5

 

Step4:編譯redis

make         //編譯

make install  PREFIX=/apps/applications/software/redis              //安裝

mkdir /apps/applications/software/redis/{conf,log,data}

 

step5:配置/etc/security/limits.conf 文件添加

* - nofile 10032

* soft nofile 65536

* hard nofile 65536

 

step6:准備redis配置文件

cp /apps/applications/software/redis-5.0.5/redis.conf  apps/applications/software/redis/conf/redis-7000.conf

編輯redis-7000.conf

詳解:(進入文件后輸入/並在其后寫入關鍵字)

pidfile /apps/applications/software/redis/data/redis-7000.pid          //pid存放路徑

logfile /apps/applications/software/redis/log/redis-7000.log          //redis日志文件存放路徑

port 7000                            //redis端口

bind econ-web01.reda            //主機名

dbfilename dump-7000.rdb        //redis數據文件名

dir /apps/applications/software/redis/data             //redis數據庫數據文件rdb文件放置的路徑

cluster-config-file /apps/applications/software/redis/data/nodes-7000.conf                   //集群信息存放文件

cluster-enabled yes        //啟用集群

clster-node-timeout 5000            //節點超時時間,一直最好

protected-mode no   //關閉redis保護模式

daemonize yes               //開啟守護進程模式

 

Step7:復制redir-7000.conf到redir-7001.conf

cd /apps/applications/software/redis/conf/

cp redis-7000.conf redis-7001.conf

 

Step8:redis-7001.conf配置文件的7000批量更改為7001

vim redis-7001.conf

輸入:

:% s/7000/7001/g

 其他兩台操作相同,但是記得修改port和bind

 

Step9:編寫redis啟動腳本和停服務腳本

cd /apps/applications/software/redis

 啟動腳本start.sh:

#!/bin/bash

export BASH_HOME=$HOME
$BASH_HOME/software/redis/bin/redis-server $BASH_HOME/software/redis/conf/redis-7000.conf > $BASH_HOME/software/redis/log/redis-7000.log &
$BASH_HOME/software/redis/bin/redis-server $BASH_HOME/software/redis/conf/redis-7001.conf > $BASH_HOME/software/redis/log/redis-7001.log &

 

停止腳本stop.sh:

#!/bin/bash
export BASH_HOME=$HOME
$BASH_HOME/software/redis/bin/./redis-cli -h fdv-web02.reda -p 7000 -a reda2019 shutdown
$BASH_HOME/software/redis/bin/./redis-cli -h fdv-web02.reda -p 7001 -a reda2019 shutdown

 

chmod +x start_all.sh stop_all.sh   #賦予x權限,變成可執行腳本

 

1、在 redis5 之后,redis cluster 的搭建不在需要默認的ruby腳本,使用 redis-cli 命令即可完成搭建
2、創建集群的這些redis實例中都必須是空的
3、在一個 redis 的集群中默認存在 16384 個哈希槽,這 16384 個哈希槽會默認分配給集群中的主節點
4、增加一個主節點,就意味着要從原來的主節點中移動部分哈希槽給新的主節點
5、刪除一個主節點,就需要把該主節點分配到的哈希槽歸還給別的主節點
6、在主節點之間移動哈希槽不需要停止操作,因此對集群沒多大影響
7、一個集群最好有奇數個主節點
8、集群創建過程中涉及到的命令


集群創建:./redis-cli --cluster create

                 ip:port   ip:port

                ip:port    ip:port

               ip:port     ip:port    --cluster-replicas 1   [-a 密碼]                    [--cluster-replicas 1 表示每個主節點下有一個從節點]

添加一個主節點:

                   ./redis-cli --cluster  add-node  新ip:port  集群任一ip:port  
添加一個節點作為另外一個節點的從節點:
                     ./redis-cli --cluster  add-node  新ip:port  集群任一ip:port    --cluster-slave
刪除一個節點 :

                        ./redis-cli --cluster del-node 集群任一ip:port   節點id

連接到集群:

               ./redis-cli -c -p 訪問的端口 -h 訪問的機器 -a 密碼


查看集群中的節點:

   ./redis-cli -p 7000 cluster nodes

    ./redis-cli --cluster check    集群ip:端口   -a 密碼

  ./redis-cli --cluster info   集群ip:端口   -a 密碼


集群中的每個redis節點需要放行2個端口的訪問:
   正常的客戶端通訊端口,比如6379
   集群總線端口,總是 客戶端通訊接口+10000,比如:16379,該端口主要是 集群總線進行故障檢測、配置更新、故障轉移等操作

 


如果redis集群中的某個主節點和與之相關的所有從節點都宕機了,那么redis集群將無法提供服務,因為我們不能再提供 這個master node 節點上的 哈希槽。


1.redis 集群不保證強一致性,這意味着在某些時候可能丟失某些寫數據。
 |- 因為集群中從節點的復制是異步的。
 |- redis 集群在絕對需要時也支持同步寫入,但是這也不能保證完全的強一致性。

2.配置redis集群的最小配置文件如下:

 

 3.cluster-config-file 這個配置中指定的 配置文件 由redis自動維護,我們自己不要隨意修改。這個文件有redis集群實例在啟動時生成

4.由於本地機器不夠,因此可在一台電腦上進行搭建,以不同的端口進行區分。

 

redis集群配置清單

 

********************************************************

創建集群
1、集群創建命令
redis-cli --cluster create host1:port1 ... hostN:portN --cluster-replicas 一個主 的從個數
2、集群創建(3主3從-注意節點的順序)

可以看到:16384個哈希槽平均分配給了3個主節點,從節點沒有分配哈希槽。

3、向集群中設置值測試一下

-c 表示的是連接集群.
從上圖可以看到,我們連接的是 7001 端口,但是設置值的時候,由於key(cluster)對應的哈希槽的值是14041,所以重定向到了 7003 端口上。

 

動態向集群中添加一個主節點並分片
           添加節點命令:redis-cli --cluster   add-node   新節點ip:新節點port   集群中以存在的節點ip:集群中已存在的節點port
           分片命令:redis-cli --cluster    reshard  需要分片的節點ip:需要分片的節點端口

 

注意:此時該節點只是作為主節點添加到了集群中,但是沒有進行分片,是不可存儲數據的,如果要存儲數據,需要進行分片操作

 

動態向集群中添加一個從節點

/usr/local/redis/redis-5.0.3/src/redis-cli --cluster add-node 新節點ip:新節點port   集群中以存在的節點ip:集群中已存在的節點port --cluster-slave



動態刪除集群中一個從節點

/usr/local/redis/redis-5.0.3/src/redis-cli --cluster del-node   集群中以存在的節點ip:集群中已存在的節點  所要刪除的redis服務器id

 

動態刪除集群中一個主節點
step1:歸還槽

 

 

 step2:刪除節點

命令: /usr/local/redis/redis-5.0.3/src/redis-cli --cluster del-node 集群中以存在的節點ip:集群中已存在的節點  所要刪除的redis服務器id

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM