Redis-Cluster采用無中心結構,每個節點儲存資料和整個叢集狀态,每個節點都和其他所有節點連接配接。
一組Redis Cluster是由多個Redis執行個體組成,官方推薦使用6執行個體,其中3個為主節點,3個為從節點。一旦有主節點發生故障的時候,Redis Cluster可以選舉出對應的從節點成為新的主節點,繼續對外服務,進而保證服務的高可用性。
1.png
部署環境:
IP位址 | 端口 | 角色 | Redis版本 |
---|---|---|---|
10.10.41.111 | 7000 | redis-master | 5.0.8 |
10.10.41.111 | 7001 | redis-slave | 5.0.8 |
10.10.41.112 | 7000 | redis-master | 5.0.8 |
10.10.41.112 | 7001 | redis-slave | 5.0.8 |
10.10.41.113 | 7000 | redis-master | 5.0.8 |
10.10.41.113 | 7001 | redis-slave | 5.0.8 |
1.安裝Redis
1、安裝C/C++環境
Redis編譯時需要使用C/C++環境:
yum install -y gcc gcc-c++ make
2、下載下傳Redis安裝包
下載下傳位址:http://download.redis.io/releases/
cd /data
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
3、解壓、編譯
tar -zxvf redis-5.0.8.tar.gz
cd redis-5.0.8
make
4、建立Redis相關工作目錄(目錄可自定義)
mkdir /data/redis-cluster/{data/{redis_7000,redis_7001},conf,log} -p
5、複制redis配置檔案
cd redis-5.0.8
cp redis.conf /data/redis-cluster/conf/redis_7000.conf
cp redis.conf /data/redis-cluster/conf/redis_7001.conf
2.修改Redis配置檔案
1、修改redis-master配置檔案
vi /data/redis-cluster/conf/redis_7000.conf
port 7000 #修改redis監聽端口(可以自定義)
2、修改redis-slave配置檔案
vi /data/redis-cluster/conf/redis_7001.conf #修改redis-slave配置檔案,具體如下:
port 7001
3.分發到叢集其他伺服器
複制redis以及工作目錄到其他伺服器
scp -r redis-5.0.8 redis-cluster [email protected]:/data
scp -r redis-5.0.8 redis-cluster [email protected]:/data
設定軟連結,友善啟動redis服務
ln -s /data/redis-5.0.8/src/redis-server /usr/bin/redis-server
ln -s /data/redis-5.0.8/src/redis-cli /usr/bin/redis-cli
4.啟動Redis
叢集内每台伺服器分别啟動兩個redis
redis-server /data/redis-cluster/conf/redis_7000.conf
redis-server /data/redis-cluster/conf/redis_7001.conf
驗證是否啟動成功
ps -ef | grep redis
檢視版本
redis-cli --version
redis-server --version
5.建立Redis Cluster
注意:redis5.0以上叢集建立方式改為了C編寫的redis-cli建立,不用再安裝麻煩的ruby。
建立叢集,--cluster-replicas 1指定從庫數量1,建立順序三主-三從。即主-主-主-從-從-從。
如果redis設定了密碼,則建立叢集時需要添加密碼資訊 -a 密碼:
redis-cli -a 123456 --cluster create 10.10.41.111:7000 10.10.41.112:7000 10.10.41.113:7000 10.10.41.111:7001 10.10.41.112:7001 10.10.41.113:7001 --cluster-replicas 1
2.png
确認叢集配置資訊,确認無誤則輸入 yes 并按回車
3.png
出現以上資訊,表示叢集配置成功。
6驗證叢集Redis-Cluster
1、登入redis叢集
redis-cli -a 123456 -h 10.10.41.111 -p 7000 -c-a Redis密碼,-c表示叢集模式 ,指定IP和端口
注意:可能會redirected進入到其它server
2、驗證叢集資訊
10.10.41.111:7000> cluster info #檢視叢集資訊
4.png
10.10.41.111:7000> cluster nodes #檢視叢集節點清單
5.png
檢視叢集内主從關系:
redis-cli -a 123456 -h 10.10.41.111 -p 7000 -c cluster slots | xargs -n8 | awk '{print $3":"$4"->"$6":"$7}' | sort -nk2 -t ':' | uniq
3、進行資料驗證操作
插入資料:
10.10.41.111:7000> set mykey "Hello Redis"
10.10.41.113:7000> get mykey
登入其他節點檢視資料:
redis-cli -a 123456 -h 10.10.41.112 -p 7000 -c
10.10.41.112:7000> get mykey
4、驗證叢集故障轉移
将其中一個redis-master停止掉後、其對應的slave節點會被選舉為master節點,舊master節點重新恢複時,其角色會成為slave。具體可自行驗證,驗證時可開啟日志檢視相關資訊。