一 高可用介绍
redis的单机部署是非常方便的,但是存在很大的一个问题就是单点故障,一旦机器挂掉,所有相关的服务都受影响,所以生产环境一般都是搭的高可用架构,当然也有公司部署单机的,那是因为要么redis承担的任务本身没那么重要,挂了重启对系统也没多大影响,要么就是对系统本身的高可用要求没那么高,就算整个系统挂了重启也没啥大问题。
redis的高可用架构一般有这么几种:主从模式、哨兵模式、redis sharding 模式、redis cluster模式。本篇搭建的是最基础的主从模式。
二 搭建实战
1 linux服务器安装好docker,这里就不详细记录安装过程了,还不太了解docker的小伙伴可以自行百度。
2 启动docker服务
systemctl start docker
3 查看docker是否启动
systemctl status docker 如下图说明启动成功
4 下载redis镜像
docker search redis //查看镜像 ,更详细版本可以到镜像仓库查看:https://hub.docker.com/_/redis
docker pull redis //拉取镜像 ,不指定版本默认是最新版
docker images | grep redis //查看已下载的redis镜像
5 创建并启动三个容器
docker run -d --name redis0 -p 6379:6379 redis
docker run -d --name redis1 -p 6389:6379 redis
docker run -d --name redis2 -p 6399:6379 redis
6 查看已启动容器
docker ps 如图说明三台redis已经正常启动
7 客户端链接并查看状态
redis-cli -h 192.168.74.132 -p 6379
redis-cli -h 192.168.74.132 -p 6389
redis-cli -h 192.168.74.132 -p 6399
可以看到,目前三台redis之间是没有任何关系的,各自都是master节点,都没有从节点
8 建立主从关系(这里把6379作为主,6389和6399作为从)
salaveof 192.168.74.132 6379
9 查看主从关系
6379还是主,多了两个从
6389和6399都成了从,主是6379
10 主从验证
插入数据之前都是空的
现在往6379插入一条数据
set k1 v1
三台机器获取k1
三 优缺点
1 优点:搭建起来是相当的简单,而且确实可以实现读写分离,主写从读,也可以提高整体性能
2 缺点:一旦主机挂掉,整体对外就不能写了,相当于还是存在单点故障问题的;当从机比较多数据量又比较大的时候,主机都要完成复制工作,对性能是有影响的;只适合读多写少
四 主从模式变形
1 针对以上主从模式的缺点出现了一些变形,比如为了避免主机向所有其他从机都做数据同步降低性能,可采用‘薪火相传’模式,相当于分层复制了,主机只负责直接从机数据的复制,各个直接从机自己去复制自己的直接从机。
这样,6399就成了6389的从机
6379就只有6389一台从机了
往6379插入数据
看看效果 还是一样能实现主从复制
2 还有就是对于主机挂掉,整体不能对外提供写服务的问题,可以把从机直接升级为主机
停掉6379
再把6389升级为主机
slaveof no one 可以看到6389成了主机,有一台从机
往6389插入数据
看效果
可以看出来一个很大的问题就是需要手动将从机切换成主机,这样的话是很难做到及时的。所以就有了后面的哨兵模式。
学无止境,让学习成为一种习惯。
本人水平有限,有不对的地方请指教,谢谢。