Redis3.2.11主從叢集模式
阿新 • • 發佈:2018-12-24
本文一切安裝、測試、開發均以上一穩定版本3.2.11為準,不建議採用Windows版本,因為Redis官方沒有任何宣告支援Windows版本,市面上的Windows版本為微軟XX開源小組維護。
單機安裝
安裝
安裝環境:CentOS 6.5 x86_64版本,理論上CentOS6.x/RHEL 6.x的安裝方式一樣。但極可能不適用於CentOS 7.x/RHEL 7.x版本。
執行命令如下tar -zxvf redis-3.2.11.tar.gz
cd redis-3.2.11
make
#下面這一句最好執行,意思是測試,驗證環境是否正確
make test
執行命令完成之後,會在src目錄下生產redis-server 和redis-cli檔案.
注意:如果執行命令期間出現錯誤(請見下文常見錯誤),請修復錯誤之後,刪除redis-3.2.11目錄,重新解壓安裝包,重新執行上述步驟。
基礎配置
請使用FTP將上述檔案下載到本地,然後用記事本或EditPlus開啟,
修改以下兩行(修改之前注意備份)
#前面增加#,即將此行註釋掉
bind 127.0.0.1
去掉前面的# ,修改為requirepass solution(設定redis連線密碼)
#requirepass foobared
#修改為 daemonize yes 以使redis在後臺以守護程序的方式執行
daemonize no
#在“”中填入日誌檔案路徑,如
#logfile “/home/peter/redis/redis-3.2.11/log/redis.log” 注意保證路徑存在
logfile ""
修改儲存後,通過FTP上傳覆蓋掉原有檔案。
啟動
cd src
./redis-server ../redis.conf
#啟動客戶端工具 ,可以重新開啟一個terminal視窗
#cd 到 redis-3.2.11/src 目錄下
./redis-cli
SET name redis-server
GET name
啟動結果校驗
tail -f log/redis.log
可以看到啟動日誌
停止
在啟動命令視窗 ctrl + c 或者直接殺掉程序,如下ps -aux|grep redis
#通過上述命令檢視程序ID
kill -9 程序ID
常見錯誤
1.make[2]: cc: Command not found 或者 gcc: Command not found異常原因:沒有安裝gcc
解決方案:yum install gcc
2. couldn't execute "tclsh8.5": no such file or directory
異常原因:沒有安裝tcl
解決方案:yum install tcl。
3.
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
將make命令 替換為 make MALLOC=libc
啟動報警的解決
http://blog.csdn.net/a491857321/article/details/52006376
筆者Redis的實際專案經驗也不豐富,這些警告的嚴重後果不得而知,建議按照上文連線修改。有經驗的朋友歡迎指教。
主從叢集模式
三臺虛擬機器,IP分別為192.168.137.200 ~ 202其中200規劃為Master,其餘兩個為Slave
三臺虛擬機器均作為Redis Sentinel的節點,即整體結構如下:
Redis Server配置和啟動
Redis-3.2.11/redis.conf檔案,在基礎配置之上,增加如下配置:masterauth
#設定Master訪問密碼,因為failover之後,Master也會作為Slave,所以Master\Slave均需配置此項
masterauth solution
slaveof
#在兩個Slave的redis.conf中,配置Slave項
slaveof 192.168.137.200 6379
按照啟動中的說明,依次啟動Master、Slave節點。注意必須先啟動Master節點。Slave節點彼此之間無順序要求。
Redis Sentinel配置
在Master/slave01/slave02三臺機器上,均修改如下檔案安裝路徑/Redis-3.2.11/sentinel.conf.
Monitor配置
查詢配置項sentinel monitor mymaster 127.0.0.1 6379 2
修改為(僅變化IP,注意mymaster不需要變,一旦修改,需要同時修改若干關聯配置)
sentinel monitor mymaster 192.168.137.200 6379 2
配置說明如下
https://redis.io/topics/sentinel (Configuring Sentinel)
Master密碼配置
# sentinel auth-pass <master-name> <password>
取消註釋#,修改為(配置Master訪問密碼)
sentinel auth-pass mymaster solution
關閉保護模式(預設本地才能訪問,不關閉則多臺機器之間Sentinel無法通訊,無法選舉,無法發生failover)
protected-mode no
日誌和守護程序
增加如下配置項,意思等同於Redis-Server的配置,不做贅述
daemonize yes
logfile "/usr/local/redis-3.2.11/log/sentinel.log"
其餘配置項採用預設配置即可。
然後在三臺機器上(不分先後順序),分別執行以下命令以啟動哨兵程序
# cd 到redis安裝目錄
#啟動哨兵程序
src/redis-sentinel sentinel.conf
#檢視啟動日誌
tail -f log/sentinel.log
主備叢集搭建完畢!
驗證
1.停掉master節點,可直接殺掉程序 kill -9 xxxx2.檢視任意Sentinel的日誌 tail -f log/sentinel.log ,裡面會有+sdown/+odown/failover資訊
3.檢視原slave01/slave02的節點資訊 src/redis-cli info, 找到Replication段落,檢視Role屬性,是否其中一臺變成了Master
4.重新啟動原master節點, src/redis-server redis.conf
5.檢視任意Sentinel的日誌,tail -f log/sentinel.log
6.檢視剛啟動的原master節點資訊,src/redis-cli info, 找到Replication段落,檢視Role屬性,值應該為Slave