一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Redis - Redis Cluster集群動態擴容的實現

Redis Cluster集群動態擴容的實現

2021-08-17 17:34可均可可 Redis

本文主要介紹了Redis Cluster集群動態擴容的實現,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧

一、引言

上一篇文章我們一步一步的教大家搭建了RedisCluster集群環境,形成了3個主節點和3個從節點的Cluster的環境。當然,大家可以使用 Cluster info 命令查看Cluster集群的狀態,也可以使用Cluster Nodes 命令來詳細了解Cluster集群每個節點的詳細信息和關系。我們可以在主節點上增加數據、操作數據,也可以在從節點上讀取數據,這些操作當然都沒有問題。我們今天這篇文章主要是講解一下如何在不停掉Cluster集群環境的情況下,動態的往集群環境中增加主、從節點和動態的從集群環境中刪除節點。好了,廢話不多說,開始我們今天的講解。在開始之前,先要說明一下,因為redis的動態擴容操作都是通過redis-trib.rb腳本文件來完成的,所以我們先來看看對這個腳本文件的說明,效果如圖:

  1. [root@linux redis] # ruby redis-trib.rb

Redis Cluster集群動態擴容的實現

二、Cluster集群增加操作

現在正好開始我們的操作,我把增加節點和刪除節點分開來寫,并且增加或者刪除節點,我都分了兩個方面來說,一個方面是主節點的操作,另一個方面是從節點的操作,因為主、從節點在操作上會有差異,所以分來來說。增加節點的順序是先增加Master主節點,然后在增加Slave從節點。當然這篇文章是在上一篇文章所講的Cluster集群模式的基礎之上來講的,那就讓我們先來看看上一篇文章所建立的Cluster集群模式的詳細信息。效果如圖:

Redis Cluster集群動態擴容的實現

Redis Cluster集群動態擴容的實現

1、動態增加Master主服務器節點

1.1、創建目錄7006(Master主節點文件夾)和7007(Slave從節點文件夾),并從以前Cluster集群節點7000-7005任一節點中拷貝配置文件redis.conf到7006和7007目錄下。

  1. [root@linux redis-cluster]# pwd
  2.       [root@linux redis-cluster]# /root/application/program/redis-cluster/
  3.  
  4.       [root@linux redis-cluster]# mkdir 7006 7007
  5.  
  6.       [root@linux redis-cluster]# ls
  7.      7000 7001 7002 7003 7004 7005 7006 7007
  8.  
  9. [root@linux redis-cluster]# cp 7000/redis.conf 7006
  10. [root@linux redis-cluster]# cp 7000/redis.conf 7007

1、創建目錄:

Redis Cluster集群動態擴容的實現

2、拷貝配置文件:

Redis Cluster集群動態擴容的實現

1.2、修改配置文件,將7006和7007目錄下面的redis.conf配置文件的端口進行相應修改,與自己的目錄名稱保持一致,修改項目如下:(在linux環境下可以執行如下命令進行全局替換::%s/7000/7006/g,%s/7000/7007/g,保存并退出則可)

1.2.1、7006節點的配置文件:redis.conf

  1. bind 192.168.127.130
  2.  
  3.       port 7006
  4.  
  5.       daemonize yes
  6.  
  7.        pidfile /var/run/redis-7006.pid
  8.  
  9.       logfile /root/application/program/redis-cluster/7006/redis.log
  10.  
  11.       dir /root/application/program/redis-cluster/7006/
  12.  
  13.       cluster-enabled yes
  14.  
  15.       cluster-config-file nodes-7006.conf
  16.  
  17.        cluster-node-timeout 15000
  18.  
  19.       appendonly yes
  20.  
  21.       appendfsync always

1.2.2、7007節點的配置文件:redis.conf

  1. bind 192.168.127.130
  2.  
  3.       port 7007
  4.  
  5.       daemonize yes
  6.  
  7.       pidfile /var/run/redis-7007.pid
  8.  
  9.       logfile /root/application/program/redis-cluster/7007/redis.log
  10.  
  11.       dir /root/application/program/redis-cluster/7007/
  12.  
  13.       cluster-enabled yes
  14.  
  15.       cluster-config-file nodes-7007.conf
  16.  
  17.       cluster-node-timeout 15000
  18.  
  19.       appendonly yes
  20.  
  21.       appendfsync always

1.3、啟動7006和7007目錄下Redis實例,并查看效果。

  1. [root@linux redis]# pwd
  2.     [root@linux redis]# /root/application/program/redis/
  3.  
  4.     [root@linux redis]# redis-server ../redis-cluster/7006/redis.conf
  5.     [root@linux redis]# redis-server ../redis-cluster/7007/redis.conf

效果如圖:

Redis Cluster集群動態擴容的實現

Redis Cluster集群動態擴容的實現

1.4、將7006主節點加入到Cluster集群。

  1.  [root@linux redis]# pwd
  2.     [root@linux redis]# /root/application/program/redis/
  3.  
  4.     [root@linux redis]# ruby redis-trib.rb add-node 192.168.127.130:7006 192.168.127.130:7000

