1. 程式人生 > >redis單機版偽分散式叢集搭建

redis單機版偽分散式叢集搭建

    繼上一篇redis單機伺服器搭建成功之後,按如下方式進行叢集搭建。

    搭建一個最小的叢集需要6臺機器(由節點投票機制決定至少需要3臺主節點,另外為了高可用每個主節點至少要備一個從節點,所以總共需要6個節點。這裡6個節點全部設在一臺機上,通過埠號來分別。實現偽分散式。)

    1.在/usr/local/目錄下建立資料夾redisCluster,並在redisCluster目錄下建立6個資料夾

    mkdir /usr/local/redisCluster
    mkdir /usr/local/redisCluster/redis0{1,2,3,4,5,6}

    2.複製單機單例項下可正常啟動redis情況下的 /usr/local/bin 目錄下的所有檔案分別到上面建立的6個資料夾中

    cp /usr/local/bin/* /usr/local/redisCluster/redis01/
    cp /usr/local/bin/* /usr/local/redisCluster/redis02/
    cp /usr/local/bin/* /usr/local/redisCluster/redis03/
    cp /usr/local/bin/* /usr/local/redisCluster/redis04/
    cp /usr/local/bin/* /usr/local/redisCluster/redis05/
    cp /usr/local/bin/* /usr/local/redisCluster/redis06/

    3.再對每個例項裡面的redis.conf進行修改(這裡修改其中一份,然後其他5份進行復制之後修改下埠號即可,可以用ssh工具將該配置檔案下載到windows中進行編輯修改,更快捷省事)

    vi /usr/local/redisCluster/redis01/redis.conf

找到以下幾處進行修改(修改這10處就基本滿足叢集啟動條件了,其他引數可自行百度)

    第1處: port 6379				    ————> 值 改成 7001
    第2處: daemonize no 			    ————> 值 改成 yes
    第3處: pidfile /var/run/redis_6379.pid  	    ————> 值 改成 ./redis_7001.pid
    第4處: logfile "" 				    ————> 值 改成 "./logs/redis_7001.log"
    第5處: bind 127.0.0.1 			    ————> 值 改成 本機IP(如我這裡是192.168.25.129)
    第6處: protected-mode yes 			    ————> 值 改成 no
    第7處: # cluster-enabled yes		    ————> 去掉註釋
    第8處: # cluster-config-file nodes-6379.conf    ————> 去掉註釋 並把數字改成對應埠號,如這裡是7001
    第9處: # cluster-node-timeout 15000	            ————> 去掉註釋
    第10處:  appendonly no			    ————> 值 改成 yes

    4.將上面編輯號儲存的/usr/local/redisCluster/redis01/目錄下的redis.conf檔案重新命名為7001.conf,然後複製5份分別放到redis02、redis03、redis04、redis05、redis06資料夾下面(可刪除掉原資料夾中的redis.conf檔案),然後再對每個資料夾下的.conf檔案重新命名為對應埠號.conf,接著編輯裡面的內容,將之前修改為7001的全部修改成對應埠號儲存即可,這個工作放到windows中來做可以很方便快捷。(由於配置檔案中把log配到當前目錄下的logs資料夾中,所以還要在各個資料夾下建立logs資料夾)

    5.將ruby指令碼拷貝到redisCluster目錄下

    cp /usr/local/redis/redis-4.0.8/src/redis-trib.rb /usr/local/redisCluster/

    6.建立redis叢集啟動、停止的指令碼以及ruby建立叢集的指令碼並授權

    touch /usr/local/redisCluster/startCluster.sh
    touch /usr/local/redisCluster/shutdownCluster.sh
    touch /usr/local/redisCluster/createCluster.sh
    chmod 777 /usr/local/redisCluster/*.sh

    內容分別如下:

    startCluster.sh

    cd /usr/local/redisCluster/redis01
    ./redis-server ./7001.conf
    cd /usr/local/redisCluster/redis02
    ./redis-server ./7002.conf
    cd /usr/local/redisCluster/redis03
    ./redis-server ./7003.conf
    cd /usr/local/redisCluster/redis04
    ./redis-server ./7004.conf
    cd /usr/local/redisCluster/redis05
    ./redis-server ./7005.conf
    cd /usr/local/redisCluster/redis06
    ./redis-server ./7006.conf

    shutdownCluster.sh

    cd /usr/local/redisCluster/redis01/
    ./redis-cli -h 192.168.25.129 -p 7001 shutdown
    cd /usr/local/redisCluster/redis02/
    ./redis-cli -h 192.168.25.129 -p 7002 shutdown
    cd /usr/local/redisCluster/redis03/
    ./redis-cli -h 192.168.25.129 -p 7003 shutdown
    cd /usr/local/redisCluster/redis04/
    ./redis-cli -h 192.168.25.129 -p 7004 shutdown
    cd /usr/local/redisCluster/redis05/
    ./redis-cli -h 192.168.25.129 -p 7005 shutdown
    cd /usr/local/redisCluster/redis06/
    ./redis-cli -h 192.168.25.129 -p 7006 shutdown

    createCluster.sh

ruby redis-trib.rb create --replicas 1 192.168.25.129:7001 192.168.25.129:7002 192.168.25.129:7003 192.168.25.129:7004 192.168.25.129:7005 192.168.25.129:7006

  最後redisCluster目錄和各個redis例項目錄結構如下:

         

    

  7.先用剛剛建立的指令碼啟動6個例項,再用ruby指令碼建立叢集

    cd /usr/local/redisCluster/
    ./startCluster.sh

    檢視程序:

    ps -ef | grep redis

    

    再執行ruby指令碼建立叢集

    ./createCluster.sh

   

然後 輸 yes

    

這樣叢集就搭建成功了。登入任意一個節點客戶端驗證(-c 表示以叢集方式登入),也可以用redis客戶端工具RedisDesktopManager來視覺化地管理redis資料庫。

cd /usr/local/redisCluster/redis01/
./redis-cli -h 192.168.25.129 -p 7001 -c

    

這樣一路順風就搭建完成了。超簡單有沒有?

但是初次搭建,可能linux中有些軟體沒有安裝,需要聯網安裝的。

主要有下面幾個:

yum -y install gcc                    ## make install 命令需要此環境
yum -y intall ruby                    ## 安裝ruby(此時安裝的可能使低版本的)
curl -L get.rvm.io | bash -s stable   ## 安裝rvm
source /usr/local/rvm/scripts/rvm     ## 使安裝的rvm立即生效
rvm install 2.4.1	              ## 通過rvm來安裝ruby高階版本
gem install redis                     ## 通過ruby的工具包gem來安裝redis介面

順利到此,則執行ruby指令碼的環境已具備
通過startCluster.sh指令碼先啟動6個例項,然後通過createCluster.sh指令碼建立叢集即可成功.
另外,需要注意的是,在關閉redis叢集之後,再次重複步驟啟動叢集時會報錯,此時只需要刪除redis各個例項中生成的檔案即可再次按步驟啟動叢集(當然,這是在測試時這麼幹)。