<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 伸縮原理 集群伸縮就是槽位和數據在節點之間的移動; ## 擴容集群 1. 準備新節點; 1.集群模式; 2.配置和其他節點統一; 3.啟動后是孤兒節點; ![](https://img.kancloud.cn/26/cd/26cdad7a1b65de5997a3fc3bee671dcd_1240x714.png) 2. 加入集群(meet); 3. 遷移槽和數據; 1. 槽遷移計劃; 2. 遷移數據; 3. 添加從節點; ![](https://img.kancloud.cn/42/83/4283eb513c8f2dca89d0c8b8c65b8ca6_1468x838.png) * 圖中每個節點把一部分槽和數據遷移到新的節點6385,每個節點負責的槽和數據相比之前變少了從而達到了集群擴容的目的。這里我們故意忽略了槽和數據在節點之間遷移的細節,目的是想讓讀者重點關注在上層槽和節點分配上來,**理解集群的水平伸縮的上層原理:集群伸縮=槽和數據在節點之間的移動** * 下面將介紹集群擴容和收縮的細節 ![](https://img.kancloud.cn/c5/15/c5156426871d2f25c29284e541ae5aab_653x585.png) ![](https://img.kancloud.cn/41/bf/41bfdde7e961c3768b07f61be50b5a22_3054x1296.png) ![](https://img.kancloud.cn/8c/01/8c011c4576d490cd0a05355a92773d87_1710x1186.png) ## 加入集群作用 1. 為它遷移槽和數據實現擴容; 2. 作為從節點負責故障轉移; 3. 建議使用Redis-trib.rb 能夠避免新節點已經加入了其它集群,造成故障; ## 集群擴容 1. 開啟集群; ``` 4c0dcdf4862435f9e0b7ab9573c5d88ebce69c9e 127.0.0.1:7005@17005 slave 26cdec411e03740e81741fd1af56c84a8995e1bf 0 1606130372000 2 connected 26cdec411e03740e81741fd1af56c84a8995e1bf 127.0.0.1:7001@17001 master - 0 1606130373000 2 connected 5461-10922 //槽位 f29d5a33719410d0d965f0cd04a1aaf62772113c 127.0.0.1:7004@17004 slave e4bba455615996a2419f5ea68fb483572da69a4e 0 1606130373441 8 connected e4bba455615996a2419f5ea68fb483572da69a4e 127.0.0.1:7000@17000 myself,master - 0 1606130370000 8 connected 0-5460 6f0a7298bd81de901ebd4989504a4d914e5002e2 127.0.0.1:7003@17003 slave 86ebe5a560dc152174ae87b4555890486aa35051 0 1606130371000 3 connected 86ebe5a560dc152174ae87b4555890486aa35051 127.0.0.1:7002@17002 master - 0 1606130372422 3 connected 10923-16383 ``` 2. 準備新節點; 我們準備了7006和7007兩個新節點;可以看到此時它們是兩個孤兒節點;并沒有與集群中其他幾點進行通信; ``` ? bin redis-cli -p 7006 cluster nodes daac46e66a8936545668c78cbe7575e6cabac310 :7006@17006 myself,master - 0 0 0 connected ? bin redis-cli -p 7007 cluster nodes 287b5e49634a455052c9a1ef388bc40365881be6 :7007@17007 myself,master - 0 0 0 connected ``` 3. 加入集群: ``` ? bin redis-cli -p 7000 cluster meet 127.0.0.1 7006 OK ? bin redis-cli -p 7000 cluster meet 127.0.0.1 7007 OK ``` 查看:* 集群內新舊節點**經過一段時間的ping/pong消息通信之后,所有節點會發現新節點并將它們的狀態保存到本地**。例如我們在7006節點上執行cluster nodes命令可以看到新節點信息,如下所示: ``` ? bin redis-cli -p 7006 cluster nodes f29d5a33719410d0d965f0cd04a1aaf62772113c 127.0.0.1:7004@17004 slave e4bba455615996a2419f5ea68fb483572da69a4e 0 1606130701061 8 connected e4bba455615996a2419f5ea68fb483572da69a4e 127.0.0.1:7000@17000 master - 0 1606130704147 8 connected 0-5460 26cdec411e03740e81741fd1af56c84a8995e1bf 127.0.0.1:7001@17001 master - 0 1606130705178 2 connected 5461-10922 86ebe5a560dc152174ae87b4555890486aa35051 127.0.0.1:7002@17002 master - 0 1606130707231 3 connected 10923-16383 287b5e49634a455052c9a1ef388bc40365881be6 127.0.0.1:7007@17007 master - 0 1606130706202 9 connected 6f0a7298bd81de901ebd4989504a4d914e5002e2 127.0.0.1:7003@17003 slave 86ebe5a560dc152174ae87b4555890486aa35051 0 1606130704000 3 connected 4c0dcdf4862435f9e0b7ab9573c5d88ebce69c9e 127.0.0.1:7005@17005 slave 26cdec411e03740e81741fd1af56c84a8995e1bf 0 1606130702094 2 connected daac46e66a8936545668c78cbe7575e6cabac310 127.0.0.1:7006@17006 myself,master - 0 1606130703000 0 connected ``` 新節點剛開始都是主節點狀態,但是由于沒有負責的槽,所以不能接受任何讀寫操作。**對于新節點的后續操作我們一般有兩種選擇:** * 為它遷移槽和數據實現擴容 * 作為其他主節點的從節點負責故障轉移 4. 分配主從 ``` ? bin redis-cli -p 7007 cluster replicate daac46e66a8936545668c78cbe7575e6cabac310 OK ``` ``` ? bin redis-cli -p 7000 cluster nodes 287b5e49634a455052c9a1ef388bc40365881be6 127.0.0.1:7007@17007 slave daac46e66a8936545668c78cbe7575e6cabac310 0 1606131900000 0 connected 4c0dcdf4862435f9e0b7ab9573c5d88ebce69c9e 127.0.0.1:7005@17005 slave 26cdec411e03740e81741fd1af56c84a8995e1bf 0 1606131902172 2 connected 26cdec411e03740e81741fd1af56c84a8995e1bf 127.0.0.1:7001@17001 master - 0 1606131902000 2 connected 5461-10922 f29d5a33719410d0d965f0cd04a1aaf62772113c 127.0.0.1:7004@17004 slave e4bba455615996a2419f5ea68fb483572da69a4e 0 1606131901152 8 connected e4bba455615996a2419f5ea68fb483572da69a4e 127.0.0.1:7000@17000 myself,master - 0 1606131901000 8 connected 0-5460 6f0a7298bd81de901ebd4989504a4d914e5002e2 127.0.0.1:7003@17003 slave 86ebe5a560dc152174ae87b4555890486aa35051 0 1606131903198 3 connected 86ebe5a560dc152174ae87b4555890486aa35051 127.0.0.1:7002@17002 master - 0 1606131903000 3 connected 10923-16383 daac46e66a8936545668c78cbe7575e6cabac310 127.0.0.1:7006@17006 master - 0 1606131901000 0 connected //此刻沒有負責任何的槽位,不能讀寫的 ``` 5. 分配數據( redis-cli cluster) ``` ? bin redis-cli --cluster reshard 127.0.01:7000 >>> Performing Cluster Check (using node 127.0.01:7000) M: e4bba455615996a2419f5ea68fb483572da69a4e 127.0.01:7000 slots:[0-5460] (5461 slots) master 1 additional replica(s) S: 287b5e49634a455052c9a1ef388bc40365881be6 127.0.0.1:7007 slots: (0 slots) slave replicates daac46e66a8936545668c78cbe7575e6cabac310 S: 4c0dcdf4862435f9e0b7ab9573c5d88ebce69c9e 127.0.0.1:7005 slots: (0 slots) slave replicates 26cdec411e03740e81741fd1af56c84a8995e1bf M: 26cdec411e03740e81741fd1af56c84a8995e1bf 127.0.0.1:7001 slots:[5461-10922] (5462 slots) master 1 additional replica(s) S: f29d5a33719410d0d965f0cd04a1aaf62772113c 127.0.0.1:7004 slots: (0 slots) slave replicates e4bba455615996a2419f5ea68fb483572da69a4e S: 6f0a7298bd81de901ebd4989504a4d914e5002e2 127.0.0.1:7003 slots: (0 slots) slave replicates 86ebe5a560dc152174ae87b4555890486aa35051 M: 86ebe5a560dc152174ae87b4555890486aa35051 127.0.0.1:7002 slots:[10923-16383] (5461 slots) master 1 additional replica(s) M: daac46e66a8936545668c78cbe7575e6cabac310 127.0.0.1:7006 slots: (0 slots) master 1 additional replica(s) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. How many slots do you want to move (from 1 to 16384)? 4096 //詢問遷移多少個槽位 What is the receiving node ID? daac46e66a8936545668c78cbe7575e6cabac310 //目標節點的ID,就是新加入節點的runid(master) Please enter all the source node IDs. Type 'all' to use all the nodes as source nodes for the hash slots. Type 'done' once you entered all the source nodes IDs. Source node #1: all //從所有主庫中移出對應的槽值個數 Do you want to proceed with the proposed reshard plan (yes/no)? yes //是否繼續 ``` 查看 ``` ? bin redis-cli -p 7000 cluster nodes | grep master 26cdec411e03740e81741fd1af56c84a8995e1bf 127.0.0.1:7001@17001 master - 0 1606132876000 2 connected 6827-10922 e4bba455615996a2419f5ea68fb483572da69a4e 127.0.0.1:7000@17000 myself,master - 0 1606132877000 8 connected 1365-5460 86ebe5a560dc152174ae87b4555890486aa35051 127.0.0.1:7002@17002 master - 0 1606132876771 3 connected 12288-16383 daac46e66a8936545668c78cbe7575e6cabac310 127.0.0.1:7006@17006 master - 0 1606132874715 10 connected 0-1364 5461-6826 10923-12287 //可以看出,之前的每個節點都讓出了一部分槽位給新加入集群的master節點 ``` 由于槽用于hash運算本身順序沒有意義,因此無須強制要求節點負責槽的順序性。遷移之后建議使用下面的命令檢查節點之間槽的均衡性。命令如下: ``` ? bin redis-cli --cluster rebalance 127.0.0.1:7000 ``` 結果 ``` >>> Performing Cluster Check (using node 127.0.0.1:7000) [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. *** No rebalancing needed! All nodes are within the 2.00% threshold. //2% ``` * 通過上圖可以看出遷移之后**所有主節點負責的槽數量差異在2%以內,因此集群節點數據相對均勻,無需調整**
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看