爱生活、爱运动、爱分享、爱折腾、爱编程。

docker 部署redis 主从复制+哨兵

1、拉取redis镜像 (默认拉取最新的镜像)5.0.5
需要其它版本在后面加:tag(版本)

由于我所有操作都是在root用户进行 普通用户则在命令前面加上sudo

普通用户执行错误参考https://www.cnblogs.com/beautiful-code/p/9396184.html
docker pull redis

2、在宿主机上建立挂载目录和redis配置文件: 

mkdir -p /data/redis_data 
cd /data/redis_data 
vim redis.conf

主机一上的redis.conf配置信息如下:

logfile "redis.log" 
port 6379 
dir /data 
appendonly yes 
appendfilename appendonly.aof 
requirepass 123

从机一、二…..N.上的redis.conf配置信息如下:

logfile "redis.log"
port 6379
dir /data
appendonly yes
appendfilename appendonly.aof
slaveof 172.12.0.4 6389
masterauth 123
requirepass 123
  • 配置说明:
  • dir:工作目录
  • logfile:日志文件在工作目录下
  • slaveof:指明为主机一的从机 docker查看IP(docker inspect 容器ID | grep IPAddress)
  • requirepass:redis客户端连接的认证密码,若不需要可不配置
  • masterauth:主从redis同步的认证密码,与连接密码同,若不需要可不用配置
  • appendonly:是否需要持久化,yes为需要

3、运行并设置密码、端口映射、挂载本地盘

docker run -p 6379:6379 -v /data/redis_data/:/data --name redis-master -d redis redis-server redis.conf

docker run -p 6389:6379 -v /data/redis_data/:/data --name redis-slave1 -d redis redis-server redis1.conf

docker run -p 6399:6379 -v /data/redis_data/:/data --name redis-slave2 -d redis redis-server redis1.conf

检查主从关系是否建立,如下看到当前角色为master 有两个slave,代表建立主从成功

docker exec -it 主容器ID redis-cli
auth 123
info

#Replication
 role:master
 connected_slaves:2
 slave0:ip=172.17.0.5,port=6379,state=online,offset=56,lag=0
 slave1:ip=172.17.0.6,port=6379,state=online,offset=56,lag=0
 .....

验证

[root@xxxredis_data]# docker exec -it 主容器id redis-cli
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> set master 'master'
OK
127.0.0.1:6379>
[root@xxxredis_data]# docker exec -it 从容器ID redis-cli
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> get master
"master"
127.0.0.1:6379>

4、主机上建立哨兵目录和其配置文件:

cd /data/redis_data
vim sentinel.conf
logfile "sentinel.log"
sentinel monitor mymaster 172.17.0.4 6379 1
sentinel auth-pass mymaster 123
  • 配置说明:
  • logfile “sentinel.log”:输出日志目录
  • sentinel monitor mymaster 172.17.0.4 6379 1:哨兵监控的主服务器名称为mymaster,ip为172.17.0.4,端口为6379,将这个主服务器标记为失效至少需要1个哨兵进程的同意
  • sentinel auth-pass mymaster 123 : 哨兵的认证密码

5、最后启动哨兵模式

docker run -p 26379:26379 -v /data/redis_data/:/data --name redis-sentinel -d redis redis-sentinel sentinel.conf

观察容器内哨兵情况:

docker exec -it 哨兵容器ID redis-cli -h 127.0.0.1 -p 26379

info

# 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=172.17.0.4:6379,slaves=2,sentinels=4
127.0.0.1:26379> 

确定哨兵模式已启动,完成

 

赞(0)
(转载本站文章请注明作者和出处 ,请勿用于任何商业用途)Mydrn Blog » docker 部署redis 主从复制+哨兵

评论 抢沙发

评论前必须登录!