创建redis容器
docker run -p 6380:6380 --name redis1 -v /home/docker/redis1/redis.conf:/etc/redis/redis.conf -v /home/docker/redis1/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
主服务 port 6380
从服务 port 6381 SLAVEOF 192.168.56.10 6380 ...
先建立主从
创建sentinel 容器 使用redis镜像
docker run -it --name sentinel26379 -p 26379:26379 -v /usr/redis/conf26379/sentinel.conf:/sentinel.conf -v /usr/redis/data26379:/data --privileged=true redis redis-sentinel /sentinel.conf
sentinel.conf 配置 sentinel monitor pinmaomaster 192.168.56.10 6380 1
Redis 进入容器客户端
进入容器
docker exec -t 容器名称 /bin/bash
docker exec -it redis1 redis-cli -p 6380 role 查看角色关闭主服务查看从服务角色有没有切换
关闭主服务查看从服务角色有没有切换
进入sentinel容器 docker exec -it sentinel26379 /bin/bash
查看sentinel信息:redis-cli -p 26379 info Sentinel
进入 redis容器 docker exec -it redis1 redis-cli -p 6380
总结:
Redis-Sentinel是Redis官方推荐的高可用性解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。