<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搭建過程

          共 2770字,需瀏覽 6分鐘

           ·

          2021-06-12 02:18

          點擊上方藍色字體,選擇“標星公眾號”

          優(yōu)質文章,第一時間送達

            作者 |  JulianHuang

          來源 |  urlify.cn/vqaMfi

          Redis集群演進過程

          1. Redis單節(jié)點

          2. 主從復制:
            復制主要實現(xiàn)了數(shù)據(jù)的多機備份,以及對于讀操作的負載均衡和簡單的故障恢復。
            故障恢復無法自動化;寫操作無法負載均衡;存儲能力受到單機的限制。

          3. 哨兵(Sentinel):
            在復制的基礎上,哨兵實現(xiàn)了自動化的故障恢復。
            缺陷是寫操作無法負載均衡;存儲能力受到單機的限制。

          4. Cluster集群:
            通過分片集群,Redis解決了寫操作無法負載均衡,以及存儲能力受到單機限制的問題,而且也具有故障遷移(主從切換)的功能,實現(xiàn)了較為完善的高可用方案。

          科普特性

          請對照上面的架構圖

          • redis cluster不支持單機版本的16個默認數(shù)據(jù)庫,僅有0數(shù)據(jù)庫, select命令被禁用

          • key空間被劃分為16384個哈希槽,每個master節(jié)點負責處理16384個哈希槽的子集;
            當集群沒有發(fā)生重配,集群是穩(wěn)定的

          • 每個master都可能有1個或多個slave節(jié)點, 這些節(jié)點將在網(wǎng)絡分區(qū)或者發(fā)生故障時嘗試替代master節(jié)點, 同時這些slave節(jié)點也可用于支撐大規(guī)模的讀操作

          • 將key映射到哈希操作的算法是hash_slot = CRC16(16)mod 16384

          例外:key hash tags:
          {user1000}.following和{user1000}.followers兩個鍵值將被放在一個哈希槽,因為只有子字符串user1000將被用來計算哈希槽。

          • Cluster bus:每個redis節(jié)點都有一個用于集群節(jié)點間通信的tcp端口(在原客戶端訪問端口之上加上1000),

          • 節(jié)點使用gossip協(xié)議和配置更新機制,以避免在正常情況下在節(jié)點之間交換過多的消息,因此交換的消息數(shù)量不是指數(shù)級的

          • redis客戶端可以向集群中每個節(jié)點發(fā)送查詢(包括從節(jié)點),節(jié)點將會分析查詢key,找到負責對應哈希槽的節(jié)點。

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

          • 一般情況下slave節(jié)點會將客戶端請求重定向到負責對應哈希槽的master節(jié)點,但是為了支撐大規(guī)模讀,可以給slave節(jié)點開啟 READONLY

          搭建Redis Cluster

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

          1. 創(chuàng)建redis-cluster目錄,存放集群

          2. 下載最新版redis-6.2.4, 將bin目錄下的可執(zhí)行文件、redis.conf拷貝到同級目錄redis01

          3. 修改redis01 目錄下redis.conf配置:

            • port 7001

            • cluster-enabled yes // 之前被注釋

          4. 將redis01拷貝多個,形成redis02, redis02, redis04, redis05,redis06 ,
            修改對應redis.conf 
            port為7002 7003 7004 7005 7006

          1. 啟動6個redis節(jié)點,使用start.sh腳本( chmod +x start.sh)
            // 每個啟動命令后面的& 表示后臺啟動

          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 ..

          1. 準備組建redis cluster

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

          使用redis-cli --cluster命令創(chuàng)建由6個節(jié)點組成的redis cluser,其中cluster-replicas 1將為每個master節(jié)點創(chuàng)建slave節(jié)點(不帶上這個cluster-replicas,會創(chuàng)建了6個master節(jié)點組成的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

          1. 驗證集群狀態(tài)
            使用
            redis-cli -p 7001 -c登錄節(jié)點
            使用
            cluster nodes查看節(jié)點狀態(tài)

          以上操作搭建了由3master 3Slave形成的高可用redis cluster,
          節(jié)點角色由自動生成的
          nodes.conf文件維護

          1. 客戶端實操

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

          1. create-cluster start

          2. create-cluster create
            就會創(chuàng)建3 mater 3 slave組成的redis cluster(首節(jié)點端口從30001 開始),這樣前置知識可能沒有按部就班更清晰。

          總結

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









          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  四虎影库亚洲无码 | 簧片大全免费观看视频了6666 | 亚洲逼| 成人娱乐网 | 爱色99 |