docker搭建Redis集群-主从复制以及哨兵模式
本来想给大家搭建伪集群的,想了想还是给大家搭建真实的集群吧。这样更容易大家学习。
But但是我的电脑是双4G的一定会很卡的。忍了,只要大家能从中学到东西。这样就是值得的。
一、安装redis集群主从复制:
直接上操作步骤:
1、打开三台虚拟主机(不会安装Centos7的请移步“安装centos7及连接” 文章),并且用xsheel连接上root用户
第一台ip:192.168.241.138
第二台ip:192.168.241.139
第三台ip:192.168.241.140
2、连接成功
3、三台主机安装dokcer并启动docker(详细安装步骤请移步"Docker安装以及HelloWorld"文章)
4、三台主机拉取redis镜像
拉取命令:docker pull redis
4.1检测三台主机是否拉去成功:
第一台ip:192.168.241.138
第二台ip:192.168.241.139
第三台ip:192.168.241.140
查询所有命令:docker images
查询redis镜像:docker images |grep redis
5、三台主机创建存放redis.conf文件目录并拉去redis.conf配置文件:
创建目录:略 可以存放在任何目录 小优放在了/DATA/yuanmayouchuang/docker/redis/目录下
拉去redis.conf文件命令:wget -c http://download.redis.io/redis-stable/redis.conf
6、启动三台redis:
启动命令:docker run --name redis -v /DATA/yuanmayouchuang/docker/redis/redis.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 -p 26379:26379 redis
参数详解:
docker:死记硬背。
run:启动容器固定写法
--name:自定义启动容器名称
-v 主机redis.conf 和redis容器做映射
-d 后台启动
-p 端口映射 6379是redis端口 26379是哨兵端口
redis:镜像名称
查看启动结果:
192.168.241.138 主机redis以启动
192.168.241.139 主机redis以启动
192.168.241.140 主机redis以启动
7、进入三台主机redis容器内部。
进入容器内部命令:docker exec -it 容器id/容器名称 /bin/bash(固定写法记住就好了)
进入内部可以对单个redis主机进行set值或get值
1、进入redis容器 docker exec -it 容器id/容器名称 /bin/bash
2、输入redis-cli(进入redis客户端)
3、set name xiaoyouyou(set存值)
4、get name (get取值)
8、查询三台主机的信息
1、进入redis容器 docker exec -it 容器id/容器名称 /bin/bash
2、输入redis-cli(进入redis客户端)
3、输入info
我们发现三台都是主节点。
9、然后我们人工给他们挑选一个老大 那就192.168.241.138为老大 192.168.241.139和192.168.241.140为小弟吧。
1、进入139和140容器 命令 docker exec -it 容器id/容器名称 /bin/bash
2、输入redis-cli(进入redis客户端)
3、绑定主redis信息:SLAVEOF 主ip 主端口
绑定完成我们看一下三个redis服务器的关系:
140 容器 info查询一下 我们已经发现已经变成了从节点。并且主节点为:138主机
139容器info查询一下 我们也发现变成了从节点。并且主节点为:138主机
我们看一下138主机的信息。
至此redis主从已经搭建完毕
10、测试主从复制
主:192.168.241.138
从:192.168.241.139
从:192.168.241.140
主节点存取数据:
从节点同步数据:
从节点同步数据:
我们发现从节点是没有写入权限的,只有读的权限,这就是读写分离。两读一写
主可以读写,从只能读。这也是redis集群的特点:读写分离。
我们用客户端连接一下:建议用主节点连接就可以了,因为可以读写。用从节点只能读取数据。
可以用客户端进行set或get对缓存数据进行crud
至此我们redis主从复制就搭建完毕了。
二、在redis主从复制基础上搭建redis哨兵模式
1、三台主机 更新redis容器依赖以及安装vim命令
进入三台redis容器:docker exec -it 容器id/容器名称 /bin/bash(固定写法记住就好了)
更新依赖命令:apt-get
安装vim命令:apt-get install -y vim
2、三台主机创建哨兵配置文件:sentinel.conf(建议在容器根目录,好记)
1、进入三台redis容器:
2、进入容器根目录
3、创建哨兵配置文件:vim sentinel.conf(三台容器哨兵配置一模一样)
4.输入:
port:26379 #哨兵端口号 一定要和启动命令映射第二个端口号一致
daemonize yes #后台启动
sentinel monitor mymaster 主节点ip 主节点端口 2
192.168.241.138:最后配置内容为:
192.168.241.139:最后配置内容为:
192.168.241.140:最后配置内容为:
3、启动redis哨兵
三台redis哨兵配置文件,配置完毕后,保存退出。
依次三台在sentinel.conf 配置文件同一级目录执行:redis-sentinel sentinel.conf
4、查看是否启动哨兵
三台容器依次安装ps命令:apt-get install procps
依次查看三台容器的是否启动哨兵。
5、测试哨兵模式:
我们把主节点192.168.241.138 redis给关闭
我们看到139和140主节点都已经是down状态了,redis会在30秒之后重新选举。如果30秒原来主节点活过来。则不进行选举。
大概30秒已经过去了,我们在看一下从服务器的状态:
我们发现139现在已经变成了主节点,我们看一下140的状态:
redis自己选举的139主节点,我们发现也是可以正常写入数据的。
redis 140容器也是可以正常同步到数据的。
我们把关闭的那台138 redis给启动。
我们查询一下新主节点139的信息看是否有两个从节点:
我们刚刚只启动了redis 并没有启动138 容器redis的哨兵,如果现在现在139主机down掉了就不会重新选举了, 我们需要手动把138主机的哨兵开启,大家也可以写一个自启动脚本。
至此我们redis集群 主从复制和哨兵模式已经搭建完毕。
终、、
以上就是docker搭建redis集群-主从复制以及哨兵模式 感觉是不是超简单! 有什么问题可以联系我哈。
鼓励作者写出更好的技术文档,就请我喝一瓶哇哈哈哈哈哈哈哈。。你们的赞助决定我更新的速度哦!
微信:
支付宝:
感谢一路支持我的人。。。。。
Love me and hold me
QQ:69673804(16年老号)
EMAIL:itw@tom.com
友链交换
如果有兴趣和本博客交换友链的话,请按照下面的格式在评论区进行评论,我会尽快添加上你的链接。
网站名称:猿码优创
网站地址:http://blog.cnbuilder.cn
网站描述:年少是你未醒的梦话,风华是燃烬的彼岸花。
网站Logo/头像: [头像地址](https://blog.cnbuilder.cn/upload/2018/7/avatar20180720144536200.jpg)
欢迎关注猿码优创(联系小优优进内部群哦,新鲜技术优先更新):