容器化redis高可用方案

二胡嘈子發表於2016-08-07

偶然看到一個GITHUB專案,提供了一套Docker Compose下的redis Sentinel方案。
專案地址https://github.com/AliyunContainerService/redis-cluster,應該是國人建立的。

具體說明readme中寫的很明白了,yml內容如下:

master:
  image: redis:3
slave:
  image: redis:3
  command: redis-server --slaveof redis-master 6379
  links:
    - master:redis-master
sentinel:
  build: sentinel
  environment:
    - SENTINEL_DOWN_AFTER=5000
    - SENTINEL_FAILOVER=5000    
  links:
    - master:redis-master
    - slave 

master和slave使用redis官方映象,slave為master的從庫。
sentinel則為基於redis官方映象的自定義映象,並增加了sentinel配置檔案和相關環境變數。

執行後,輕鬆獲得三個容器,分別為redis主庫、redis從庫和sentinel。

容器化redis高可用方案

擴充套件也非常方便,二行命令,輕鬆擴充套件成三個sentinel,兩個從庫。

容器化redis高可用方案

爽完了之後,才發現還是有一大一小兩個問題,
一大是應用從sentinel中的到的get-master-addr-by-name是容器中的內網地址和埠。。。容器外沒辦法訪問。只能將應用放在docker compose容器中external_links此容器才行。
一小是sentinel映象是基於redis映象的,也會監聽6379埠提供redis服務,貌似有點浪費了。

相關文章