偶然看到一個GITHUB項目,提供了一套Docker Compose下的redis Sentinel方案。
項目地址https://github.com/AliyunContainerService/redis-cluster,應該是國人建立的。git
具體說明readme中寫的很明白了,yml內容以下:github
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主庫、redis從庫和sentinel。docker
擴展也很是方便,二行命令,輕鬆擴展成三個sentinel,兩個從庫。ui
爽完了以後,才發現仍是有一大一小兩個問題,
一大是應用從sentinel中的到的get-master-addr-by-name是容器中的內網地址和端口。。。容器外沒辦法訪問。只能將應用放在docker compose容器中external_links此容器才行。
一小是sentinel鏡像是基於redis鏡像的,也會監聽6379端口提供redis服務,貌似有點浪費了。code