第一篇博客:Redis+docker构建主从环境
恰巧因为最近学习心爆棚,还有一些个人原因,想记录一些自个认为以后工作会需要的,并且容易混淆的知识点。有个前辈和我说过,现在面试基本都是考验性能和高可用,比如:性能优化的mysql的redis的,分布式缓存,分布式锁、多级缓存、缓存一致性、负载均衡。这里,我想先从redis章节开始记录,主要可能就是redis的主从复制,读写分离,分布式缓存,哨兵机制吧。
搭建两台docker的redis容器
构建docker前,我们需要先了解docker的网络设置。基本命令啥的我就说了,后面可能会有补充章节来专门说docker的基本常用语法。
了解容器网络
Docker安装后,默认会创建下面三种网络类型:
1)bridge:桥接网络:默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启 下,Docker的IP地址就变了
2)none:无指定网络:无指定网络 使用 --network=none ,docker 容器就不会分配局域网的IP
3)host: 主机网络:主机网络 使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。 例如,在容器中运行一个Web服务,监听8080端口,则主 机的8080端口就会自动映射到容器中
- 查看网络详情
docker network inspect bridge
- 创建网络(当有多个独立的container之间需要彼此访问时,推荐使用自建bridge网络)
docker network create --driver bridge my-network
准备相关文件
Dockerfile文件
主节点reids-conf文件
从节点reids-conf文件
开始部署
- 预先分配好宿主机的主从文件目录
- 集群节点规划
容器名称 | 容器IP地址 | 映射端口号 | 宿主机IP地址 |
---|---|---|---|
Redis-master | 192.160.1.2 | 6380 -> 6379 | 106.52.210.90 |
Redis-slave | 192.160.1.3 | 6381 -> 6379 | 106.52.210.90 |
- 搭建命令
master:docker run -itd -v /www/wwwroot/redis/dockerTest/redis/master:/usr/src/redis -p 6380:6379 --network=wuhequan --ip=192.160.1.2 --name redis-master redis
slave:docker run -itd -v /www/wwwroot/redis/dockerTest/redis/slave:/usr/src/redis -p 6381:6379 --network=wuhequan --ip=192.160.1.3 --name redis-slave redis
- 构建完成后,就可以进入从容器,连接master主开始主从备份
- 进入容器 :
docker exec -it redis-master bash
- 输入密码:
redis-cli -a 123456
- 因为前面映射文件夹里面的redis.conf配置了密码:
- 因为前面映射文件夹里面的redis.conf配置了密码:
- 进入容器 :
- 配置主连接
外网:slaveof 106.52.210.90 6380
内网:slaveof 192.160.1.3 6379` (一般不用内网去连接)
注释:这里一旦复制,就开始从主节点那边全部复制过了,如果从节点有旧数据,会先清空从节点服务器数据。