Redis之旅--Redis集群(九)

一帆锋、Redis Cluster模式

redis集群并沒(méi)有使用一致性hash算法而引入了哈希槽概念,Redis 集群有16384個(gè)哈希槽,每個(gè)key通過(guò)CRC16校驗(yàn)后對(duì)16384取模來(lái)決定放置哪個(gè)槽.集群的每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分hash槽.也就是說(shuō)如果key是不變的對(duì)應(yīng)的slot也是不變的。
Redis3.0版本之后支持Cluster.

  1. 目前redis支持的cluster特性:
      1):節(jié)點(diǎn)自動(dòng)發(fā)現(xiàn)
      2):slave->master 選舉,集群容錯(cuò)
      3):Hot resharding:在線分片
      4):進(jìn)群管理:cluster xxx
      5):基于配置(nodes-port.conf)的集群管理
      6):ASK 轉(zhuǎn)向/MOVED 轉(zhuǎn)向機(jī)制.
    redis集群采用P2P模式禽额,是完全去中心化的锯厢,不存在中心節(jié)點(diǎn)或者代理節(jié)點(diǎn);
    redis集群是沒(méi)有統(tǒng)一的入口的脯倒,客戶端(client)連接集群的時(shí)候連接集群中的任意節(jié)點(diǎn)(node)即可实辑,集群內(nèi)部的節(jié)點(diǎn)是相互通信的(PING-PONG機(jī)制),每個(gè)節(jié)點(diǎn)都是一個(gè)redis實(shí)例盔憨;
    為了實(shí)現(xiàn)集群的高可用徙菠,即判斷節(jié)點(diǎn)是否健康(能否正常使用),redis-cluster有這么一個(gè)投票容錯(cuò)機(jī)制:如果集群中超過(guò)半數(shù)的節(jié)點(diǎn)投票認(rèn)為某個(gè)節(jié)點(diǎn)掛了郁岩,那么這個(gè)節(jié)點(diǎn)就掛了(fail)婿奔。這是判斷節(jié)點(diǎn)是否掛了的方法;
  2. 集群搭建需要的環(huán)境
    Redis集群至少需要3個(gè)節(jié)點(diǎn)问慎,因?yàn)橥镀比蒎e(cuò)機(jī)制要求超過(guò)半數(shù)節(jié)點(diǎn)認(rèn)為某個(gè)節(jié)點(diǎn)掛了該節(jié)點(diǎn)才是掛了萍摊,所以2個(gè)節(jié)點(diǎn)無(wú)法構(gòu)成集群。
    要保證集群的高可用如叼,需要每個(gè)節(jié)點(diǎn)都有從節(jié)點(diǎn)冰木,也就是備份節(jié)點(diǎn),所以Redis集群至少需要6臺(tái)服務(wù)器笼恰。

二踊沸、集群安裝

搭建 Redis集群,三個(gè)主節(jié)點(diǎn)社证,三個(gè)從節(jié)點(diǎn)逼龟,多主節(jié)點(diǎn)為了分布集群,從節(jié)點(diǎn)是為了高可用性追葡。
安裝redis:


復(fù)制文件

二腺律、集群配置(Windows環(huán)境)

修改每臺(tái)redis.windows.conf,修改里面的端口號(hào)奕短,以及集群的配置
redis.windows.conf

# 修改 79行
port 6380
# 添加 707行 啟用集群
cluster-enabled yes
# 添加 715行 配置每個(gè)節(jié)點(diǎn)的配置文件,可以以端口號(hào)為名稱
cluster-config-file nodes.conf
# 添加 722行
cluster-node-timeout 15000
# 修改 581行 啟動(dòng)AOF增量持久化策略
appendonly yes

所有文件除端口號(hào)不同外匀钧,其它配置相同翎碑。
在每個(gè)目錄下面新建一個(gè)bat腳本,用于啟動(dòng)每臺(tái)redis服務(wù):
start-server.bat 內(nèi)容:

redis-server redis.windows.conf

三之斯、安裝Ruby

  1. 安裝Ruby
    Redis 的集群是用Ruby腳本編寫(xiě)日杈,所以系統(tǒng)需要有 Ruby 環(huán)境。
    https://rubyinstaller.org/downloads/
    下載
