redis學習五,redis集羣搭建及添加主從節點

redis集羣

在redis3.0以前,出現了sentinel工具來監控各個Master的狀態(能夠看上一篇博客)。若是Master異常則會作主從切換。選舉一個slave做爲新的Master,3.0以後出現了集羣。集羣的搭建至少須要3個Master
在這裏我只在一臺裝有linux系統裝3個Master和3個slave做爲測試。
linux主機的ip爲192.168.1.229

第一步

1.下載redis安裝包解壓並安裝到linux系統中。

第二步

2.建立redis集羣文件夾,用於存放6個redis集羣的文件
mkdir /usr/local/redis-cluster
mkdir 7001 ,mkdir 7002,mkdir 7003,mkdir 7004,mkdir 7005,mkdir 7006
建立好上面的6個文件夾。

第三步

3將redis的redis-conf這個文件夾使用cp命令copy到每個redis文件夾中
而後分別修改每個700*文件夾中redis-conf文件。
(1)daemonize yes 說明:開啓redis的後臺啓動
(2)port 7001到7006 說明:更改6個文件夾中的redis.conf文件的每個端口號。
(3)bind 192.168.1.229 700*(*表明對應的1到6)說明:綁定每個redis的機器的ip和端口號(根據本身的機器ip對應修改)。
(4)dir /usr/local/redis-cluster/700*/ 指定數據文件存放的位置,每一個redis對應本身的文件夾就好。每一個redis必須指定不一樣的文件夾位置,否則會丟失數據。
(5)cluster-enabled yes 說明:啓動集羣模式。
(6)cluster-conf-file nodes700*.conf 說明:集羣配置文件,最好分別命名爲本身的端口號,方便之後查看。
(7)cluster-node-timeout 5000 說明:集羣的生效時間
(8)appendonly  yes  說明:開啓aof模式。
把6個文件夾中每一個文件夾中的文件都作相對應的修改以後。

第四步

4.因爲redis集羣須要使用ruby命令,因此咱們須要在linux中安裝ruby。
(1)yum install ruby
(2)yum install rubygems
(3)gem install redis (安裝redis和ruby的接口)

第五步

5.分別啓動6個redis實例,而後檢查是否啓動成功
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7001/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7002/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7003/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7004/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7005/redis.conf 
 /usr/local/redis/bin/redis-server /usr/local/redis-cluster/7006/redis.conf 
都啓動後用ps -ef | grep redis檢查是否6個redis實例都啓動成功
 
 
出現上面的提示證實因此實例都啓動成功了。可是這一步成功只能說明咱們redis的配置是沒問題的,然是咱們尚未把這6個redis實例設置成一個集羣

6.建立集羣

到redis3.0安裝目錄下找到src文件夾,而後執行redis-trib.rb命令
redis-trib.rb create --replicas 1 192.168.1.229:7001 192.168.1.229:7002 192.168.1.229:7003 192.168.1.229:7004 192.168.1.229:7005 192.168.1.229:7006
這個命令就表明把這些個redis實例建立爲一個集羣  上面命令中的1表明主節點和從節點的比值是多少,若是12個主節點,6個從節點那麼咱們的比值就是2,那麼咱們是3主3從,因此這個比值是1,並且前三個必定是主節點,redis就是這樣規定的。
執行這個命令後,會出現個提示問你是否肯定建立集羣。咱們直接輸入yes,咱們的集羣環境就搭建好了。
 

7.測試集羣,登陸到集羣的客戶端 

/usr/local/redis/bin/redis-cli -c -h 192.168.1.229 -p 7001   c表明集羣模式 h表明地址 p表明端口號
咱們進入客戶端以後,查看下集羣信息cluster nodes
這樣就說明咱們的集羣已經搭建好了
咱們發現上面的信息中說7001,7002,7003分別爲master 並且都有對應的hash槽。
此時咱們在集羣的任何一個客戶端中進行set,而後在其餘的客戶端中均可以get到。

redis集羣添加一個新的主從節點7007爲主7008爲從

咱們一樣在redis-cluster文件夾下藥建立7007和7008文件夾,一樣要把redis.conf文件copy過去而且像上面同樣修改對應參數。
而後分別啓動這兩個實例,而後啓動7007和7008,可是此時7007和7008雖然啓動了,可是是不屬於咱們集羣裏面的。
一樣適用redis安裝文件夾下src文件夾下的redis-trib.rb這個命令。
redis-trib.rb add-node 192.168.1.229:7007 192.168.1.229:7001前面的ip和端口號爲新添加的節點,後面的爲集羣中任意一個節點。
 
此時咱們就把7007這個新的節點加入到了集羣中,可是此時7007做爲一個Master尚未分配hash槽,咱們還要爲他分配hash槽。
redis-trib.rb reshard 192.168.1.229:7001 這個命令的意思是未7007分配hash槽 這個ip要是集羣中任意一個主節點的ip和端口。
而後出現一堆提示以後會讓你選擇添加的槽數,
填寫你想添加的槽數而後回車。
而後會讓你輸入想要被分配槽的節點的id
選擇分配槽的方式是all仍是done,咱們選擇all
分配成功
redis-trib.rb add-node 192.168.1.229:7008 192.168.1.229:7001一樣把7008添加到集羣中。
7008爲7007的從節點
咱們須要登陸到redis集羣客戶端
/usr/local/redis/bin/redis-cli -c -h 192.168.1.229 -p 7001
cluster replicate 7007的id  意思就是把7008添加爲7007的從節點。

從集羣中刪除主節點和從節點

最後咱們嘗試刪除剛剛添加的主節點7007和從節點7008
刪除主節點會相對麻煩一些,由於咱們須要把刪除主節點的hash槽分配到其餘節點中去!而後再進行移除節點操做
redis-trib.rb reshard 192.168.1.229:7007 咱們直接使用這個命令便可
提示填寫你移動的槽的個數。
提示輸入要移動到的節點的id,輸入一個7003的id
選擇分配槽的方式是all仍是done,咱們選擇done
最後刪除redis-trib.rb del-node 192.168.1.229:7007 7007的id
redis-trib.rb del-node 192.168.1.229:7008 7008的id
刪除7007和7008節點成功
相關文章
相關標籤/搜索