1.下载镜像
docker pull docker.io/redis
2.主机上建立挂载目录和redis配置文件
mkdir -p /data/redis_data
cd /data/redis_data
touch redis.conf vi redis.conf
- 主机一(192.168.0.34)上的redis.conf配置信息如下:
logfile "redis.log"
port 6379
dir /data
appendonly yes
appendfilename appendonly.aof
requirepass 123456
- 从机二、三(192.168.0.33、192.168.0.35)上也同样建立挂载目录和redis配置文件,其内容稍有不同:
logfile "redis.log"
port 6379
dir /data
appendonly yes
appendfilename appendonly.aof
slaveof 192.168.0.34 6389
masterauth 123456
requirepass 123456
- 配置说明:
dir:工作目录
logfile:日志文件在工作目录下
slaveof:指明为主机一的从机
requirepass:redis客户端连接的认证密码,若不需要可不配置
masterauth:主从redis同步的认证密码,与连接密码同,若不需要可不用配置
appendonly:是否需要持久化,yes为需要,默认时everysec
no:表示等操作系统进行数据缓存同步到磁盘(快)
always:表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全)
everysec:表示每秒同步一次(折衷,默认值)
appendfsync everysec
3.启动容器
docker run -p 6379:6379 \
-v /data/redis_data/:/data \
--name redis-6379 -d \
docker.io/redis redis-server redis.conf
- 命令说明:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v /data/redis_data:/data : 将主机中目录/data/redis_data挂载到容器的/data
--name redis-6379: 给出容器名称
-d: 后台运行
docker.io/redis: 镜像名称
redis-server redis.conf: redis的启动命令,指定配置文件
4.观察容器内部redis的情况:
docker exec -it redis-6379 /bin/bash
该命令可进入容器内部,其默认的工作目录即为/data,再执行redis-cli命令,观察redis信息
执行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.33
master_port:6379
...
5.哨兵容器部署
5.1、主机上建立哨兵目录和其配置文件
cd /data/redis_data
touch sentinel.conf
vi sentinel.conf
- 三台主机上sentinel.conf的内容相同,如下
logfile "sentinel.log"
sentinel monitor mymaster 192.168.0.34 6379 1
sentinel auth-pass mymaster 123456
- 配置说明:
logfile "sentinel.log":输出日志目录
sentinel monitor mymaster 192.168.0.1 6379 1:哨兵监控的主服务器名称为mymaster,ip为192.168.0.1,端口为6379,将这个主服务器标记为失效至少需要1个哨兵进程的同意
sentinel auth-pass mymaster 1234 : 哨兵的认证密码
5.2、启动容器
docker run -p 26379:26379 \
-v /data/redis_data/:/data \
--name sentinel-redis-26379 \
-d docker.io/redis redis-sentinel sentinel.conf
- 命令说明:
-p 26379:26379 : 将容器的26379端口映射到主机的26379端口
-v /data/redis_data:/data : 将主机中目录/data/redis_data挂载到容器的/data
--name sentinel-redis-26379: 给出容器名称
-d: 后台运行
docker.io/redis: 镜像名称
redis-sentinel sentinel.conf: sentinel的启动命令,指定配置文件
5.3、观察容器内哨兵情况
docker exec -it sentinel-redis-26379 /bin/bash
连接一个sentinel节点 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>
网友评论