天天看點

centos7下安裝redis叢集(一主兩從,三哨兵)

環境說明:

1.centos7
2.redis的版本資訊:redis-5.0.5
叢集的環境資訊
角色 IP位址 端口号 redis的安裝目錄 redis的配置檔案位置 哨兵的配置檔案位置
主庫 192.168.234.158 6379 /root/soft/redis-5.0.5 /usr/local/bin /usr/local/bin
從庫一 192.168.234.159 6379 /root/soft/redis-5.0.5 /usr/local/bin /usr/local/bin
從庫二 192.168.234.160 6379 /root/soft/redis-5.0.5 /usr/local/bin /usr/local/bin

說明:redis的安裝,預設的安裝位置都是/usr/local/bin/目錄下,但是剛安裝完redis時的redis的redis.conf和哨兵的配置檔案sentinel.conf都是在你解壓的redis的目錄下;

如圖所示;

centos7下安裝redis叢集(一主兩從,三哨兵)

手動的把兩個配置檔案拷貝到/usr/local/bin/目錄下,這樣做可以友善的管理配置檔案

如下圖所示,這裡的檔案比較少

centos7下安裝redis叢集(一主兩從,三哨兵)

第一步:安裝前的準備工作

1.關閉centos7的防火牆,實際生産的環境可以對外開放端口号
2.安裝gcc的環境

指令:yum install gcc gcc-c++

确認是否安裝成功

指令:gcc -v

centos7下安裝redis叢集(一主兩從,三哨兵)

第二步:開始安裝redis

上傳redis-5.0.5.tar.gz的安裝包到soft檔案夾下

我用的是rz的上傳方式,如果你的rz指令不好用,看我的安裝指令或者利用其它上傳工具

安裝rz的指令:yum -y install lrzsz

centos7下安裝redis叢集(一主兩從,三哨兵)

解壓這個安裝包到目前的目錄下

解壓指令:tar -zxvf redis-5.0.5.tar.gz

解壓成功後,顯示如下,生成了一個redis-5.0.5檔案夾

centos7下安裝redis叢集(一主兩從,三哨兵)

然後進入這個目錄下,直接編譯即可

指令:make

centos7下安裝redis叢集(一主兩從,三哨兵)

其實上面的這些步驟就可以了,redis就成功安裝了,你可以試着啟動一下,在目前目錄下執行下面的這個指令

啟動redis的指令:redis-server

驗證redis是否正常啟動

指令:ps -ef|grep redis

第三步:克隆其它兩台機器

克隆的步驟

1.關閉目前的機器,在機器名上右鍵選擇管理,在選擇克隆

如圖所示;

centos7下安裝redis叢集(一主兩從,三哨兵)

點選下一步;

centos7下安裝redis叢集(一主兩從,三哨兵)

點選下一步,這裡預設的是選擇建立連結克隆,但是我們要建立完整的克隆

centos7下安裝redis叢集(一主兩從,三哨兵)

選擇完整克隆後,選擇下一步,填寫你要起的虛拟機的名稱和你要安裝虛拟機的位置

centos7下安裝redis叢集(一主兩從,三哨兵)

第四步:修改redis的配置檔案redis.conf

修改redis.conf的配置檔案為

主機器的配置檔案修改如下 配置檔案解釋
#bind 127.0.0.1 這一行注釋掉就可以了,才能實作不同機器間的通信
daemonize no 改成 yes 意思是背景運作
logfile “/usr/local/src/redis-5.0.5/log/server.log” 這一行是配置redis的日志檔案
masterauth “123456” 配置密碼為123456
requirepass “123456” 配置密碼為123456

兩台從機器redis的配置檔案redis.conf修改如下

從機器的配置檔案修改如下 配置檔案解釋
#bind 127.0.0.1 這一行注釋掉就可以了,才能實作不同機器間的通信
daemonize no 改成 yes 意思是背景運作
logfile “/usr/local/src/redis-5.0.5/log/server.log” 這一行是配置redis的日志檔案
masterauth “123456” 配置密碼為123456
requirepass “123456” 配置密碼為123456
slaveof 192.168.234.158 6379 依賴的主機IP和端口号
注意:1.從機器redis的配置檔案比主機器多了一個slaveof 的配置
2.主機器和從機器的密碼要設定成一樣,要不然後面的設定的哨兵就會有問題

第五步:啟動各個節點的redis,看是否能實作通信

redis.conf的配置檔案已經改好了,可以拷貝到/usr/local/bin/目錄下

然後以配置檔案的方式啟動三個節點的redis的服務端

指令:redis-server redis.conf

192.168.234.158 的機器(主),在usr/local/bin/下直接以加載配置檔案的方式啟動

centos7下安裝redis叢集(一主兩從,三哨兵)

同樣的方式,啟動192.168.234.159 的機器(從),192.168.234.160 的機器(從)

centos7下安裝redis叢集(一主兩從,三哨兵)

然後用用戶端連接配接

指令:redis-cli -c -h 127.0.0.1 -p 6379

-c的意思是以叢集的方式啟動,-h是連接配接哪個服務端,-p是連接配接哪個端口

在158的機器上啟動連接配接159的用戶端

指令:redis-cli -c -h 192.168.234.159 -p 6379

因為我們設定的密碼,是以登入時需要輸入密碼

指令:auth + 你設定的密碼

centos7下安裝redis叢集(一主兩從,三哨兵)

在159的機器上啟動連接配接160的用戶端

指令:redis-cli -c -h 192.168.234.160 -p 6379