注意:當添加新節點成功以后,新的節點不會有任何數據,因為他沒有分配任何的數據Slot(哈希slots),這一步需要手動操作。

1.4.1、增加7006:(192.168.127.130:7006,截圖地址錯誤,端口號是7006,不是9006)

Redis Cluster集群動態擴容的實現

1.4.2、節點增加成功。

Redis Cluster集群動態擴容的實現

1.4.3、cluster info 驗證:

Redis Cluster集群動態擴容的實現

1.4.4、cluster nodes驗證:

Redis Cluster集群動態擴容的實現

1.5、為7006Master主節點分配數據Slots,分配方法是從集群中知道任何一個主節點(因為只有Master主節點才有數據slots),然后對其進行重新分片工作。

  1. [root@linux redis]# pwd
  2.     [root@linux redis]# /root/application/program/redis/
  3.  
  4.     [root@linux redis]# ruby redis-trib.rb reshard 192.168.127.130:7000

1.5.1、分配數據槽:

Redis Cluster集群動態擴容的實現

1.5.2、選擇接收數據槽的節點和數據槽產生的方式:

Redis Cluster集群動態擴容的實現

1.5.3、執行分配計劃:

Redis Cluster集群動態擴容的實現

1.5.4、數據槽分配成功:

Redis Cluster集群動態擴容的實現

2、動態增加Slave從服務器節點

在增加主節點7006的時候,前面的3步是共有的,也就是從1.1-1.3,之后才是建立主節點的內容,前面的3步驟針對從節點7007也是必須的,我只是把這些步驟寫到了創建主節點7006的步驟里,大家請知曉。

2.1、將7007節點增加到集群中

  1. [root@linux redis]# pwd
  2. [root@linux redis]# /root/application/program/redis/
  3. [root@linux redis]# ruby redis-trib.rb add-node 192.168.127.130:7007 192.168.127.130:7000

效果如圖:

Redis Cluster集群動態擴容的實現

2.2、指定7007節點作為7006的從節點,實現主從的配置。

  1. [root@linux redis]# pwd
  2. [root@linux redis]# /root/application/program/redis/
  3. [root@linux redis]# redis-cli -c -h 192.168.127.130 -p 7007 //登陸7007
  4. 192.168.127.130::7007>cluster replicate 71ecd970838e9b400a2a6a15cd30a94ab96203bf(主節點的ID,這里是7006)
  5. 192.168.127.130::7007>OK

效果如圖:

Redis Cluster集群動態擴容的實現

三、Cluster集群刪除操作

由于我們在上面的步驟里面創建7006和7007兩個主從的節點,下面接下來的操作,我就是從這個Cluster集群模式中動態的刪除掉這兩個節點。刪除的順序是先刪除Slave從節點,然后在刪除Master主節點,最后還原到我們上一篇文章建立的Cluster集群模式,也就是3個主節點和3個從節點。現在是4個主節點和4個從節點。效果如圖:

Redis Cluster集群動態擴容的實現

1、動態刪除Slave從服務器節點

1.1、刪除7007從節點,輸入del-node命令,指定刪除節點的IP地址和Port端口號,同時還要提供該從節點ID名稱。

  1. [root@linux redis]# pwd
  2. [root@linux redis]# /root/application/program/redis/
  3. [root@linux redis]# ruby redis-trib.rb del-node 192.168.127.130:7007 991ed242102aaa08873eb9404a18e0618a4e37bd

刪除成功如圖:        

Redis Cluster集群動態擴容的實現

刪除前如圖:          

Redis Cluster集群動態擴容的實現

刪除后如圖:

Redis Cluster集群動態擴容的實現

2、動態刪除Master主服務器節點

要想刪除Master主節點,可能要繁瑣一些。因為在Master主節點上有數據槽(slots),為了保證數據的不丟失,必須把這些數據槽遷移到其他Master主節點上,然后在刪除主節點。

2.1、重新分片,把要刪除的Master主節點的數據槽移動到其他Master主節點上,以免數據丟失。

  1. [root@linux redis]# pwd
  2. [root@linux redis]# /root/application/program/redis/
  3. [root@linux redis]# ruby redis-trib.rb reshard 192.168.127.130:7006

2.1.1、移除多少槽如圖:創建輸入200,這里要輸入199,因為計數是從0開始的,切記。

Redis Cluster集群動態擴容的實現

2.1.2、接受槽的Master主節點ID:這個節點可以是任意一個主節點都可以,我選擇7002,ID是:3b025b3ecfa65f462de639c7a412be443cf1dd1c

Redis Cluster集群動態擴容的實現

2.1.3、從哪個主節點移除,該主節點是7006,ID是:71ecd970838e9b400a2a6a15cd30a94ab96203bf

Redis Cluster集群動態擴容的實現

2.1.4、執行分區計劃,選擇yes。分區完成,效果如圖:

Redis Cluster集群動態擴容的實現

2.1.5、當前7006主節點已經沒有數據槽了。

Redis Cluster集群動態擴容的實現

