搭建Redis簡易叢集實現主從複製和讀寫分離

怪力烏龜發表於2020-11-11

redis不禁支援去中心化的叢集模式,也可以實現主從複製叢集。下面我將一步步搭建一套簡易的主從複製叢集,幫助大家理解主從複製和哨兵模式。

1. Redis的下載安裝

請參考:Linux(centos7)安裝配置並啟動Redis全過程及make報錯問題解決

2. 主從複製模型

在這裡插入圖片描述
我畫了個草圖,這是一個一主二從的簡易叢集模型,master用來寫入,slave用來讀資料,實現讀寫分離。我們接下來就是要實現這樣一個叢集系統。

3. 叢集環境搭建

我這裡使用了一臺centos7的虛擬機器來搭建這個demo,所需環境就是:
JDK,linux,Redis就夠了。

複製多個redis.conf檔案,啟動redis服務端使用不同的配置檔案啟動,即可模擬多服務

1. 啟動你的redis服務,輸入info replication命令檢視當前庫的資訊

127.0.0.1:6379> info replication
# Replication
role:master              //當前庫為master
connected_slaves:0       //連線當前master的從機數目為0
master_replid:7b7cb8aa6a54e4fb2b717e59d6d626578c7b7f3f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

叢集部署後可以通過此命令檢視資訊。

2. 新建conf目錄,將redis配置檔案拷貝三次放進conf目錄

[root@localhost bin]# mkdir conf
[root@localhost bin]# cp redis.conf conf/redis6380.conf
[root@localhost bin]# cp redis.conf conf/redis6381.conf
[root@localhost bin]# cp redis.conf conf/redis6382.conf

這樣我們就得到了三份配置檔案,下面我們對它們做一點更改

3. 更改主機配置檔案

我們把redis6380.conf配置為主機(master)
進入conf目錄,vim redis6380.conf編輯配置檔案

  1. 首先我們需要更改埠號,與配置檔名稱對應
    在這裡插入圖片描述
  2. 後臺執行記得改成yes
    在這裡插入圖片描述
  3. 更改pid 檔名稱,避免重複
    在這裡插入圖片描述
  4. 更改log檔名稱避免重複
    在這裡插入圖片描述
  5. 更改rdb檔名,避免重複
    在這裡插入圖片描述

4. 更改從機配置檔案,參考主機更改方式

和主機更改的地方全都是一樣的,我們可以把埠分別設定成6381和6382。log檔案和rdb檔案同樣改一下,避免重名。

5. 分別啟動

我們可以啟動多個命令終端來分別開啟他們,或者使用Xshell多個tab頁面。
每一個執行以下命令(注意更改埠號):
在這裡插入圖片描述
全部啟動之後,檢視程式資訊再次確認ps -ef|grep redis
在這裡插入圖片描述
上圖說明全部的服務都已經成功開啟了,叢集環境搭建完畢。

4. 配置主從複製

現在我們可以在每個服務輸入info replication,你會發現現在三臺redis都是主機,而且他們之間沒有任何聯絡。我們需要手動配置。

  • 開啟6381的客戶端,使用slaveof命令,為它指定主機。然後info replication就會發現它的身份變成了從機。
    在這裡插入圖片描述
    同樣的,為6382指定6380為主機,這樣基本上已經形成了一主二從的局面,其中6380為共同的主機,6381/6382都是從機。
    大家可以在分別的客戶端進行一點資料的讀寫操作,你會發現主機可讀可寫,從機只讀,他們之間資料共享。

下一篇我們將為他們配置哨兵機制,以備主機當機的特殊情況發生。

相關文章