<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          非常適合新手的redis cluster搭建過(guò)程

          共 2307字,需瀏覽 5分鐘

           ·

          2021-06-04 11:23

          9bcad264d3097f5fc0a33980abdeaa39.webp

          Redis集群演進(jìn)過(guò)程

          1. Redis單節(jié)點(diǎn)
          2. 主從復(fù)制:
            復(fù)制主要實(shí)現(xiàn)了數(shù)據(jù)的多機(jī)備份,以及對(duì)于讀操作的負(fù)載均衡和簡(jiǎn)單的故障恢復(fù)。
            故障恢復(fù)無(wú)法自動(dòng)化;寫(xiě)操作無(wú)法負(fù)載均衡;存儲(chǔ)能力受到單機(jī)的限制。
          3. 哨兵(Sentinel):
            在復(fù)制的基礎(chǔ)上,哨兵實(shí)現(xiàn)了自動(dòng)化的故障恢復(fù)。
            缺陷是寫(xiě)操作無(wú)法負(fù)載均衡;存儲(chǔ)能力受到單機(jī)的限制。
          4. Cluster集群:
            通過(guò)分片集群,Redis解決了寫(xiě)操作無(wú)法負(fù)載均衡,以及存儲(chǔ)能力受到單機(jī)限制的問(wèn)題,而且也具有故障遷移(主從切換)的功能,實(shí)現(xiàn)了較為完善的高可用方案。
          52f356a16f8444a1c4944075a33b2649.webp

          科普特性

          請(qǐng)對(duì)照上面的架構(gòu)圖

          • redis cluster不支持單機(jī)版本的16個(gè)默認(rèn)數(shù)據(jù)庫(kù),僅有0數(shù)據(jù)庫(kù), select命令被禁用
          • key空間被劃分為16384個(gè)哈希槽,每個(gè)master節(jié)點(diǎn)負(fù)責(zé)處理16384個(gè)哈希槽的子集
            當(dāng)集群沒(méi)有發(fā)生重配,集群是穩(wěn)定的
          • 每個(gè)master都可能有1個(gè)或多個(gè)slave節(jié)點(diǎn), 這些節(jié)點(diǎn)將在網(wǎng)絡(luò)分區(qū)或者發(fā)生故障時(shí)嘗試替代master節(jié)點(diǎn), 同時(shí)這些slave節(jié)點(diǎn)也可用于支撐大規(guī)模的讀操作
          • 將key映射到哈希操作的算法是hash_slot = CRC16(16)mod 16384

          例外:key hash tags:
          {user1000}.following和{user1000}.followers兩個(gè)鍵值將被放在一個(gè)哈希槽,因?yàn)橹挥凶幼址畊ser1000將被用來(lái)計(jì)算哈希槽。

          • Cluster bus:每個(gè)redis節(jié)點(diǎn)都有一個(gè)用于集群節(jié)點(diǎn)間通信的tcp端口(在原客戶端訪問(wèn)端口之上加上1000),
          • 節(jié)點(diǎn)使用gossip協(xié)議和配置更新機(jī)制,以避免在正常情況下在節(jié)點(diǎn)之間交換過(guò)多的消息,因此交換的消息數(shù)量不是指數(shù)級(jí)的
          • redis客戶端可以向集群中每個(gè)節(jié)點(diǎn)發(fā)送查詢(包括從節(jié)點(diǎn)),節(jié)點(diǎn)將會(huì)分析查詢key,找到負(fù)責(zé)對(duì)應(yīng)哈希槽的節(jié)點(diǎn)。

          當(dāng)前節(jié)點(diǎn)能處理最好,不能處理將返回 MOVED error、哈希槽、能處理的節(jié)點(diǎn),客戶端將自行定向到特定新節(jié)點(diǎn)查詢。

          • 一般情況下slave節(jié)點(diǎn)會(huì)將客戶端請(qǐng)求重定向到負(fù)責(zé)對(duì)應(yīng)哈希槽的master節(jié)點(diǎn),但是為了支撐大規(guī)模讀,可以給slave節(jié)點(diǎn)開(kāi)啟 READONLY

          搭建Redis Cluster

          本文使用一個(gè)單物理機(jī),搭建偽Redis Cluster(3主3從)

          1. 創(chuàng)建redis-cluster目錄,存放集群
          2. 下載最新版redis-6.2.4, 將bin目錄下的可執(zhí)行文件、redis.conf拷貝到同級(jí)目錄redis01
          3. 修改redis01 目錄下redis.conf配置:
          • port 7001
          • cluster-enabled? yes ? ? ? ?// 之前被注釋
          將redis01拷貝多個(gè),形成redis02, redis02, redis04, redis05,redis06 ,
          修改對(duì)應(yīng)redis.conf port為7002 7003 7004 7005 70066ac8fc362d2ee3884412eb92368a8c67.webp
          1. 啟動(dòng)6個(gè)redis節(jié)點(diǎn),使用start.sh腳本( chmod +x start.sh)?每個(gè)啟動(dòng)命令后面的& 表示后臺(tái)啟動(dòng)
          cd?redis01
          ./redis-server?redis.conf?&
          cd?..
          cd?redis02
          ./redis-server?redis.conf??&
          cd?..
          cd?redis03
          ./redis-server?redis.conf??&
          cd?..
          cd?redis04
          ./redis-server?redis.conf?&
          cd?..
          cd?redis05
          ./redis-server?redis.conf?&
          cd?..
          cd?redis06
          ./redis-server?redis.conf?&
          cd?..
          43c2a0c8f59da6d82a70a00765663078.webp
          1. 準(zhǔn)備組建redis cluster

          redis 5+可以使用redis-cli 特定命令來(lái)組建集群;redis3,4使用redis-trib.rb來(lái)協(xié)助組建集群。

          使用redis-cli --cluster命令創(chuàng)建由6個(gè)節(jié)點(diǎn)組成的redis cluser,其中cluster-replicas 1將為每個(gè)master節(jié)點(diǎn)創(chuàng)建slave節(jié)點(diǎn)? (不帶上這個(gè)cluster-replicas,會(huì)創(chuàng)建了6個(gè)master節(jié)點(diǎn)組成的redis cluster).

          redis-cli?--cluster?create?127.0.0.1:7001?\
          127.0.0.1:7002?127.0.0.1:7003?127.0.0.1:7004?127.0.0.1:7005???127.0.0.1:7006?\
          --cluster-replicas?1
          4ab266097a1ae34e265812d1b4fb4a94.webp
          1. 驗(yàn)證集群狀態(tài)
            使用redis-cli -p 7001 -c登錄節(jié)點(diǎn)
            使用cluster nodes查看節(jié)點(diǎn)狀態(tài)32dca855581ee87436203bf7c56156ff.webp

          ? ? ? 以上操作搭建了由3master 3Slave形成的高可用redis cluster
          ? ? ?節(jié)點(diǎn)角色由自動(dòng)生成的nodes.conf文件維護(hù)

          9cb6e456785e41070b7b94802b0d6617.webp
          1. 客戶端實(shí)操
          9e8e93e77d9e417f9e6a919f6ee55c2d.webp

          如果覺(jué)得以上過(guò)程很繁瑣,Redis官方提供了另外的工具,在utils目錄create-cluster腳本。

          1. create-cluster start
          2. create-cluster create
            就會(huì)創(chuàng)建3 mater 3 slave組成的redis cluster(首節(jié)點(diǎn)端口從30001 開(kāi)始),這樣前置知識(shí)可能沒(méi)有按部就班清晰。

          總結(jié)

          以上就是Redis Cluster科普級(jí)別的知識(shí), 幫助大家快速全面了解Redis Cluster特性, 快速搭建Redis Cluster。
          好記性不如爛筆頭,倒騰一次,記錄一次。

          瀏覽 55
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久大香蕉 | 91精品国产综合久久蜜芽的特点 | 男人天堂TV | 国产精品乱码一区二区免费视频 | 五月天婷婷国产丁香 |