采坑記錄:
docker sentinel模式安裝完後因為是使用bridge模式,是以隻有docker中運作的程式才能通路。剛開始嘗試使用端口映射,返現sentinel傳回的位址依然是docker的内網位址。
docker-compose.yml
version: '3.2'
services:
master:
container_name: redis-master-1
image: redis:3
command: redis-server --port 16379
ports:
- "16379"
network_mode: "host"
slave:
image: redis:3
container_name: redis-slave-1
ports:
- "16380"
network_mode: "host"
command: redis-server --port 16380 --slaveof redis-master 16379
sentinel:
container_name: redis-sentinel-1
build: sentinel
ports:
- "26379"
environment:
- SENTINEL_DOWN_AFTER=5000
- SENTINEL_FAILOVER=5000
network_mode: "host"
2、sentinel.conf檔案:
# Example sentinel.conf can be downloaded from http://download.redis.io/redis-stable/sentinel.conf
port 26379
dir /tmp
sentinel monitor mymaster redis-master 16379 $SENTINEL_QUORUM
sentinel down-after-milliseconds mymaster $SENTINEL_DOWN_AFTER
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster $SENTINEL_FAILOVER
3、由于compose和sentinel都使用域名連接配接master:redis-master,則需要在/etc/hosts中配置該域名解析
10.8.0.1 redis-master
注意此處一定要解析成程式能通路到的IP位址。
4、docker相關的一些指令
檢視運作中的容器:docker container ls
啟動tracker:docker container start tracker
啟動storage:docker container start storage
停止tracker:docker container stop tracker
停止storage:docker container stop storage
docker exec -it tracker /bin/bash
docker logs xxx 檢視日志 xxxx為容器Id
docker ps -a 檢視所有
netstat -anp |grep 22122
docker exec -it redis-sentinel-1 redis-cli -h 10.8.0.1 -p 26379 SENTINEL get-master-addr-by-name mymaster 擷取sentinel傳回的redis節點位址
docker exec -it redis-sentinel-1 redis-cli -h 10.8.0.1 -p 26379 SENTINEL slaves mymaster 擷取sentinel傳回的redis節點位址