1. 部署Redis集群說(shuō)明
???? 需要用到6臺(tái)主機(jī)舌仍,所以采用Redis Replication + Redis Sentinel實(shí)現(xiàn)主從復(fù)制與故障轉(zhuǎn)換僧须。采用1 master 2 slave 3 sentinel(一主二從三哨兵)模式。3個(gè)sentinel是為了保證其中一個(gè)sentinel和主主機(jī)掛掉后睦疫,其它2個(gè)檢測(cè)到并且同意后才會(huì)實(shí)現(xiàn)故障轉(zhuǎn)移开睡。如果總共只有2個(gè)sentinel的話因苹,只能設(shè)置一個(gè)sentinel同意轉(zhuǎn)移(具體設(shè)置文中會(huì)提到),那么可能會(huì)引起不必要的沖突篇恒。
????? Redis簡(jiǎn)介:Redis是一個(gè)key-value存儲(chǔ)系統(tǒng)扶檐。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)很多其它胁艰。包含string(字符串)款筑、list(鏈表)、set(集合)腾么、zset(sorted
set --有序集合)和hash(哈希類型)奈梳。為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中解虱。
2. 下載Windows 版Redis
?????? 由于Redis官網(wǎng)沒(méi)有提供Windows版本攘须,下載微軟提供的 Redis-x64-3.2.100 解壓包,下載Url:https://pan.baidu.com/s/1mi3QB4O殴泰。 三臺(tái)主機(jī)都需要安裝于宙。例如主主機(jī)IP 192.168.38.204 ,從主機(jī)IP 192.168.38.205悍汛,從主機(jī)IP 192.168.38.206為例(一主二從三哨兵)捞魁。
3. 在主主機(jī)中,解壓后去根目錄离咐,打開(kāi)redis.windows.conf文件谱俭,將默認(rèn)的bind 127.0.0.1修改為主機(jī)的真實(shí)IP,如下:
4. 配置從主機(jī) 192.168.38.205 (192.168.38.206一樣配置)
?????? 解壓后去根目錄,打開(kāi)redis.windows.conf文件昆著,將默認(rèn)的bind 127.0.0.1修改為主機(jī)的真實(shí)IP县貌,如下:
添加以下,關(guān)聯(lián)主主機(jī)的Redis
至此宣吱,Redis主從配置完成窃这,數(shù)據(jù)會(huì)實(shí)時(shí)進(jìn)行同步
5. 以下為配置Sentinel進(jìn)行故障轉(zhuǎn)移
3個(gè)Sentinel的部署主機(jī)分別IP為:192.168.36.227, 192.168.36.228征候,?192.168.36.229
6.配置Sentinel (三臺(tái)配置方式一致)
??????? 解壓后去根目錄杭攻,新建sentinel文件夾并且在文件夾中新建sentinel.conf文件并打開(kāi),插入如下信息:
bind 192.168.38.205
port 26379
dir sentinel
sentinel monitor mymaster 192.168.38.204 6379 2???? //這里的2代表需要2臺(tái)sentinel同意才實(shí)現(xiàn)轉(zhuǎn)移
sentinel down-after-milliseconds mymaster 60000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
7. 將Redis設(shè)置為開(kāi)機(jī)自啟動(dòng)(2選1)
?1.根目錄執(zhí)行redis-server --service-install redis.windows.conf添加到服務(wù)中疤坝。如圖在系統(tǒng)服務(wù)中可見(jiàn)
2. 使用Windows工作排程器
將Sentinel設(shè)置為開(kāi)機(jī)自啟動(dòng)兆解。新建一個(gè)bat文件,輸入以下內(nèi)容跑揉,在排程內(nèi)設(shè)置為開(kāi)機(jī)自執(zhí)行锅睛。
C:
cd C:\
cd C:\redis
redis-server.exe ?sentinel/sentinel.conf --sentinel
8. 測(cè)試:先啟動(dòng)主主機(jī)Redis,然后啟動(dòng)從主機(jī)Redis历谍,最后啟動(dòng)Sentinel现拒,
Redis啟動(dòng)命令為:根目錄中執(zhí)行redis-server.exe ?redis.windows.conf或者在系統(tǒng)服務(wù)中啟動(dòng)
Sentinel啟動(dòng)命令為:根目錄中執(zhí)行redis-server.exe ?sentinel/sentinel.conf --sentinel
(注意:是cmd打開(kāi)控制臺(tái),cd到根目錄執(zhí)行命令)
9. 啟動(dòng)后可用RedisDesKtopManager可視化工具進(jìn)行查看數(shù)據(jù)是否同步
10. 測(cè)試故障轉(zhuǎn)移:在主主機(jī)Redis根目錄中執(zhí)行:redis-cli.exe -h 192.168.38.204 -p 6379進(jìn)入主主機(jī)Redis望侈,同理另外打開(kāi)一個(gè)cmd并執(zhí)行redis-cli.exe -h 192.168.38.205 -p 6379 進(jìn)入192.168.38.205中的Redis印蔬,進(jìn)入不同IP的Redis后查看當(dāng)前Redis的信息,如圖:
注意:截圖中的205主機(jī)采用的端口是6380脱衙,請(qǐng)以實(shí)際設(shè)置的端口為準(zhǔn)
可以看出當(dāng)前204為主主機(jī)侥猬,205為從主機(jī)
10.關(guān)閉主主機(jī)的Redis
11. 當(dāng)Sentinel監(jiān)聽(tīng)到主主機(jī)斷開(kāi)時(shí),當(dāng)30秒內(nèi)(時(shí)間在新建的sentinel.conf進(jìn)行設(shè)置)確認(rèn)無(wú)法從新連接后捐韩,會(huì)自動(dòng)切換從主機(jī)為主主機(jī)退唠,sentinel輸入如下
12. 至此,205切換為主主機(jī)
???? 204切換為從主機(jī)
至此荤胁,測(cè)試完成