偶然看到一個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。
擴充套件也非常方便,二行命令,輕鬆擴充套件成三個sentinel,兩個從庫。
爽完了之後,才發現還是有一大一小兩個問題,
一大是應用從sentinel中的到的get-master-addr-by-name是容器中的內網地址和埠。。。容器外沒辦法訪問。只能將應用放在docker compose容器中external_links此容器才行。
一小是sentinel映象是基於redis映象的,也會監聽6379埠提供redis服務,貌似有點浪費了。