天天看點

Redis叢集Cluster搭建記錄

20190929學習筆記(Redis叢集Cluster搭建記錄)

注明:

1、環境CetOS 7.4

2、Redis版本5.0.5

一、下載下傳及安裝

Redis官方網站:https://redis.io/download

1、在某個目錄下執行如下指令:

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

$ tar xzf redis-5.0.5.tar.gz

$ cd redis-5.0.5

$ make

2、在該目錄下建立叢集節點目錄

如圖:

Redis叢集Cluster搭建記錄

我搭建的叢集節點為單節點,非主從模式,在實際生産中不建議這樣做,因為如果某個節點挂了連備機都沒有,直接導緻叢集故障。

3、在節點目錄下建立配置檔案

配置檔案redis.conf可從redis-5.0.5目錄下拷貝,然後修改,我直接講需要重點注意的地方

#指定redis隻能接受來自此IP綁定的網卡的請求,注意此預設值預設外網是不可通路的,是以需要把此項注釋掉

#bind 127.0.0.1

#是否開啟保護模式。如果沒有指定bind和密碼,redis隻會本地進行通路,拒絕外部通路。

protected-mode yes

#預設端口,建議生産環境不要使用預設端口避免被惡意掃描到

port 7000

#開啟redis叢集

cluster-enabled yes

#配置redis自動生成的叢集配置檔案名。確定同一系統中運作的各redis執行個體該配置檔案不要重名。

cluster-config-file nodes7000.conf

#叢集節點逾時毫秒數

cluster-node-timeout 5000

#背景運作

daemonize yes

#配置PID檔案路徑,以端口号做字尾友善區分

pidfile /var/run/redis_7000.pid

#日志檔案,如果指定了值,請手動建立檔案,否則啟動時會封包件不存在的錯誤

logfile "/usr/local/redisCluster/redis_7000/logs/redis.log"

#啟動AOF增量持久化政策

appendonly yes

#發生改變就記錄日志

appendfsync always

如果配置有誤,在Redis啟動時會報出相關行數的錯誤,請自行查詢修改。更多Redis的配置詳解,請參考:https://blog.csdn.net/u010188178/article/details/101692742

二、啟動及設定環境變量

1、啟動Redis

進入 Redis安裝目錄下的src目錄:cd cd /usr/local/redisCluster/redis-5.0.5/src

該目錄下面包含了Redis安裝的很多檔案,其中包括

(1)redis-server 伺服器端操作,可以使⽤help檢視幫助⽂檔

(2)redis-cli 用戶端操作

(3)redis-check-rdb 檢查Redis轉儲資料庫檔案的完整性

(4)redis-check-aof Redis AOF檔案檢查和修複

現在分别啟動Redis的3個節點

./ redis-server /usr/local/redisCluster/redis_7000/redis.conf

./ redis-server /usr/local/redisCluster/redis_7001/redis.conf

./ redis-server /usr/local/redisCluster/redis_7002/redis.conf

然後檢視啟動情況:ps –ef |grep redis

Redis叢集Cluster搭建記錄

2、添加環境變量

如果每次啟動或者連接配接用戶端都要進入Redis的安裝目錄未免有些麻煩,不如直接将其設定到環境變量中。3種方式如下:

方法一:用export指令,輸入“export PATH="$PATH: /usr/local/redisCluster/redis-5.0.5/src”,臨時生效。

方法二:修改profile檔案,輸入vim /etc/profile,進行修改,永久對所有使用者生效。

方法三:修改.bashrc檔案,輸入vim /root/.bashrc,進行修改,永久對目前使用者(root)生效。

方法二、三改動如下:

export REDIS_HOME=/usr/local/redisCluster/redis-5.0.5

export PATH=$PATH: $REDIS_HOME/src

使用永久生效的方式,修改檔案後,執行source [檔案](如 /etc/profile),讓環境變量配置生效

修改生效後啟動Redis就可以直接使用 redis-server [配置檔案]啟動Redis。

三、設定開機啟動Redis叢集節點

每次重新開機後需要手動啟動Redis,為節省工作量,可設定開機啟動Redis叢集節點。

1、編寫Redis叢集節點啟動腳本

注意:redis配置中需要開啟背景啟動, daemonize yes

以我的腳本為例,很粗魯,僅供參考

#!/bin/sh

REDISPORT0=7000

REDISPORT1=7001

REDISPORT2=7002

EXEC=/usr/local/redisCluster/redis-5.0.5/src/redis-server

CLIEXEC=/usr/local/redisCluster/redis-5.0.5/src/redis-cli

PIDFILE=/var/run/redis_7000.pid

CONF0="/usr/local/redisCluster/redis_7000/redis.conf"

CONF1="/usr/local/redisCluster/redis_7001/redis.conf"

CONF2="/usr/local/redisCluster/redis_7002/redis.conf"

case "$1" in

    start)

        if [ -f $PIDFILE ]

        then

                echo "$PIDFILE exists, process is already running or crashed"

        else

                echo "Starting Redis server..."

                nohup $EXEC $CONF0 &

                nohup $EXEC $CONF1 &

                nohup $EXEC $CONF2 &

                            echo "Redis cluster started"

        fi

        ;;

    stop)

        if [ ! -f $PIDFILE ]

        then

                echo "$PIDFILE does not exist, process is not running"

        else

                PID=$(cat $PIDFILE)

                echo "Stopping ..."

                $CLIEXEC -p $REDISPORT0 shutdown

                $CLIEXEC -p $REDISPORT1 shutdown

                $CLIEXEC -p $REDISPORT2 shutdown

                while [ -x /proc/${PID} ]

                do

                    echo "Waiting for Redis cluster to shutdown ..."

                    sleep 1

                done

                echo "Redis cluster stopped"

        fi

        ;;

    *)

        echo "Please use start or stop as first argument"

        ;;

esac

2、将其儲存到目錄/etc/init.d/下,命名為redisd

添加其執行權限chmod +x redisd 或 chmod 755 redisd

編寫成功後執行檔案看看是否可以正确啟動,如有問題可通過檢視日志nohup.out排查原因。

3、配置redisd開機執行

chkconfig redisd on

重新開機機器後,發現以上3個節點已經成功啟動了。

四、建立Redis叢集

1、以上述為例實作的非主從3節點Cluster叢集,執行如下指令

redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002

補充一下:如果需要被其他機器通路,這裡千萬不能使用127.0.0.1,否則通路時會報錯:No more cluster attempts left。

解決方法是,使用真實真實IP

2、網上有很多教程一般都以3主3從為例建立Cluster叢集,執行如下指令

redis-cli --cluster create 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  --cluster-replicas 1

生産中建議使用主從模式建立叢集,防止單個節點挂掉影響到整個系統。

上面的 --cluster-replicas 1 官方解釋為:The option --cluster-replicas 1 means that we want a slave for every master created.意思是:為每一台主機(master)建立一台從機(slave),如果使用其他值,同理。

官方原文翻譯:Redis-cli将為您提供一個配置。輸入yes接受建議的配置。叢集将被配置和連接配接,這意味着執行個體将被引導到彼此之間進行通信。最後,如果一切順利,您将看到這樣一條消息:

[OK] All 16384 slots covered

Redis叢集Cluster搭建記錄

繼續閱讀