Redis 5.0.3集群部署


參考文章

https://blog.csdn.net/yyTomson/article/details/85783753

https://www.cnblogs.com/zy-303/p/10273167.html

   

1,環境兩台centos7主機IP地址為:172.16.103.12和172.16.103.13

2,上傳軟件包到/root/software下,編譯安裝兩台主機上的redis軟件。

cd root/software/

tar -zxvf redis-5.0.3.tar.gz

安裝編譯依賴的gcc包

yum -y install gcc

編譯安裝

cd redis-5.0.3

make && make install

3,將 redis-trib.rb 復制到 /usr/local/bin 目錄下

cd src/

cp redis-trib.rb /usr/local/bin/

4,在兩個節點上都創建redis_cluster目錄,並且在該目錄下創建7000,7001,7002目錄

mkdir -p /redis_cluster

cd /redis_cluster/

mkdir 7000 7001 7002

5,拷貝redis.conf文件到兩個節點上的7000,7001,7002目錄下

cp /root/software/redis-5.0.3/redis.conf /redis_cluster/7000

cp /root/software/redis-5.0.3/redis.conf /redis_cluster/7001

cp /root/software/redis-5.0.3/redis.conf /redis_cluster/7002

6,編輯7000/1/2目錄下的redis.conf配置文件,主要修改一下幾項

port 7000 //端口7000,7002,7003

bind 本機ip //默認ip127.0.0.1 需要改為其他節點機器可訪問的ip 否則創建集群時無法訪問對應的端口,無法創建集群

daemonize yes //redis后台運行

pidfile /var/run/redis_7000.pid //pidfile文件對應7000,7001,7002

cluster-enabled yes //開啟集群 把注釋#去掉

cluster-config-file nodes_7000.conf //集群的配置 配置文件首次啟動自動生成 7000,7001,7002

cluster-node-timeout 15000 //請求超時 默認15秒,可自行設置

appendonly yes //aof日志開啟 有需要就開啟,它會每次寫操作都記錄一條日志

#requirepass password123        //該項是設置密碼,也可以設置,也可以不設置,此處不設置密碼,查閱官方文檔,未找到設置密碼之后創建集群的命令格式

   

以上操作均在兩個節點都執行和修改

   

7,啟動各節點上的redis服務

172.16.103.12上執行

redis-server /redis_cluster/7000/redis.conf

redis-server /redis_cluster/7001/redis.conf

redis-server /redis_cluster/7002/redis.conf

172.16.103.13上執行

redis-server /redis_cluster/7000/redis.conf

redis-server /redis_cluster/7001/redis.conf

redis-server /redis_cluster/7002/redis.conf

8,可以使用netstat 命令檢查redis的開啟情況,使用的端口是7000,7001和7002,下面創建集群

在172.16.103.12上執行

redis-cli --cluster create --cluster-replicas 1 172.16.103.12:7000 172.16.103.12:7001 172.16.103.12:7002 172.16.103.13:7000 172.16.103.13:7001 172.16.103.13:7002

集群創建成功

8,登陸驗證

登陸創建一個鍵值

登陸其他節點,get鍵值

9,集群的關閉,以及集群的自動啟動

關閉集群的腳本,需要在兩個節點都執行

#腳本開始

#!/bin/bash

redis-cli -h 172.16.103.12 -p 7000 shutdown

redis-cli -h 172.16.103.12 -p 7001 shutdown

redis-cli -h 172.16.103.12 -p 7002 shutdown

#腳本結束

#腳本開始

#!/bin/bash

redis-cli -h 172.16.103.13 -p 7000 shutdown

redis-cli -h 172.16.103.13 -p 7001 shutdown

redis-cli -h 172.16.103.13 -p 7002 shutdown

#腳本結束

開機啟動的腳本

#腳本開始

#!/bin/bash

redis-server /redis_cluster/7000/redis.conf &> /dev/null

redis-server /redis_cluster/7001/redis.conf &> /dev/null

redis-server /redis_cluster/7002/redis.conf &> /dev/null

if [ $? -eq 0 ]

then

redis-cli --cluster create --cluster-replicas 1 172.16.103.12:7000 172.16.103.12:7001 172.16.103.12:7002 172.16.103.13:7000 172.16.103.13:7001 172.16.103.13:7002 &> /root/software/redis-cluster-start.log

else

echo "Redis Services Started Succeed! Please Check Node!"

fi

cat /root/software/redis-cluster-start.log | grep "All 16384 slots covered"

if [ $? -eq 0 ]

then

echo "Redis Cluster Started Succeed!"

else

echo "Redis Cluster Started Failed! Please check /root/software/redis-cluster-start.log"

fi

#腳本結束

   

這個啟動腳本運行過程中需要用戶輸入yes,這個用戶輸入的功能不知道怎么添加到腳本中。請大神指點。

10,相關報錯:

如圖所示報錯:[ERR] Node 172.16.103.12:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

解決該報錯的方法為停止所有節點的redis服務,使用命令為;

redis-cli -h 172.16.103.13 -p 7000 shutdown //Ip地址端口根據實際修改

刪除所有節點上的/root/software(redis軟件包所在的位置)下的nodes_*.conf文件和dump.rdbappendonly.aof文件,刪除所有節點上/redis_cluster(創建的集群目錄)中的nodes_*.conf文件和dump.rdbappendonly.aof文件,然后再重新創建集群,初步接觸redis,不確定刪除以上文件是否會造成數據丟失,但是redis本身作為緩存數據庫,即為緩存,應該多數都不重要吧。


免責聲明!

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



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