redis之路(八):Redis多機多節點集羣實驗

第一步:環境準備

我們搞兩臺虛擬機
在這裏插入圖片描述

局域網IP 分別是 172.16.150.128和172.16.150.95

我們約定把172.16.150.128作爲集羣控制端,需要安裝redis-trib.rb

第二步:安裝Redis

前面已經安裝過了 不解釋,

172.16.150.128虛擬機裏,Reids安裝包裏有個集羣工具,要複製到/usr/local/bin裏去

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

第三步:修改配置,創建節點

首先我們在172.16.150.128虛擬機裏創建三個節點,端口分別是7001,7002,7003

我們先在root目錄下新建一個redis_cluster目錄,然後該目錄下再創建3個目錄,

分別是7001,7002,7003,用來存redis配置文件;

這裏我們要使用redis集羣,要先修改redis的配置文件redis.conf

這裏可以參考我上一篇的做法

把redis的持久化文件和節點文件全都刪除,不然下面創建集羣會出現問題

在這裏插入圖片描述
兩臺虛擬機都要清理

然後修改兩臺虛擬機的redis.conf中的幾個點

port 7001 //三個個節點配置文件分別是7001-7003

bind 192.168.1.109 //默認ip爲127.0.0.1 需要改爲其他節點機器可訪問的ip 否則創建集羣時無法訪,和單機集羣有區別

daemonize yes //redis後臺運行

pidfile /var/run/redis_7001.pid //pidfile文件對應7001-7003

cluster-enabled yes //開啓集羣

cluster-config-file nodes_7001.conf //保存節點配置,自動創建,自動更新對應7001-7003

cluster-node-timeout 5000 //集羣超時時間,節點超過這個時間沒反應就斷定是宕機

appendonly yes //存儲方式,aof,將寫操作記錄保存到日誌中

相比上一篇要多修改bind這一點,將bing後面的172.0.0.1修改爲相應的虛擬機IP
在這裏插入圖片描述
在這裏插入圖片描述

同理 172.16.150.95機器,也搞一個redis_cluster目錄,然後再新建7004,7005,7006目錄,

複製三份配置文件 其他一樣,就端口和bind地址改下即可;這裏不囉嗦了;

第四步:啓動兩臺機器的六個節點

172.16.150.128機器

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7001/redis.conf

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7002/redis.conf

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7003/redis.conf
在這裏插入圖片描述

172.16.150.95機器

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7004/redis.conf

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7005/redis.conf

[root@localhost ~]# /usr/local/redis/bin/redis-server redis_cluster/7006/redis.conf
在這裏插入圖片描述

第五步:設置防火牆,開放集羣端口

兩臺機器的防火牆我們直接關掉

systemctl stop firewalld.service

第六步:創建集羣

172.16.150.128機器作爲集羣控制端

redis官方提供了redis-trib.rb工具,第一步裏已經房到裏bin下 ;

但是在使用之前 需要安裝ruby,以及redis和ruby連接

1.yum install centos-release-scl-rh    //會在/etc/yum.repos.d/目錄下多出一個CentOS-SCLo-scl-rh.repo源

2.yum install rh-ruby23 -y    //直接yum安裝即可

3.scl enable rh-ruby23 bash    //必要一步 代表2.3版本

4.ruby -v    //查看安裝版本

5.gem install redis

 redis-trib.rb create --replicas 1  172.16.150.128:7001 172.16.150.128:7002 172.16.150.128:700

創建集羣

在這裏插入圖片描述

從運行結果看 主節點就是7001 7004 7002 從節點分別是7005 7003 7006

7001分配到的哈希槽是 0-5460

7004分配到的哈希槽是 5461-10922

7002分配到的哈希槽是 10923-16383

最後問我們是否接受上面的設置,輸入yes 就表示接受,我們輸入yes

然後顯示:

在這裏插入圖片描述

顯示配置哈希槽,以及集羣創建成功,可以用了;

第七步:集羣數據測試

我們先連接任意一個節點,然後添加一個key:

redis-cli是redis默認的客戶端工具,啓動時加上`-c`參數,-p指定端口,就可以連接到集羣。

這裏還得加-h 指定機器IP

連接任意一個節點端口:

 /usr/local/redis/bin/redis-cli -h 172.16.150.95 -c -p 7004

在這裏插入圖片描述

前面說過Redis Cluster值分配規則,所以分配key的時候,它會使用CRC16(‘my_name’)%16384算法,來計算,將這個key 放到哪個節點,這裏分配到了4038slot 就分配到了7001(0-5460)這個節點上。所以有:

Redirected to slot [15495] located at 172.16.150.128:7002

我們從其他集羣節點 ,都可以獲取到數據

在這裏插入圖片描述

第八步:集羣宕機測試

假如我們幹掉一個節點,比如7001這個主節點
在這裏插入圖片描述

然後我們查看下集羣情況

redis-trib.rb check 172.16.150.128:7002

在這裏插入圖片描述
我們發現 7006本來是從節點,由於他對應的主節點掛了,就自動變成主節點master,所有會有最後一個說明

All 16384 slots covered. 所有哈希槽都可覆蓋了; 集羣可以正常使用;

假如我們把7006也幹掉,試試看

在這裏插入圖片描述

在這裏插入圖片描述

這裏我們發現 出事了,因爲主從節點都掛了 所以有一部分哈希槽沒得分配,最後一句

[ERR] Not all 16384 slots are covered by nodes. 沒有安全覆蓋;

所以不能正常使用集羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章