Docker下redis的主從、持久化配置
redis是k-v型nosql資料庫,支援字串(string)、列表(list)、集合(set)、雜湊(hash)、有序集合(zset:形如member:score的雜湊集合,其中member為成員,score為成員得分,必須為float型資料)。
綜合使用redis的以上5種資料型別,可以將redis應用於各種場景,比如點贊、投票網站、訊息佇列、分散式鎖(使用setnx指令,該指令只有在key不存在的時候,才會執行寫入操作)、檔案分發(沒研究過)、日誌記錄等等。
redis支援主從配置(擴充讀效能,主機負責讀取、寫入,從機只負責讀取,主機自動向從機以rdb快照形式同步資料)、持久化配置(支援rdb快照持久化、aof持久化,舊版redis不支援同時配置兩種持久化方式,新版的貌似可以)、釋出訂閱(pub、sub)、事務、流水線pipeline(減少客戶端和服務端往返連線次數從而提高效能)、客戶端分片(擴充寫效能)等。
本文主要記錄下redis中的主從配置及持久化操作
下載redis映象
映象中心
推薦使用國內daocloud映象
映象地址:daocloud.io/library/
拉取redis映象
docker pull daocloud.io/library/redis:latest
檢視拉取的映象
docker images
搭建redis叢集
執行redis映象
首先使用docker啟動3個redis容器服務,分別使用到6379、6380、6381埠
docker run --name redis-6379 -p 6379:6379 -d daocloud.io/library/redis
docker run --name redis-6380 -p 6380:6379 -d daocloud.io/library/redis
docker run --name redis-6381 -p 6381:6379 -d daocloud.io/library/redis
檢視執行
docker ps
配置redis叢集
使用如下命令檢視容器內網的ip地址等資訊
docker inspect containerid
3個redis的內網ip地址為:
redis-6379:172.17.0.2:6379
redis-6380:172.17.0.3:6379
redis-6381:172.17.0.4:6379
進入docker容器內部,檢視當前redis角色(主還是從)
可以看到當前3臺redis都是master角色,使用redis-cli命令修改redis-6380、redis-6381的主機為172.17.0.2:6379
SLAVEOF host port // SLAVEOF 172.17.0.2 6379
檢視redis-6379是否已經擁有2個從機:
至此,redis下的主從配置就ok了。
配置Sentinel哨兵
Redis 的 Sentinel 系統用於管理多個 Redis 伺服器(instance), 該系統執行以下三個任務:
監控(Monitoring): Sentinel 會不斷地檢查你的主伺服器和從伺服器是否運作正常。
提醒(Notification): 當被監控的某個 Redis 伺服器出現問題時, Sentinel 可以通過 API 向管理員或者其他應用程式傳送通知。
自動故障遷移(Automatic failover): 當一個主伺服器不能正常工作時, Sentinel 會開始一次自動故障遷移操作, 它會將失效主伺服器的其中一個從伺服器升級為新的主伺服器, 並讓失效主伺服器的其他從伺服器改為複製新的主伺服器; 當客戶端試圖連線失效的主伺服器時, 叢集也會向客戶端返回新主伺服器的地址, 使得叢集可以使用新主伺服器代替失效伺服器。
具體介紹可參考:http://redisdoc.com/topic/sentinel.html
接下來直接進入3臺redis容器內部進行配置
docker exec -ti 容器id /bin/bash
進入根目錄建立sentinel.conf檔案
cd / && touch sentinel.conf
修改檔案內容為:
sentinel monitor mymaster 172.17.0.2 6379 1
最後,啟動Redis哨兵:
使用 redis-sentinel /sentinel.conf 啟動Redis哨兵監控
使用 ps –ef |grep redis 命令,可以看到redis-server和redis-sentinel正在執行
至此,Sentinel哨兵配置完畢。
測試驗證
首先檢視哨兵監控情況
然後嘗試關閉主機
再檢視剩餘2個從機,這裡會自動選舉產生新的主機
然後,我們再次將剛才停止的主機啟動起來,發現啟動後其自動成為從機
至此,redis的主從高可用模式已經全部配置完畢,持久化下次研究了再過來記錄吧,over...