2.2、刪除7006主節點,提供要刪除節點的IP地址和Port端口,當然還有要刪除的節點的ID名稱。

  1. [root@linux redis]# pwd
  2. [root@linux redis]# /root/application/program/redis/
  3. [root@linux redis]# ruby redis-trib.rb del-node 192.168.127.130:7006 71ecd970838e9b400a2a6a15cd30a94ab96203bf

2.2.1、刪除成功  

Redis Cluster集群動態擴容的實現

2.2.2、查看節點效果   

Redis Cluster集群動態擴容的實現

四、總結

今天就寫到這里了,做一個小小的總結。主從復制和哨兵模式這兩個集群模式由于不能動態擴容,而且主節點之間(有多個主節點的情況)數據完全一樣,導致了主節點的容量成了整個集群的瓶頸,如果想擴展集群容量,必須擴展主節點的容量。由于以上的問題,redis在3.0開始Cluster集群模式,這個模式在主節點之間數據是不一樣的,數據也可以根據需求自動轉向其他節點。這樣就可以實現橫向動態擴容,新增加的主從節點,用于存儲新的數據則可,對以前的節點的數據不會有任何影響。再者說,配置也很簡單,這才是我們所需要的集群模式。

到此這篇關于Redis Cluster集群動態擴容的實現的文章就介紹到這了,更多相關Redis Cluster集群動態擴容 內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/PatrickLiu/p/8473135.html

延伸 · 閱讀

精彩推薦
  • Redisredis 交集、并集、差集的具體使用

    redis 交集、并集、差集的具體使用

    這篇文章主要介紹了redis 交集、并集、差集的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    xiaojin21cen10152021-07-27
  • RedisRedis 事務知識點相關總結

    Redis 事務知識點相關總結

    這篇文章主要介紹了Redis 事務相關總結,幫助大家更好的理解和學習使用Redis,感興趣的朋友可以了解下...

    AsiaYe8232021-07-28
  • Redisredis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    redis中如何使用lua腳本讓你的靈活性提高5個逼格詳解

    這篇文章主要給大家介紹了關于redis中如何使用lua腳本讓你的靈活性提高5個逼格的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具...

    一線碼農5812019-11-18
  • RedisRedis全量復制與部分復制示例詳解

    Redis全量復制與部分復制示例詳解

    這篇文章主要給大家介紹了關于Redis全量復制與部分復制的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Redis爬蟲具有一定的參考學習...

    豆子先生5052019-11-27
  • Redisredis實現排行榜功能

    redis實現排行榜功能

    排行榜在很多地方都能使用到,redis的zset可以很方便地用來實現排行榜功能,本文就來簡單的介紹一下如何使用,具有一定的參考價值,感興趣的小伙伴們...

    乘月歸5022021-08-05
  • RedisRedis的配置、啟動、操作和關閉方法

    Redis的配置、啟動、操作和關閉方法

    今天小編就為大家分享一篇Redis的配置、啟動、操作和關閉方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    大道化簡5312019-11-14
  • Redis詳解Redis復制原理

    詳解Redis復制原理

    與大多數db一樣,Redis也提供了復制機制,以滿足故障恢復和負載均衡等需求。復制也是Redis高可用的基礎,哨兵和集群都是建立在復制基礎上實現高可用的...

    李留廣10222021-08-09
  • RedisRedis如何實現數據庫讀寫分離詳解

    Redis如何實現數據庫讀寫分離詳解

    Redis的主從架構,能幫助我們實現讀多,寫少的情況,下面這篇文章主要給大家介紹了關于Redis如何實現數據庫讀寫分離的相關資料,文中通過示例代碼介紹...

    羅兵漂流記6092019-11-11
主站蜘蛛池模板: 欧美日韩精品在线观看 | 日本国产一区二区三区 | 四虎国产视频 | 亚洲精品成人a | 富士av105 | 亚洲视频在线免费看 | 欧美一区二区三区精品 | 女人扒开下面让男人桶爽视频 | 99热影视| 日日本老女人 | 24adc年龄18岁欢迎大驾光临 | 国产第9页 | poren18日本老师hd | 成年男女免费视频网站 | 热穴高校| 国产亚洲女人久久久久久 | 91久久青青草原线免费 | 午夜神器18以下不能进免费 | 欧美香蕉人人人人人人爱 | 国产极品精频在线观看 | 亚洲高清中文字幕 | 日本美女xx | 俄罗斯一级成人毛片 | 秒播影视 午夜福利毛片 | 欧洲vodafonewi喷潮 | 欧美在线欧美 | 国产精品麻豆免费版 | 国产剧情在线播放 | 波多野结衣一区 | 情人梁家辉在线 | 男人女人叉叉叉 | 国产福利资源网在线观看 | 性吟网 | 亚洲激情网站 | 四虎地址 | 91国语自产拍在线观看 | 日韩高清在线观看 | 91九色国产porny | 日本视频中文字幕 | 亚洲国产婷婷俺也色综合 | 国产90后美女露脸在线观看 |