很簡單(字多的步驟見:http://www.cnblogs.com/vipzhou/p/8580495.html)
1、直接啟動2個容器
docker network create --subnet 172.30.0.0/16 yapi_net
mkdir -p /opt/redis_01/data
mkdir -p /opt/redis_02/data
docker network inspect yapi_net
docker run --network yapi_net --ip 172.30.0.21 -d --name redis_01 --restart always -p 6380:6379 -v /opt/redis_01/data:/data docker.io/redis
docker run --network yapi_net --ip 172.30.0.22 -d --name redis_02 --restart always -p 6381:6379 -v /opt/redis_02/data:/data docker.io/redis
2、分別進去其中兩個容器,進行中從配置,這里只演示一個
docker exec -it redis_6379 /bin/bash
redis-cli -h ip -a password
SLAVEOF 172.30.0.21 6379
#意思是自己屬於哪個機器的從
INFO replication #查看 master_link_status:up 表示成功
3、進去一台從 配置哨兵()
cat << EOF > sentinel.conf
> sentinel monitor mymaster 172.30.0.21 6379 1 #這里填寫主的信息
> EOF
redis-sentinel sentinel.conf #啟動哨兵
大功告成
------------------------------------------------------------------------------------------------
在兩台真機上部署
SLAVEOF
要指定真機ip和暴露端口,哨兵也要制定真機ip 和暴露端口,否則哨兵沒用
哨兵作用:通過哨兵監控主redis,當主redis掛掉時,會自動切換從為主,哨兵不會退出,而是持續監控原redis主,當原redis主,重新啟動后,會將它設置為redis從
----------------------------------------------------------------------------------------------------
另:也可以指定配置文件運行。
配置文件修改部分:
bind 0.0.0.0 daemonize no #關閉守護進程,在前台運行, dir /data/ masterauth password #主從認證密碼,否則主從不能同步,最好主從密碼一致 requirepass password #訪問redis密碼 appendonly yes #采用aof持久化
制作鏡像
cat Dockerfile
FROM redis
ADD redis.conf /usr/local/etc/redis/redis.conf
docker build -t myredis .
docker run -d --name redis --restart always -p 6379:6379 -v /opt/redis/:/data myredis redis-server /usr/local/etc/redis/redis.conf
配置從庫
配置哨兵,配置文件,只需寫兩行,其他啟動后會自動不全配置文件
sentinel monitor mymaster 主ip 6379 1 sentinel auth-pass mymaster password
啟動哨兵
當主從自動切換后,哨兵的配置的配置文件也會自動改變