redis的部署方式


一、幾種部署方式的介紹

redis 有4種部署方式:單機,主從,哨兵,集群

1、單機

優點:部署方便,可用於本地開發,或對數據要求不高的,開發環境等

缺點:

  • 不能保證數據的可靠性
  • 性能瓶頸

2、主從

2.1 master-slave 的方式

一台master, 多台slave, master 負責讀寫和向slave同步數據,slave負責只讀和同步master的數據(所以它的同步機制怎樣實現的?主從是怎樣同步的)

主從關系:一主多從,但不能一從多主。

 

2.2 同步機制

要解決回答的問題包括:

    • 主從怎樣實現同步呢:見2.2.1
    • 怎樣確定主從:見2.2.1
    • 同步包括全量同步,增量同步,同步的觸發機制(master 或 slave 知道什么時候要去進行同步?)
    • 如果master掛了會怎么辦 見2.2.3
    • master 掛掉后,怎樣恢復 見2.2.4
    • 有多個slave要同步,會不會影響master的寫性能?: 會的,所以這也是主從的一個缺點之一
    • 主從和集群可以一起部署嗎,多個master當成一個master:
    • 向slave進行寫操作,會怎樣:不能寫
    • 復制和同步會比較影響Master 的性能,可以怎樣做:設為為主-從-從模式。或樹狀模式。

 

2.2.1 如何進行第一次同步,怎樣建立主從關系

  • 先按單機部署幾台,然后,在slave機子,執行,replicaof ip:port 進行確定主從關系,之后確定主從關系后,就開始進行全量同步和后面的長連接,增量同步。
  • 比如現在有3台機子 ,192.168.1.100, 192.168.1.101, 192.168.1.102 其中想把 192.168.1.100 做 master, 另外兩台機子做 slave,那么
  • 首先,把3台機子,都單獨部署,啟動,這個時候,他們相互沒有關系,
  • 進入隨便一台機子(要進行主從,這三台機子必須是同個網段,相互可以聯通), bin/redis-cli -h 192.168.1.101 -p 6379 連接到 101 的redis
  • 然后執行: REPLICAOF  192.168.1.100 6379 (這個時候,101 就變成了 100 的slave,創建連接的首次,會進行全量同步)
  • 對於 102 的機子,同理,使用redis-cli 連接到102,然后使用指令:REPLICAOF  192.168.1.100 6379 也可以創建102 與 100 的 關聯。

 

2.2.2 

 

2.2.3 master 掛掉后會怎樣

如果Master 宕機后,就需要人工介入,進行錯誤轉移,重新指定Master,把從變主。

 

2.2.4 master 掛掉后,怎樣恢復

master 掛掉之后,slave 是不能寫的,要重新指定master才行。

先脫離slave1之前與master 的關系:REPLICAOF NO ONE

這個時候,slave1 是可以重新寫數據了,然后再把slave2關聯到新的master(即slave1)

這個時候,就變成一主一從了。

 

 

 

3、哨兵

哨兵模式是在主從的基礎上做的一種加強模式,主從有一個致命的缺陷:當master宕掉之后,需要人為介入去處理。哨兵模式就是針對這個缺陷做的加強,當master宕掉之后,會自動從各個slave中選出新的master,從中不需要人為介入。保證了相對的健壯性。但原來主從的性能缺點是沒有得到優化的。

 

3.1 一些概念

哨兵:

  • 是一種redis的“特殊”節點,不存儲數據。我現在是一個節點對就一個哨兵,有多少個節點,就放多少個哨兵。
  • 哨兵,默認端口是26379, 所以它也是要起一個進程的,這個哨兵進程是用於監測,心跳檢測,選舉等用途。有點像,emmm,加個保護。

節點:master 和 slave 都可以叫節點。

 

3.2 哨兵配置

1、哨兵配置文件:sentinel.conf, 幾個重要的參數

  • protected-mode no: 保護模式關閉一下
  • port 26379: 這個是哨兵進程的端口,默認26379
  • sentinel monitor mymaster 127.0.0.1 6379 2 表示哨兵監聽的master是本機端口6379的進程,並且要至少超過2個從節點認為master 掛了,才能開始新的選舉
  • sentinel down-after-milliseconds mymaster 10000  超過10000ms, master節點沒反應,才認為master 是掛了

 

3.3 哨兵配置啟動

按主從方式啟動好 master 和幾個 slave后,

再執行:

./redis-server /etc/sentinel.conf --sentinel
就可以啟動哨兵了。(這個是每個節點都要去啟動一下的,比如三個節點 192.168.10.1/2/3 這三個節點,都需要啟動一下這個哨兵進程)
 
這個時候,使用 redis-cli 連接到master 節點,輸入 SHUTDOWN, 把 master 節點宕掉,過一會,發現另外兩台機子會重新選舉出新的master ,服務依然是可用的。
 
附:服務啟動過程中,sentinel.conf 會被添加修改,比如重新選取master節點,相關信息會追加到配置文件的后面。
 

3.4 哨兵總結

加強型的主從。添加了監控的主從模式。配置起來反而會比較麻煩。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM