本示例基于Centos 7,在阿里云的三台机器上部署redis集群,假设目前使用的帐号为release,拥有sudo权限。html
因为Docker官方镜像下载较慢,能够开启阿里云的Docker镜像下载加速器,可参考此文进行配置。redis
假设三台主机的ip分别为:docker
三台主机的安装步骤类似,以主机一为例:bash
1. 安装docker服务:服务器
sudo yum install -y docker
2. 启动docker服务: app
sudo service docker start
3. 查找redis镜像:ui
sudo docker search redis
4. 下载官方redis镜像:阿里云
sudo docker pull docker.io/redis
5. 下载完后可检查镜像:spa
sudo docker images
6. 主机上创建挂载目录和redis配置文件:日志
mkdir -p /data/redis_data cd /data/redis_data touch redis.conf vi redis.conf
主机一上的redis.conf配置信息以下:
logfile "redis.log" port 6379 dir /data appendonly yes appendfilename appendonly.aof requirepass 1234
主机2、三上也一样创建挂载目录和redis配置文件,其内容稍有不一样:
logfile "redis.log" port 6379 dir /data appendonly yes appendfilename appendonly.aof slaveof 192.168.0.1 6389 masterauth 1234 requirepass 1234
配置说明:
7. 三台主机上都启动容器:
sudo docker run -p 6379:6379 -v /data/redis_data/:/data --name redis-6379 -d docker.io/redis redis-server redis.conf
命令说明:
通过这一步后,三台主机已经创建了主从关系。
8. 查看容器运行状况:
sudo docker ps -a
运行中的容器,其状态为Up,
若要中止并删除容器,其命令为:
sudo docker stop 容器id sudo docker rm 容器id
9. 观察容器内部redis的状况:
sudo docker exec -it 容器id /bin/bash
该命令可进入容器内部,其默认的工做目录即为/data,再执行redis-cli命令,观察redis信息:
[release@sh-lbs02 6389-sentinel]$ sudo docker exec -it cac /bin/bash root@cac589144cfd:/data# redis-cli 127.0.0.1:6379> info NOAUTH Authentication required. 127.0.0.1:6379> auth SVKFGKPaFT OK 127.0.0.1:6379> info # Server ... # Replication role:slave master_host:192.168.0.1 master_port:6379 ...
至此,可确认三台主机的主从模式已经创建成功。
10. 主机上创建哨兵目录和其配置文件:
cd /data/redis_data touch sentinel.conf vi sentinel.conf
三台主机上sentinel.conf的内容相同,以下:
logfile "sentinel.log" sentinel monitor mymaster 192.168.0.1 6379 1 sentinel auth-pass mymaster 1234
配置说明:
11. 三台主机上启动哨兵模式:
sudo docker run -p 26379:26379 -v /data/redis_data/:/data --name redis-26379 -d docker.io/redis redis-sentinel sentinel.conf
命令说明:
通过这一步后,哨兵模式已经创建起来。可经过观察日志查看启动状况
12. 观察容器内哨兵状况:
sudo docker exec -it 容器id /bin/bash
该命令可进入哨兵容器内部,其默认的工做目录即为/data,再执行redis-cli命令,观察redis信息:
[release@sh-lbs02 6389-sentinel]$ sudo docker exec -it 25 /bin/bash root@259da4458937:/data# redis-cli -h 127.0.0.1 -p 26379 127.0.0.1:26379> info # Server ... # Sentinel sentinel_masters:1 sentinel_tilt:0 sentinel_running_scripts:0 sentinel_scripts_queue_length:0 sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=192.168.0.1:6379,slaves=2,sentinels=4 127.0.0.1:26379>
至此,能够肯定哨兵模式已启动成功。