首页 技术 正文
技术 2022年11月9日
0 收藏 650 点赞 5,153 浏览 1940 个字

本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker。

1.使用docker下载redis镜像

docker pull redis

安装完成后,使用docker images命令,查看是否安装成功

 2.redis集群搭建

(1)使用以下命令启动3个Redis

docker run --name redis-node1 -p 6379:6379 -d docker.io/redis
docker run --name redis-node2 -p 6380:6380 -d docker.io/redis
docker run --name redis-node3 -p 6381:6381 -d docker.io/redis

(2)使用docker ps命令,查看是否启动成功

(3)分别使用 docker inspect 容器名字命令,查看3个Redis的Docker内网IP地址

  在Networks栏,可以看见该容器的Docker内网IP地址

同理,查看redis-node2和redis-node3的Docker内网IP

(4)进入三个redis容器的内部

进入容器内部命令:docker exec -it 容器id/容器名称 /bin/bash

进入redis-node1内部:

(5)进入redis客户端

redis-cli

(6)测试对单个redis进行set值或get值

如果能set、get能成功,那么单个redis是没有问题的

接下来开始搭建主从复制的redis集群

3.主从复制搭建

(1)进入redis客户端后,使用 info replication 查看当前机器的角色

info replication

发现现在的redis-node1是master(主人),同理redis-node2和redis-node3也是master

现在我要将redis-node2和redis-node3变为slave(仆从)

(2)进入redis-node2容器,并进入客户端

1 docker exec -it redis-node2 /bin/bash
2 redis-cli

使用 SLAVEOF 172.17.0.1 6379 命令将redis-node2变为redis-node1的从结点,172.17.0.1是前面获取的redis-node1的容器内IP,6379是redis-node1的端口号

再使用 info replication查看当前机器角色

可以发现redis-node2已经变成redis-node1从结点了。

同理,进入redis-node3容器,并进入客户端,使用 SLAVEOF 172.17.0.1 6379 命令将redis-node3变为redis-node1的从结点。

我们再次进入redis-node1容器查看机器角色:

此时的redis-node1当中显示有两个从结点了。

(3)测试主从复制

我们在redis-node1 set一个数据,测试redis-node2和redis-node3能否获取该数据。

redis-node1容器中:

redis-node2容器中:

我们发现redis-node1的数据成功同步到了redis-node2中!我们再看redis-node3

redis-node3容器中:

同样成功了。

注意:主结点可以读写,从结点只能读不能写!

如图所示,从结点写数据会报错。

这样我们redis的主从复制就搭建完毕了。

主从复制虽然可以一定程度上增加resdis集群的可用性,但是如果主结点宕机我们需要手动为从结点指定新的主结点,这很不方便也不符合生产环境的需要,所以我们引入了哨兵模式。

4.配置redis哨兵

分别进入3台Redis容器内部,执行以下操作
首先,进入Docker容器内部:

进入三台redis容器:docker exec -it 容器id/容器名称 /bin/bash
更新依赖命令:apt-get update
安装vim命令:apt-get install -y vim

然后,编写Redis哨兵配置文件:

使用 cd / 命令,进入根目录
使用 vim sentinel.conf命令,创建哨兵配置文件
添加以下内容 sentinel monitor host6379 172.17.0.1 6379 1

最后,启动Redis哨兵:

使用 redis-sentinel /sentinel.conf 启动Redis哨兵监控
使用 ps –ef |grep redis 命令,可以看到redis-server和redis-sentinel正在运行

注意:三个redis容器都要执行上面的操作

完成后,哨兵会监视主结点状态,如果主结点宕机,30s后会从从结点当中选择一个作为主结点,如果后面原主结点重新连接,原主结点会变为新主结点的从结点。

至此,Linux基于Docker的Redis主从复制、哨兵模式搭建完毕。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,955
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,479
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,291
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,108
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,740
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,774