redis-Sentinel 是咱們此次來一同窗習 redis 的重點,在咱們如今的系統已經離不開 redis 的時候 , redis 掛掉了或者是一些其餘問題都是致命的 , 那麼怎麼作到 redis 的高可用呢 , 官方有提供一個管理 redis 集羣自動容災的一個應用 Redis-Sentinel .那麼咱們就來一同搭建一個 redis 高可用的 redis 集羣.redis
附上:vim
喵了個咪的博客:w-blog.cn服務器
Redis官網:http://redis.io/架構
Redis Sentinel文檔:http://redis.io/topics/sentinel分佈式
Sentinel能夠用於管理多個Redis服務,而且會執行三個任務:學習
Redis Sentinel 是一個分佈式系統, 你能夠在一個架構中運行多個 Sentinel 進程(progress), 這些進程使用流言協議(gossip protocols)來接收關於主服務器是否下線的信息, 並使用投票協議(agreement protocols)來決定是否執行自動故障遷移, 以及選擇哪一個從服務器做爲新的主服務器。code
雖然 Redis Sentinel 釋出爲一個單獨的可執行文件 redis-sentinel , 但實際上它只是一個運行在特殊模式下的 Redis 服務器, 你能夠在啓動一個普通 Redis 服務器時經過給定 --sentinel 選項來啓動 Redis Sentinel 。blog
咱們準備2臺 Liunx 服務器內網 IP 分別爲 192.168.0.20 和 192.168.0.21進程
然在兩臺服務器上面各配置好兩個 redis 實例爲:ip
而後咱們配置好主從關係把192.168.0.20:6379做爲主redis其他做爲從Redis
在咱們redis編譯完成的目錄中src目錄下有一個 redis-sentinel 的程序,咱們把他 cp 到 /usr/local/bin/ 下面就能夠直接使用 redis-sentinel 命令了
咱們分別在2臺服務器上建立4個 Sentinel 實例咱們先配置 192.168.0.20 這臺服務器
cd /etc/redis/ vim sentinel_6379.config port 26379 sentinel monitor master1 192.168.0.20 6379 2 sentinel down-after-milliseconds master1 60000 sentinel failover-timeout master1 180000 sentinel parallel-syncs master1 1 sentinel auth-pass master1 testpassword
而後以一樣的配置配置好端口爲 192.168.0.20:26380 , 192.168.0.21:26381 和 192.168.0.21:26382
而後咱們使用 redis-sentinel 分表在2臺服務器上面
redis-sentinel sentinel_6379.config redis-sentinel sentinel_6380.config redis-sentinel sentinel_6381.config redis-sentinel sentinel_6382.config
咱們觀察終端的語句會出現以下輸出
+slave <instance details> :一個新的從服務器已經被 Sentinel 識別並關聯。 +sentinel <instance details> :一個監視給定主服務器的新 Sentinel 已經被識別並添加。
看到2個子實例都綁定上了 , 4個 sentinel 也都顯示了這個時候就證實已經配置好了 redis-sentinel 而後咱們在主服務上面執行以下語句
service redis_6379 stop
這個時候就能夠看到在終端中在打印了一些轉換的語句,咱們在檢查主從設置的時候就已經自動轉意到了莫一個 redis 子實例上了,當咱們從新把主運行起來以後,主實例會自動成爲子實例
本節主要介紹了怎麼配置一個 redis 集羣,以及怎麼把 redis-sentinel 跑起來來達到高可用容災切換的問題,更多的操做能夠參考 sentinel 官方文檔來了解更多的關於 sentinel 的操做.
注:筆者能力有限有說的不對的地方但願你們可以指出,也但願多多交流!
PhalApi官網QQ交流羣:421032344 歡迎你們的加入!