成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Redis集群節(jié)點(diǎn)擴(kuò)容大法

IT那活兒 / 799人閱讀
Redis集群節(jié)點(diǎn)擴(kuò)容大法
[
架構(gòu)描述
]


redis

組件版本:

redis:5.0.8

節(jié)點(diǎn)架構(gòu):

3主3從、6主機(jī)

擴(kuò)容后架構(gòu):

6主6從、12主機(jī)


[
問題描述
]


Redis(RemoteDictionary Server ),即遠(yuǎn)程字典服務(wù),是一個(gè)開源的使用ANSIC語言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語言的API。


redis是一個(gè)key-value存儲(chǔ)系統(tǒng),支持存儲(chǔ)的value類型包括string(字符串)、list(鏈表)、set(集合)、zset(sortedset--有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。


某業(yè)務(wù)系統(tǒng)采用rediscluster架構(gòu),由于數(shù)據(jù)量的增長(zhǎng)導(dǎo)致部分?jǐn)?shù)據(jù)還未過期時(shí)就被redis最大內(nèi)存限制給刪除掉,所以業(yè)務(wù)在當(dāng)前三柱三從架構(gòu)無法滿足業(yè)務(wù)數(shù)據(jù)量持續(xù)增長(zhǎng)的情況,需要擴(kuò)容節(jié)點(diǎn)至六主六從。


[
結(jié)構(gòu)及詳細(xì)說明
]


Redis集群大致架構(gòu)圖:

一組RedisCluster是由多個(gè)Redis實(shí)例組成,官方推薦使用6實(shí)例,其中3個(gè)為主節(jié)點(diǎn),3個(gè)為從結(jié)點(diǎn)。一旦有主節(jié)點(diǎn)發(fā)生故障的時(shí)候,RedisCluster可以選舉出對(duì)應(yīng)的從結(jié)點(diǎn)成為新的主節(jié)點(diǎn),繼續(xù)對(duì)外服務(wù),從而保證服務(wù)的高可用性。那么對(duì)于客戶端來說,知道知道對(duì)應(yīng)的key是要路由到哪一個(gè)節(jié)點(diǎn)呢?原來,RedisCluster把所有的數(shù)據(jù)劃分為16384個(gè)不同的槽位,可以根據(jù)機(jī)器的性能把不同的槽位分配給不同的Redis實(shí)例,對(duì)于Redis實(shí)例來說,他們只會(huì)存儲(chǔ)部門的Redis數(shù)據(jù),當(dāng)然,槽的數(shù)據(jù)是可以遷移的,不同的實(shí)例之間,可以通過一定的協(xié)議,進(jìn)行數(shù)據(jù)遷移。


需要把3主3從擴(kuò)容為6主6從,就需要增加6個(gè)節(jié)點(diǎn),依次添加3個(gè)主節(jié)點(diǎn)hash槽,再添加3個(gè)從節(jié)點(diǎn)手動(dòng)分配給主節(jié)點(diǎn)。



[
操作過程
]


1、創(chuàng)建節(jié)點(diǎn)

復(fù)制原有集群節(jié)點(diǎn)的配置文件更改端口目錄等然后再啟動(dòng)redis,要添加6個(gè)節(jié)點(diǎn)需創(chuàng)建6個(gè)節(jié)點(diǎn)并啟動(dòng):

./redis-server../6001/redis.conf

./redis-server../6002/redis.conf

./redis-server../6003/redis.conf

./redis-server../6004/redis.conf

./redis-server../6005/redis.conf

./redis-server../6006/redis.conf


2、添加主節(jié)點(diǎn)

第一個(gè)ip:port為需要添加的節(jié)點(diǎn)ip和端口,第二個(gè)ip:port為當(dāng)前集群中的節(jié)點(diǎn)和端口;先后執(zhí)行以下命令:

./redis-cli--cluster add-node 192.168.8.20:6001 192.168.8.10:7001 -a 123456

./redis-cli--cluster add-node 192.168.8.21:7002 192.168.8.10:7001 -a 123456

……


3、分配hash槽

新添加的節(jié)點(diǎn)沒有哈希槽,并不能正常存儲(chǔ)數(shù)據(jù),需要給新添加的節(jié)點(diǎn)分配哈希槽。


  1. 重新分配哈希槽

./redis-cli--cluster reshard  ip:port -a passwd


  1. 輸入要分配多少個(gè)哈希槽(數(shù)量)


  1. 輸入指定要分配哈希槽的節(jié)點(diǎn)ID


  1. 選擇需要分配的哈希槽來源

輸入all需要分配給目標(biāo)節(jié)點(diǎn)的哈希槽來著當(dāng)前集群的其他主節(jié)點(diǎn)(每個(gè)節(jié)點(diǎn)拿出的數(shù)量為集群自動(dòng)決定)


分配哈希槽有兩種方式

