1、下载redis docker镜像
docker pull redis:3.2
2、在home下建立mydata目录
在/home/mydata/redis下面建立两个目录 conf与data
3、docker运行主从
docker run -p 6379:6379 --name masterredis -v /home/mydata/redis/data:/data -v /home/mydata/redis/conf/master.conf:/data/redis.conf --privileged=true -d redis:3.2 redis-server /data/redis.conf --requirepass "masterredis" --appendonly yes docker run -p 6379:6379 --name slaveredis -v /home/mydata/redis/data:/data -v /home/mydata/redis/conf/slave.conf:/data/redis.conf --privileged=true -d redis:3.2 redis-server /data/redis.conf --requirepass "slaveredis" --appendonly yes
4、开放防火墙端口
firewall-cmd --add-port=6379/tcp --permanent firewall-cmd --reload
5、运行测试
docker exec -it masterredis bash redis-cli -a masterredis 客户端登录进入masterredis 可以 info replication 查询复制情况 redis-cli -a slaveredis
docker container update --restart=always 容器名字 增加一个容器的自动启动参数方法
刚开始slave redis老是连接不上,应该主要原因是没有加参数masterauth password
6、配置参数
总结redis master的参数主要有下面
daemonize no pidfile "/var/run/redis.pid" port 6379 timeout 300 loglevel warning logfile "redis.log" databases 1 rdbcompression yes dbfilename "redis.rdb" dir "/data" requirepass password masterauth password maxclients 10000 maxmemory 1000mb maxmemory-policy allkeys-lru appendonly no appendfsync alway
因为有些可以不需要,requirepass password启动的时候配置了,
总结redis slave的参数主要有下面
daemonize no pidfile "/var/run/redis.pid" port 6379 timeout 300 loglevel warning logfile "redis.log" databases 1 rdbcompression yes dbfilename "redis.rdb" dir "/data" requirepass password masterauth password maxclients 10000 maxmemory 1000mb maxmemory-policy allkeys-lru appendonly no appendfsync always slaveof 192.168.199.151 6379
7、生产过程中要用的redis就要对redis的配置参数一一进行优化与配置了
同时生产应该采用哨兵模式,但这个应该要一主二从才行,一主一从应该选举就有问题
8、时间问题,可以这样操作
rm /etc/localtime ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
这样就变成中国上海时间了
但我的虚拟机主机与docker时间问题目前还没有解决
用下面解决在进入docker容器后
echo "Asia/shanghai" > /etc/timezone cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime