<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

          共 4727字,需瀏覽 10分鐘

           ·

          2021-03-09 23:57

          Redis有三種高可用方案:主從,哨兵(sentinel),集群(cluster)。哨兵和集群模式都是基于redis主從來實(shí)現(xiàn)的,普通的redis主從無法實(shí)現(xiàn)自動(dòng)的高可用切換。


          哨兵模式是在redis主從節(jié)點(diǎn)外圍部署哨兵集群,哨兵集群是一類特殊的redis,是基于quorum協(xié)議的監(jiān)控集群,至少需要三個(gè)節(jié)點(diǎn),哨兵集群會(huì)對(duì)redis主從節(jié)點(diǎn)狀態(tài)進(jìn)行監(jiān)控,如果設(shè)定值個(gè)數(shù)(一般使用多數(shù)派)的哨兵監(jiān)控到主節(jié)點(diǎn)的失敗,會(huì)協(xié)商進(jìn)行主從切換。一套哨兵集群可以監(jiān)控多套redis主從,具體配置步驟不再贅述。


          集群模式也稱為redis cluster,redis cluster是一個(gè)多節(jié)點(diǎn)分布式緩存,架構(gòu)與分布式數(shù)據(jù)庫有些類似,redis key的crc16值被hash到16384個(gè)slot中,所以每個(gè)節(jié)點(diǎn)存儲(chǔ)一部分redis數(shù)據(jù),所有節(jié)點(diǎn)組成完整的redis集群。客戶端可以對(duì)每個(gè)redis節(jié)點(diǎn)進(jìn)行讀寫,但是同一時(shí)刻只能操作一個(gè)key。


          redis集群的優(yōu)勢(shì)在于可以快速的實(shí)現(xiàn)擴(kuò)縮容,可以在線的新增和刪除節(jié)點(diǎn)。另外不同于sentinel模式,redis cluster中所有服務(wù)器都可以看做主節(jié)點(diǎn),都可以進(jìn)行讀寫,所有服務(wù)器的資源得到了利用。在高可用方案,每個(gè)redis主節(jié)點(diǎn)在另外的服務(wù)器上都會(huì)有一到多個(gè)備份的副本,并且基于多數(shù)派實(shí)現(xiàn)了主節(jié)點(diǎn)失敗時(shí)的自動(dòng)切換,可以容納集群少數(shù)節(jié)點(diǎn)同時(shí)失敗。


          下面以兩臺(tái)機(jī)器為例簡單看下redis cluster的搭建步驟


          兩臺(tái)機(jī)器分別創(chuàng)建redis目錄:

          [root@db1 ~]# mkdir /redis-cluster/7001[root@db1 ~]# mkdir /redis-cluster/7002[root@db1 ~]# mkdir /redis-cluster/7003[root@db2 ~]# mkdir /redis-cluster/7004[root@db2 ~]# mkdir /redis-cluster/7005[root@db2 ~]# mkdir /redis-cluster/7006



          將編譯好的redis二進(jìn)制包(編譯過程略,默認(rèn)redis源碼包里也有編譯好的二進(jìn)制文件)拷貝到7001目錄中,一般我習(xí)慣使用的目錄結(jié)構(gòu)如下

          redis-cluster/

          └── 7001

              ├── bin

              ├── data

              ├── etc

          └── log


          編輯配置文件

          vi /redis-cluster/7001/etc/redis.confbind 0.0.0.0port 7001pidfile /var/run/redis_7001.pidloglevel noticelogfile "/redis-cluster/7001/log/redis_7001.log"dir /redis-cluster/7001/datacluster-config-file /redis-cluster/nodes-7001.confdaemonize yessupervised noappendonly yescluster-enabled yescluster-node-timeout 5000save 900 1save 300 10save 60 10000dbfilename dump.rdbappendfilename "appendonly.aof"appendfsync everysec


          按照一樣的步驟拷貝配置其他五個(gè)節(jié)點(diǎn),然后啟動(dòng)六個(gè)redis節(jié)點(diǎn),可以放在腳本中

          [root@db1 ~]# /redis/redis-cluster/7001/bin/redis-server /redis/redis-cluster/7001/etc/redis.conf[root@db1 ~]# /redis/redis-cluster/7002/bin/redis-server /redis/redis-cluster/7002/etc/redis.conf[root@db1 ~]# /redis/redis-cluster/7003/bin/redis-server /redis/redis-cluster/7003/etc/redis.conf[root@db2 ~]# /redis/redis-cluster/7004/bin/redis-server /redis/redis-cluster/7004/etc/redis.conf[root@db2 ~]# /redis/redis-cluster/7005/bin/redis-server /redis/redis-cluster/7005/etc/redis.conf[root@db2 ~]# /redis/redis-cluster/7006/bin/redis-server /redis/redis-cluster/7006/etc/redis.conf


          執(zhí)行命令進(jìn)行集群創(chuàng)建

          [root@db1 ~]# redis-cli --cluster create  192.168.1.1:7001 192.168.1.1:7002 192.168.1.1:7003 192.168.1.2:7004 192.168.1.2:7005 192.168.1.2:7006 --cluster-replicas 1>>> Performing hash slots allocation on 6 nodes...Master[0] -> Slots 0 - 5460Master[1] -> Slots 5461 - 10922Master[2] -> Slots 10923 - 16383Adding replica 192.168.1.2:7006 to 192.168.1.1:7001Adding replica 192.168.1.1:7003 to 192.168.1.2:7004Adding replica 192.168.1.2:7005 to 192.168.1.1:7002M: 5fca048d05b26211e5ccb8b932b6327d31773822 192.168.1.1:7001   slots:[0-5460] (5461 slots) masterM: 4f98b53609307f11674b60bd84caecce3ff8d18e 192.168.1.1:7002   slots:[10923-16383] (5461 slots) masterS: fddf4c97eeb6f59d0de9e45cb0899b309e90d537 192.168.1.1:7003   replicates 84e20fd036d2b1c37d0071a632b08138490f0173M: 84e20fd036d2b1c37d0071a632b08138490f0173 192.168.1.2:7004   slots:[5461-10922] (5462 slots) masterS: 9769e3b34a0bdee505bba06a8dc924928917671b 192.168.1.2:7005   replicates 4f98b53609307f11674b60bd84caecce3ff8d18eS: 9c6d002711965fbcbc945fa6ba99ab18b4c04810 192.168.1.2:7006   replicates 5fca048d05b26211e5ccb8b932b6327d31773822Can I set the above configuration? (type 'yes' to accept): yes>>> Nodes configuration updated>>> Assign a different config epoch to each node>>> Sending CLUSTER MEET messages to join the clusterWaiting for the cluster to join..>>> Performing Cluster Check (using node 192.168.1.1:7001)M: 5fca048d05b26211e5ccb8b932b6327d31773822 192.168.1.1:7001   slots:[0-5460] (5461 slots) master   1 additional replica(s)M: 84e20fd036d2b1c37d0071a632b08138490f0173 192.168.1.2:7004   slots:[5461-10922] (5462 slots) master   1 additional replica(s)S: fddf4c97eeb6f59d0de9e45cb0899b309e90d537 192.168.1.1:7003   slots: (0 slots) slave   replicates 84e20fd036d2b1c37d0071a632b08138490f0173S: 9769e3b34a0bdee505bba06a8dc924928917671b 192.168.1.2:7005   slots: (0 slots) slave   replicates 4f98b53609307f11674b60bd84caecce3ff8d18eM: 4f98b53609307f11674b60bd84caecce3ff8d18e 192.168.1.1:7002   slots:[10923-16383] (5461 slots) master   1 additional replica(s)S: 9c6d002711965fbcbc945fa6ba99ab18b4c04810 192.168.1.2:7006   slots: (0 slots) slave   replicates 5fca048d05b26211e5ccb8b932b6327d31773822[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.


          集群相關(guān)檢查命令

          [root@db1 redis-cluster]# redis-cli -p 7001 cluster info[root@db1 redis-cluster]# redis-cli -p 7001 cluster nodes




          瀏覽 62
          點(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>
                  美利坚一区二区三区 | 色婷婷AV国产 | 中文字幕乱码亚洲中文在线 | 大香蕉这里是精品12 | 天天碰人人操人人 |