开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費電子書等14項超值服

          開通VIP
          Redis主從復制、哨兵模式、集群



          一、Redis主從復制

          1、Redis主從復制的概念

          主從復制,是指將一臺Redis服務器的數(shù)據(jù),復制到其他的Redis服務器。
          前者稱為主節(jié)點(Master),后者稱為從節(jié)點(Slave);
          數(shù)據(jù)的復制是單向的,只能由主節(jié)點到從節(jié)點。

          默認情況下,每臺Redis服務器都是主節(jié)點;
          且一個主節(jié)點可以有多個從節(jié)點(或沒有從節(jié)點),但一個從節(jié)點只能有一個主節(jié)點。

          2、Redis主從復制的作用

          • 數(shù)據(jù)冗余:主從復制實現(xiàn)了數(shù)據(jù)的熱備份,是持久化之外的一種數(shù)據(jù)冗余方式。

          • 故障恢復:當主節(jié)點出現(xiàn)問題時,可以由從節(jié)點提供服務,實現(xiàn)快速的故障恢復;實際上是一種服務的冗余。

          • 負載均衡:在主從復制的基礎上,配合讀寫分離,可以由主節(jié)點提供寫服務,由從節(jié)點提供讀服務(即寫Redis數(shù)據(jù)時應用連接主節(jié)點,讀Redis數(shù)據(jù)時應用連接從節(jié)點),分擔服務器負載;尤其是在寫少讀多的場景下,通過多個從節(jié)點分擔讀負載,可以大大提高Redis服務器的并發(fā)量。

          • 高可用基石:除了上述作用以外,主從復制還是哨兵和集群能夠?qū)嵤┑幕A,因此說主從復制是Redis高可用的基礎。

          3、Redis主從復制的流程

          • 第一步:若啟動一個Slave機器進程,則它會向Master機器發(fā)送一個“sync command”命令,請求同步連接。

          • 第二步:無論是第一次連接還是重新連接,Master機器都會啟動一個后臺進程,將數(shù)據(jù)快照保存到數(shù)據(jù)文件中(執(zhí)行rdb操作),同時Master還會記錄修改數(shù)據(jù)的所有命令并緩存在數(shù)據(jù)文件中。

          • 第三步:后臺進程完成緩存操作之后,Maste機器就會向Slave機器發(fā)送數(shù)據(jù)文件,Slave端機器將數(shù)據(jù)文件保存到硬盤上,然后將其加載到內(nèi)存中,接著Master機器就會將修改數(shù)據(jù)的所有操作一并發(fā)送給Slave端機器。若Slave出現(xiàn)故障導致宕機,則恢復正常后會自動重新連接。

          • 第四步:Master機器收到Slave端機器的連接后,將其完整的數(shù)據(jù)文件發(fā)送給Slave端機器,如果Mater同時收到多個Slave發(fā)來的同步請求,則Master會在后臺啟動一個進程以保存數(shù)據(jù)文件,然后將其發(fā)送給所有的Slave端機器,確保所有的Slave端機器都正常。

          4、Redis主從復制的搭建

          主機操作系統(tǒng)IP地址安裝包
          MasterCentOS7192.168.109.12redis-5.0.7.tar.gz
          Slave1CentOS7192.168.109.22redis-5.0.7.tar.gz
          Slave2CentOS7192.168.109.33redis-5.0.7.tar.gz

          master 、slave1、slave2

          systemctl stop firewalldsetenforce 0

          1)安裝Redis

          我上篇安裝redis詳細說明

          yum install -y gcc gcc-c   makecd /opttar zxvf redis-5.0.7.tar.gzcd /opt/redis-5.0.7/make && make PREFIX=/usr/local/redis installcd /opt/redis-5.0.7/utils./install_server.s......#回車四次后,手動輸入,需要一次性輸入正確Please select the redis executable path [] /usr/local/redis/bin/redis-server  ln -s /usr/local/redis/bin/* /usr/local/bin/

          master

          2)修改Master節(jié)點Redis配置文件

          vim /etc/redis/6379.conf#70行,修改bind 項,0.0.0.0監(jiān)聽所有網(wǎng)段bind 0.0.0.0#137行,開啟守護進程daemonize yes#172行,指定日志文件目錄logfile /var/log/redis_6379.log#264行,指定工作目錄dir /var/lib/redis/6379#700行,開啟AOF持久化功能appendonly yes/etc/init.d/redis_6379 restart







          slave1、slave2

          3)修改Slave節(jié)點Redis配置文件

          vim /etc/redis/6379.conf#70行,修改bind 項,0.0.0.0監(jiān)聽所有網(wǎng)卡bind 0.0.0.0#137行,開啟守護進程daemonize yes#172行,指定日志文件目錄logfile /var/log/redis_6379.log#264行,指定工作目錄dir /var/lib/redis/6379#288行,指定要同步的Master節(jié)點IP和端口replicaof 192.168.109.12 6379#700行,開啟AOF持久化功能appendonly yes/etc/init.d/redis_6379 restart


          4)驗證主從效果

          #在Master節(jié)點上看日志tail -f /var/log/redis_6379.log

          #在Master節(jié)點上驗證從節(jié)點redis-cli info replication

          #從節(jié)點查看master信息redis-cli info replication

          二、Redis 哨兵模式

          1、哨兵的核心功能:

          在主從復制的基礎上,哨兵引入了主節(jié)點的自動故障轉(zhuǎn)移
          哨兵的啟動依賴于主從模式,所以須把主從模式安裝好的情況下再去做哨兵模式,所有節(jié)點上都需要部署哨兵模式,哨兵模式會監(jiān)控所有的 Redis 工作節(jié)點是否正常,當 Master 出現(xiàn)問題的時候,因為其他節(jié)點與主節(jié)點失去聯(lián)系,因此會投票,投票過半就認為這個 Master 的確出現(xiàn)問題,然后會通知哨兵間,然后從 Slaves 中選取一個作為新的 Master。
          注意:客觀下線是主節(jié)點才有的概念;如果從節(jié)點和哨兵節(jié)點發(fā)生故障,被哨兵主觀下線后,不會再有后續(xù)的客觀下線和故障轉(zhuǎn)移操作。

          2、哨兵模式的原理

          哨兵(sentinel):是一個分布式系統(tǒng),用于對主從結(jié)構(gòu)中的每臺服務器進行監(jiān)控,當出現(xiàn)故障時通過投票機制選擇新的 Master 并將所有 Slave 連接到新的 Master。所以整個運行哨兵的集群的數(shù)量不得少于3個節(jié)點。

          3、哨兵模式的作用

          • 監(jiān)控:哨兵會不斷地檢查主節(jié)點和從節(jié)點是否運作正常。

          • 自動故障轉(zhuǎn)移:當主節(jié)點不能正常工作時,哨兵會開始自動故障轉(zhuǎn)移操作,它會將失效主節(jié)點的其中一個從節(jié)點升級為新的主節(jié)點,并讓其他從節(jié)點改為復制新的主節(jié)點。

          • 通知(提醒):哨兵可以將故障轉(zhuǎn)移的結(jié)果發(fā)送給客戶端。

          4、哨兵模式的結(jié)構(gòu)

          哨兵結(jié)構(gòu)由兩部分組成,哨兵節(jié)點和數(shù)據(jù)節(jié)點:

          • 哨兵節(jié)點:哨兵系統(tǒng)由一個或多個哨兵節(jié)點組成,哨兵節(jié)點是特殊的redis節(jié)點,不存儲數(shù)據(jù)。

          • 數(shù)據(jù)節(jié)點:主節(jié)點和從節(jié)點都是數(shù)據(jù)節(jié)點。

          5、哨兵模式的搭建

          主機操作系統(tǒng)IP地址安裝包
          MasterCentOS7192.168.109.12redis-5.0.7.tar.gz
          Slave1CentOS7192.168.1109.22redis-5.0.7.tar.gz
          Slave2CentOS7192.168.109.33redis-5.0.7.tar.gz

          master 、slave1、slave2

          1)修改 Redis 配置文件

          vim /opt/redis-5.0.7/sentinel.conf#17行,關(guān)閉保護模式protected-mode no#21行,Redis哨兵默認的監(jiān)聽端口port 26379#26行,指定sentinel為后臺啟動daemonize yes#36行,指定日志存放路徑logfile "/var/log/sentinel.log"#65行,指定數(shù)據(jù)庫存放路徑dir "/var/lib/redis/6379"#84行,修改 指定該哨兵節(jié)點監(jiān)控192.168.1109.12:6379這個主節(jié)點,該主節(jié)點的名稱是mymaster,最后的2的含義與主節(jié)點的故障判定有關(guān):至少需要2個哨兵節(jié)點同意,才能判定主節(jié)點故障并進行故障轉(zhuǎn)移sentinel monitor mymaster 192.168.109.12 6379 2#113行,判定服務器down掉的時間周期,默認30000毫秒(30秒)sentinel down-after-milliseconds mymaster 30000#146行,故障節(jié)點的最大超時時間為180000(180秒)sentinel failover-timeout mymaster 180000




          2)啟動哨兵模式(先啟master,再啟slave)

          cd /opt/redis-5.0.7/redis-sentinel sentinel.conf &
          • master

          • slave1、2


          3)查看哨兵模式信息

          redis-cli -p 26379 info Sentinel  #26379是哨兵默認監(jiān)聽端口

          4)故障模擬

          • master

          #查看redis-server進程號[root@master redis-5.0.7]# ps aux | grep redisroot       9052  0.1  0.4 156552  7928 ?        Ssl  08:56   0:08 /usr/local/redis/bin/redis-server 0.0.0.0:6379root      10076  0.3  0.4 153992  7884 ?        Ssl  10:05   0:02 redis-sentinel *:26379 [sentinel]root      10240  0.0  0.0 112828   984 pts/3    S    10:20   0:00 grep --color=auto redis#殺死 Master 節(jié)點上redis-server的進程號,模擬故障kill -9 9052#Master節(jié)點上redis-server的進程號

          5)驗證結(jié)果

          • master

          tail -f /var/log/sentinel.logredis-cli -p 26379 info Sentinel

          三、Redis 群集模式

          1、redis集群

          集群:即Redis Cluster,是Redis 3.0開始引入的分布式存儲方案。
          集群由多個節(jié)點(Node)組成,Redis的數(shù)據(jù)分布在這些節(jié)點中。集群中的節(jié)點分為主節(jié)點和從節(jié)點;只有主節(jié)點負責讀寫請求和集群信息的維護;從節(jié)點只進行主節(jié)點數(shù)據(jù)和狀態(tài)信息的復制

          2、集群的作用

          數(shù)據(jù)分區(qū)

          數(shù)據(jù)分區(qū)(或稱數(shù)據(jù)分片)是集群最核心的功能。
          集群將數(shù)據(jù)分散到多個節(jié)點,一方面突破了Redis單機內(nèi)存大小的限制,存儲容量大大增加;另一方面每個主節(jié)點都可以對外提供讀服務和寫服務,大大提高了集群的響應能力。
          Redis單機內(nèi)存大小受限問題,在介紹持久化和主從復制時都有提及;例如,如果單機內(nèi)存太大,bgsave和bgrewriteaof的fork操作可能導致主進程阻塞,主從環(huán)境下主機切換時可能導致從節(jié)點長時間無法提供服務,全量復制階段主節(jié)點的復制緩沖區(qū)可能溢出。

          高可用

          集群支持主從復制和主節(jié)點的自動故障轉(zhuǎn)移(與哨兵類似);當任一節(jié)點發(fā)生故障時,集群仍然可以對外提供服務。

          3、Redis集群的數(shù)據(jù)分片

          Redis集群引入了哈希槽的概念
          Redis集群有16384個哈希槽(編號0-16383)
          集群的每個節(jié)點負責一部分哈希槽
          每個Key通過CRC16校驗后對16384取余來決定放置哪個哈希槽,通過這個值,去找到對應的插槽所對應的節(jié)點,然后直接自動跳轉(zhuǎn)到這個對應的節(jié)點上進行存取操作

          • 以3個節(jié)點組成的集群為例:
            節(jié)點A包含0到5460號哈希槽
            節(jié)點B包含5461到10922號哈希槽
            節(jié)點C包含10923到16383號哈希槽

          • Redis集群的主從復制模型:
            集群中具有A、B、C三個節(jié)點,如果節(jié)點B失敗了,整個集群就會因缺少5461-10922這個范圍的槽而不可以用。
            為每個節(jié)點添加一個從節(jié)點A1、B1、C1整個集群便有三個Master節(jié)點和三個slave節(jié)點組成,在節(jié)點B失敗后,集群選舉B1位為的主節(jié)點繼續(xù)服務。當B和B1都失敗后,集群將不可用

          4、搭建Redis 群集模式

          redis的集群一般需要6個節(jié)點,3主3從。方便起見,這里所有節(jié)點在6臺服務器上模擬:
          以IP及端口號進行區(qū)分,redis集群模式可以指定端口,不是只能使用6379端口,如果不想改的話也可以全都使用一個端口,這樣創(chuàng)建目錄和修改配置的時候更方便,所有節(jié)點除了監(jiān)聽的ip不一樣以外沒什么不同。

          主機操作系統(tǒng)IP:端口安裝包
          Master1CentOS7192.168.109.7:6501redis-5.0.7.tar.gz
          Master2CentOS7192.168.109.3:6502redis-5.0.7.tar.gz
          Master3CentOS7192.168.109.12:6503redis-5.0.7.tar.gz
          Slave1CentOS7192.168.109.22:6504redis-5.0.7.tar.gz
          Slave2CentOS7192.168.109.33:6505redis-5.0.7.tar.gz
          Slave3CentOS7192.168.109.5:6506redis-5.0.7.tar.gz

          先在六臺服務器上安裝redis數(shù)據(jù)庫

          所有節(jié)點

          1)創(chuàng)建并復制相關(guān)文件

          cd /etc/redis/#創(chuàng)建文件,文件名要根據(jù)端口創(chuàng)建,方便區(qū)別(6501\6502\...6506)mkdir -p redis-cluster/redis6501 cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis6501/cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis6501/

          master1

          2)修改配置文件,開啟群集功能

          #注意文件名,IP,端口cd /etc/redis/redis-cluster/redis6501vim redis.conf#69行,修改bind項,監(jiān)聽自己的IPbind 192.168.109.7#88行,修改,關(guān)閉保護模式protected-mode no#92行,修改,redis監(jiān)聽端口port 6501#136行,以獨立進程啟動daemonize yes#699行,修改,開啟AOF持久化appendonly yes#832行,取消注釋,開啟群集功能cluster-enabled yes#840行,取消注釋,修改,群集名稱文件設置cluster-config-file nodes-6501.conf#846行,取消注釋,群集超時時間設置cluster-node-timeout 15000








          master1節(jié)點上配置好的文件復制到其他節(jié)點

          scp /etc/redis/redis-cluster/redis6501/redis.conf root@192.168.109.3:/etc/redis/redis-cluster/redis6502/redis.confscp /etc/redis/redis-cluster/redis6501/redis.conf root@192.168.109.12:/etc/redis/redis-cluster/redis6503/redis.confscp /etc/redis/redis-cluster/redis6501/redis.conf root@192.168.109.22:/etc/redis/redis-cluster/redis6504/redis.confscp /etc/redis/redis-cluster/redis6501/redis.conf root@192.168.109.33:/etc/redis/redis-cluster/redis6505/redis.confscp /etc/redis/redis-cluster/redis6501/redis.conf root@192.168.109.5:/etc/redis/redis-cluster/redis6506/redis.conf

          除master1外的節(jié)點
          改動不同點

          cd /etc/redis/redis-cluster/redis6502vim redis.conf#69行,修改bind項,監(jiān)聽自己的IPbind 192.168.109.3#92行,修改,redis監(jiān)聽端口port 6502#840行,取消注釋,修改,群集名稱文件設置cluster-config-file nodes-6502.conf



          所有節(jié)點

          3)啟動redis節(jié)點

          #每臺服務器進入對應的文件中,執(zhí)行命令cd /etc/redis/redis-cluster/redis6501/redis-server redis.confps -ef |  grep redis

          master1

          4)啟動集群

          redis-cli --cluster create 192.168.109.7:6501 192.168.109.3:6502 192.168.109.12:6503 192.168.109.22:6504 192.168.109.33:6505 192.168.109.5:6506 --cluster-replicas 1

          5)測試群集

          redis-cli -h 192.168.109.7 -p 6501 -c   #加-c參數(shù),節(jié)點之間就可以互相跳轉(zhuǎn)cluster slots#查看節(jié)點的哈希槽編號范圍set test zhangsancluster keyslot test#查看name鍵的槽編號



           

          來源:https://www.icode9.com/content-2-878151.html
          本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          一文掌握Redis的三種集群方案
          Redis高可用-主從,哨兵,集群
          關(guān)于redis的主從、哨兵、集群
          教會你搭建Redis集群和MySQL主從同步(非Docker)
          4種 Redis 集群方案介紹+優(yōu)缺點對比
          Redis ~ 數(shù)據(jù)庫的幾種常見用法(主從復制、高可用、集群)
          更多類似文章 >>
          生活服務
          分享 收藏 導長圖 關(guān)注 下載文章
          綁定賬號成功
          后續(xù)可登錄賬號暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點擊這里聯(lián)系客服!

          聯(lián)系客服