(1)將所有節(jié)點(diǎn)用作哈希槽的源節(jié)點(diǎn)。

(2)在指定的節(jié)點(diǎn)拿出指定數(shù)量的哈希槽分配到目標(biāo)節(jié)點(diǎn):


4、添加從節(jié)點(diǎn)

添加6004節(jié)點(diǎn)(slave的添加方法,master為7004)

#節(jié)點(diǎn)ID是主節(jié)點(diǎn)的ID

#192.168.8.20:6004 是新加的從節(jié)點(diǎn)

#192.168.8.10:7004 作為從節(jié)點(diǎn)的主節(jié)點(diǎn)


./redis-cli--cluster add-node --cluster-slave --cluster-master-idxxxxxxxxxxxxxxxxxxx 192.168.8.20:6004 192.168.8.10:7004


[
總結(jié)
]


1、redis擴(kuò)容一般有兩種方法,一種是在線擴(kuò)容,一種是離線擴(kuò)容,從業(yè)務(wù)的角度來說,在線擴(kuò)容是最方便的方法,但在線擴(kuò)容有個(gè)問題是,過程中如果某個(gè)槽正在操作會(huì)導(dǎo)致遷移槽是發(fā)送錯(cuò)誤,需要人工干預(yù)。


2、離線擴(kuò)容是比較快速的方法,人工干預(yù)比較少由集群自動(dòng)分配哈希槽,缺點(diǎn)是需停掉業(yè)務(wù)。


3、一般來說業(yè)務(wù)上線前會(huì)對(duì)redis緩存數(shù)據(jù)量有一個(gè)預(yù)估,從而對(duì)架構(gòu)的硬件配置有個(gè)預(yù)估,就不會(huì)產(chǎn)生擴(kuò)容這個(gè)操作,但往往業(yè)務(wù)數(shù)據(jù)量是一個(gè)動(dòng)態(tài)的,無法預(yù)估的,所以需要通過擴(kuò)容節(jié)點(diǎn)的操作慢在業(yè)務(wù)的需求,需要保證擴(kuò)容過程正保證數(shù)據(jù)的正確性。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130085.html

相關(guān)文章

  • redis cluster 擴(kuò)容

    摘要:重新分片,把要?jiǎng)h除的主節(jié)點(diǎn)的數(shù)據(jù)槽移動(dòng)到其他主節(jié)點(diǎn)上,以免數(shù)據(jù)丟失。分區(qū)完成當(dāng)前主節(jié)點(diǎn)已經(jīng)沒有數(shù)據(jù)槽了。這樣就可以實(shí)現(xiàn)橫向動(dòng)態(tài)擴(kuò)容,新增加的主從節(jié)點(diǎn),用于存儲(chǔ)新的數(shù)據(jù)則可,對(duì)以前的節(jié)點(diǎn)的數(shù)據(jù)不會(huì)有任何影響。 需求: A redis cluster 集群 40 臺(tái)集群擴(kuò)容到 68 臺(tái)也就是 增加 28 臺(tái)新的機(jī)器 : 一主一從 為一組,一共12組 前期準(zhǔn)備 掃描新增擴(kuò)容服務(wù)器ip是...

    call_me_R 評(píng)論0 收藏0
  • Redis集群容器化安裝

    摘要:本文將講解如何基于搭建集群,的集群設(shè)計(jì)包括兩個(gè)部分主從復(fù)制和哈希。至此,集群基本安裝成功。后期運(yùn)維基本命令集群節(jié)點(diǎn)槽常見問題把所有的物理節(jié)點(diǎn)映射到個(gè)哈希槽上,負(fù)責(zé)維護(hù)。 Redis集群概述 Redis作為當(dāng)前非常熱門的內(nèi)存型數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),可用于數(shù)據(jù)存儲(chǔ),緩存和消息代理等。本文將講解如何基于docker搭建Redis集群,Redis的集群設(shè)計(jì)包括兩個(gè)部分:主從復(fù)制和哈希Slot。1.1....

    xiaoqibTn 評(píng)論0 收藏0
  • Redis集群容器化安裝

    摘要:本文將講解如何基于搭建集群,的集群設(shè)計(jì)包括兩個(gè)部分主從復(fù)制和哈希。至此,集群基本安裝成功。后期運(yùn)維基本命令集群節(jié)點(diǎn)槽常見問題把所有的物理節(jié)點(diǎn)映射到個(gè)哈希槽上,負(fù)責(zé)維護(hù)。 Redis集群概述 Redis作為當(dāng)前非常熱門的內(nèi)存型數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),可用于數(shù)據(jù)存儲(chǔ),緩存和消息代理等。本文將講解如何基于docker搭建Redis集群,Redis的集群設(shè)計(jì)包括兩個(gè)部分:主從復(fù)制和哈希Slot。1.1....

    sf_wangchong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<