因為我們設定的密碼,是以登入時需要輸入密碼

指令:auth + 你設定的密碼

centos7下安裝redis叢集(一主兩從,三哨兵)

在160的機器上啟動連接配接158的用戶端

指令:redis-cli -c -h 192.168.234.158 -p 6379

因為我們設定的密碼,是以登入時需要輸入密碼

指令:auth + 你設定的密碼

centos7下安裝redis叢集(一主兩從,三哨兵)

第六步:檢視角色資訊

輸入指令role可以檢視目前機器的角色,輸入指令info replication可以看到詳細的資訊

說明:我現在的主是160,是因為我把主機器殺掉了(158被我幹掉了),從新選擇的主

在158的機器上輸入role,可以檢視目前的角色是從機器,現在是連接配接的159的服務端,現在代表159的機器是從機器

centos7下安裝redis叢集(一主兩從,三哨兵)

說明:role: 代表目前連接配接的服務端是主還是從

master_host:192.168.234.160 代表目前的主機器是160

master_link_status:up 代表主機器是啟動着的

connected_slaves:0 代表目前連接配接這個機器的從機器,因為目前的機器是從機器,是以這個數字為0

在159的機器上輸入role,可以檢視目前的角色是從機器,現在是連接配接的160的服務端,現在代表160的機器是主機器

centos7下安裝redis叢集(一主兩從,三哨兵)

說明:role:master 代表目前連接配接的服務端是主機器

connected_slaves:2 代表目前連接配接這個機器的從機器,因為目前的機器是主機器,是以這個數字為2

centos7下安裝redis叢集(一主兩從,三哨兵)

第七步:測試一主兩從的通信

首先,先檢視redis中的資料

指令:keys *

centos7下安裝redis叢集(一主兩從,三哨兵)

設定一個key,value,因為目前的機器是從機器,是以不讓寫

centos7下安裝redis叢集(一主兩從,三哨兵)

在159的機器上設定一個key,value,159的機器連接配接的是160的服務端,代表主機器

centos7下安裝redis叢集(一主兩從,三哨兵)

然後去158的機器和160的機器上去檢視,redis中是否有資料

158上有資料了,測試通過

centos7下安裝redis叢集(一主兩從,三哨兵)

160上也有資料了,測試通過

centos7下安裝redis叢集(一主兩從,三哨兵)

現在把主幹掉,看下有什麼效果

centos7下安裝redis叢集(一主兩從,三哨兵)

在158上設定一個key,暫時是設定不了的

centos7下安裝redis叢集(一主兩從,三哨兵)

在160上設定一個key,暫時是設定不了的

centos7下安裝redis叢集(一主兩從,三哨兵)

注意:

1、如果沒有把slaveof 參數配置到參數檔案中,從庫重新開機後需要重新slaveof;即從庫會變成主庫(沒有配置slaveof參數檔案)

2、在主從搭建完成後,後面添加的從庫slaveof後,會自動把資料從主庫同步過來,生産上會有一定的性能影響。

3、從機隻有讀的權限,主機才能夠寫操作。當主機器挂掉後,我們發現,叢集已經不行了,是以下面引入哨兵模式

下面示範手動的解決上面問題

Master 挂掉slave變master(反客為主)

在160的機器上,手動的執行這個操作,這時是連接配接的158的伺服器

指令:slaveof no one

然後再檢視這個角色資訊,已經變成主機器了

centos7下安裝redis叢集(一主兩從,三哨兵)

第八步:配置哨兵模式

Redis的哨兵(sentinel) 系統用于管理多個 Redis 伺服器,該系統執行以下三個任務:

監控(Monitoring): 哨兵(sentinel) 會不斷地檢查你的Master和Slave是否運作正常。

提醒(Notification):當被監控的某個 Redis出現問題時, 哨兵(sentinel) 可以通過 API 向管理者或者其他應用程式發送通知。

自動故障遷移(Automatic failover):當一個Master不能正常工作時,哨兵(sentinel) 會開始一次自動故障遷移操作,它會将失效Master的其中一個Slave更新為新的Master, 并讓失效Master的其他Slave改為複制新的Master;如果修複好的master重新啟動後,原master變成slave。

哨兵的配置檔案我已經拷貝到/usr/local/bin/目錄下

centos7下安裝redis叢集(一主兩從,三哨兵)

修改三台機器的哨兵的配置檔案如下;

protected-mode no 把這行打開,讓三個哨兵可以通信

sentinel monitor mymaster 192.168.234.158 6379 2 這裡配置的都是主機器的IP位址

sentinel auth-pass mymaster 123456 這裡是配置叢集的密碼

然後啟動三台機器的哨兵;在/usr/local/bin/目錄下,執行指令

指令:redis-server sentinel.conf

centos7下安裝redis叢集(一主兩從,三哨兵)

現在讓主機器挂掉,看叢集的狀态,158的機器已經變成主了,159的機器是它的從機器

centos7下安裝redis叢集(一主兩從,三哨兵)

看159機器上的詳細資訊,159是從機器了,顯示的主是158,主機器的狀态是活躍的

centos7下安裝redis叢集(一主兩從,三哨兵)

在158(主)上插入一條記錄,看叢集的通信狀态

centos7下安裝redis叢集(一主兩從,三哨兵)

在159上檢視這條記錄是否存在

centos7下安裝redis叢集(一主兩從,三哨兵)

160的機器已經挂掉了,讓我們重新開機啟動下,看是否能實作資料的通信,如下圖所示,可以實作通信

centos7下安裝redis叢集(一主兩從,三哨兵)