高併發解決方案 -- Redis主從複製集羣部署

       昨天給大家介紹了以下Redis的一些基礎知識、常用的數據類型以及數據持久化的兩種方式。同時對於Redis中的事務也做了一個簡單的介紹,相信大家對Redis已經有了一個全面的認識。今天我們就來學習一下Redis的集羣部署。

     首先我們先來準備好虛擬機,這裏使用的CentOS7環境。下面來看具體的操作。首先我們準備好配置文件。這裏先來說明一下我們今天大家的集羣環境的架構如下圖所示:

 

大家可以看到上述架構圖中有三個節點,其中主節點用來寫數據,在將數據同步到從節點上去,讀數據都是從兩個從節點讀。這種模式就是我們常說的Redis的主從複製。關於主從複製這裏先給大家簡單說以下這樣做的好處,

       首先 我們都知道如果我們這樣分離開來的話,主服務器就可以更好的專注於寫操作,可以配置更適合寫操作的工作模式。而從服務器專注於讀操作,可以用更適合讀取數據的模式工作。 這樣一來就可以很大限度的提高彼此的生產力。

      其次,主從的模式可以有效地避免單點故障帶來的問題,因爲有數據同步的機制,各服務器之間的數據可以保持一致,即便是掛掉了一臺服務器也不會造成數據的丟失,這也就相當於一個集羣的環境。

好了,我們先來說一下本次的配置規劃。首先我們在/usl/local目錄下創建一個cluster-redis的目錄,該目錄就是redis的集羣工作目錄

接着,我們將redis.conf文件複製三份到目錄下,分別取名redis9000.conf、 redis9001.conf、 redis9002.conf.如下圖所示:

我們先來修改第一個配置文件,主要修改的有5個地方,端口、守護進程啓動、工作目錄、pid文件、日誌文件、以及RDB文件,具體的信息修改如下圖所示:

   

 

好了,我們將上述的三個文件分別修改成9000、9001、9002三個,到時候服務啓動的端口分別就是這幾個。配置完成之後我們依次啓動上述三個實例,啓動後可以使用ps命令查看一下是否啓動成功。

 

啓動成功之後我們可以登錄到9000的服務, 我們使用info replication命令查看一下主從關係

同樣的,我們再登上另外兩個也看看,如下圖所示:

 

         

 

我們發現了一個問題,他們都把自己當成了主節點,因此我們在這裏需要指定一下具體的 主從關係,我們分別再9001和9002這兩個服務上執行下面這條命令,

   

接下來我們,我們來看一下9000這個服務。

我們發現這個時候9001和9002已經成了9000這個服務的從節點了,到這裏我們的集羣已經初步搭建完畢了。下面我們來試試怎麼去寫入數據。首秀按我們在主節點上寫入數據:

接着我們在兩個從節點上讀數據試試:

                   

我們發現在主節點上寫入的數據都可以查到,初步的主從複製功能至此搭建完畢。好了我們接下來看一下 如果主節點突然掛掉了,那麼兩個從節點該怎麼辦呢?首先我們來將主節點shutdown掉

  

接着我們再來 啓動一下9000服務,然後查了看一下信息:

     

我們可以看到,master_link_status變成了up   這個時候就是主節點已經啓動了。 我們從這裏可以知道兩個從節點對主節點是非常忠誠的,即便主節點死了,他們還在默默的守候着主節點復活。接下來我們看看如果從節點掛掉了一個之後會發生什麼事。

我們先來停掉一個從節點,

我們查看主節點上的信息 發現之剩下一個從節點了,這個時候我們再來把剛纔關掉的從節點啓動,再來看看他的信息

我們發現他變成了自己的主節點,我們在接着在主節點中添加一條數據試試,

      

我們發現9001並沒有同步該數據,這個時候我們就需要在配置一下9001的主從關係,我們繼續在9001下指定一個主節點,

我們再查看數據,發現數據已經可以正常的讀取了。好了上面的就是Redis主從複製的特點。最後Redis還有一個機制,叫做哨兵模式。但是現在已經很少在使用了,基本都是通過腳本去監測主節點的運行狀態了。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章