安裝

安裝吊圾,下面紅框標(biāo)記的地方必選达椰。


安裝

安裝

驗(yàn)證:打開(kāi)cmd窗口,輸入ruby –version出現(xiàn)版本號(hào) 表示安裝成功


驗(yàn)證
  1. 安裝redis的ruby驅(qū)動(dòng)rubygems
    地址:https://rubygems.org/pages/download
    rubygems

    解壓安裝:
    解壓到6380文件夾下面项乒。
    進(jìn)入rubygems-3.0.3目錄下面執(zhí)行cmd命令:ruby setup.rb
D:\6380\rubygems-3.0.3>ruby setup.rb
安裝驅(qū)動(dòng)rubygems
  1. 切換到6380目錄下面啰劲,執(zhí)行命令gem install redis


    安裝

四、啟動(dòng)集群

  1. 進(jìn)入每個(gè)端口的文件夾檀何,執(zhí)行start-server.bat文件蝇裤,啟動(dòng)每個(gè)節(jié)點(diǎn)的服務(wù)


    啟動(dòng)6380

    其它如同。

  2. 安裝集群腳本redis-trib
    下載:
    https://github.com/MicrosoftArchive/redis/releases

下載

拷貝

拷貝
  1. 在當(dāng)前目錄執(zhí)行以下命令
ruby redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385

--replicas 1 表示 自動(dòng)為每一個(gè)master節(jié)點(diǎn)分配一個(gè)slave節(jié)點(diǎn) 上面有6個(gè)節(jié)點(diǎn)频鉴,程序會(huì)按照一定規(guī)則生成 3個(gè)master(主)3個(gè)slave(從)栓辜。


執(zhí)行命令

注:如果出現(xiàn)Node is not empty,先清空所有端口目錄下面的nodes.conf和dump.rdb文件垛孔,
重啟所有Redis藕甩,然后再執(zhí)行上面的命令。


輸入yes
啟動(dòng)集群

創(chuàng)建成功
  1. 驗(yàn)證集群是否啟動(dòng)成功
D:\6380>redis-cli -c -p 6380
127.0.0.1:6380> cluster info
驗(yàn)證集群

五周荐、常見(jiàn)問(wèn)題:

  1. 一直等待 Waiting for the cluster to join 很久都沒(méi)有反應(yīng)


    等待

    解決方案:
    1:進(jìn)入各個(gè)節(jié)點(diǎn)的redis的rdb文件保存位置
    刪除rdb持久化文件和nodes.conf文件
    2:關(guān)閉所有redis示例
    3:?jiǎn)?dòng)redis
    4:用redis-trib.rb創(chuàng)建集群查看是否成功

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狭莱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子概作,更是在濱河造成了極大的恐慌腋妙,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讯榕,死亡現(xiàn)場(chǎng)離奇詭異骤素,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)愚屁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)济竹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人霎槐,你說(shuō)我怎么就攤上這事送浊。” “怎么了栽燕?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵罕袋,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我碍岔,道長(zhǎng)浴讯,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任蔼啦,我火速辦了婚禮榆纽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捏肢。我一直安慰自己奈籽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布鸵赫。 她就那樣靜靜地躺著衣屏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辩棒。 梳的紋絲不亂的頭發(fā)上狼忱,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音一睁,去河邊找鬼钻弄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛者吁,可吹牛的內(nèi)容都是我干的窘俺。 我是一名探鬼主播,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼复凳,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼瘤泪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起染坯,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤均芽,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后单鹿,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體掀宋,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年仲锄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了劲妙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡儒喊,死狀恐怖镣奋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情怀愧,我是刑警寧澤侨颈,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布余赢,位于F島的核電站,受9級(jí)特大地震影響哈垢,放射性物質(zhì)發(fā)生泄漏妻柒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一耘分、第九天 我趴在偏房一處隱蔽的房頂上張望举塔。 院中可真熱鬧,春花似錦求泰、人聲如沸央渣。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芽丹。三九已至,卻和暖如春枉氮,著一層夾襖步出監(jiān)牢的瞬間志衍,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工聊替, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留楼肪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓惹悄,卻偏偏與公主長(zhǎng)得像春叫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泣港,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容