深入理解Redis的部署模式四种模式的探索(redis部署四种模式)-数据库运维技术服务
redis部署和运行原理 redis的三种部署方式_小咪咪的技术博客_51CTO博客
上一节:Redis(1):四种模式(单机、哨兵、集群、主从复制)原理
0、所写
m:master,主服务器
s:slave,从服务器
1、单机模式
学习自:redis部署和运行原理 redis的三种部署方式_小咪咪的技术博客_51CTO博客
数据库部署在一台服务器上,只有一个redis服务实例。
当安装部署了一个Redis后,默认模式就是单机模式。
redis-server & /usr/local/redis/redis-6.2.13/redis.conf
这种模式下,redis服务器的IP和端口默认为127.0.0.1和6379。
也可以定制IP和端口:
redis-cli -h IP地址 -p 端口
此时可以用redis-cli去进行一些指令,验证redis服务器是否连接成功:
ping:检测连接
127.0.0.1:6379> ping // 检测连接是不是好的 PONG 127.0.0.1:6379> ping "hello the world" // 也可以发送指定消息 "hello the world"
set、get:存取K-V对
127.0.0.1:6379> set key1 value1 OK 127.0.0.1:6379> get key1 "value1" 127.0.0.1:6379> ttl key1 (integer) -1 127.0.0.1:6379> set key1 value1 EX 1000 OK 127.0.0.1:6379> get key1 "value1" 127.0.0.1:6379> ttl key1 (integer) 990 127.0.0.1:6379> ttl key1 (integer) 984 127.0.0.1:6379> del key1 (integer) 1 127.0.0.1:6379> get key1 备注: 其他命令实际操作,可以参考:http://redisdoc.com/
2、主从复制模式
学习自:Redis(主从复制、哨兵模式、集群)概述及部署_redis主从模式部署_超级驼鹿️的博客-CSDN博客(主要)
Redis 主从模式部署步骤(参考)
服务器部署在多台服务器上,形成m和s的结构。
m承担所有客户端请求处理及所有数据备份的任务;s只负责备份数据,不处理客户端请求。
实现
现在有3台机器(为了保证主从,这三台机器必须是同一个网段,相互可以连通):
192.168.10.11 #s 192.168.10.12 #s 192.168.10.20 #m
默认s和m上都已经安装了redis
1、在m上修改配置文件redis.conf
vim /usr/local/redis/conf/redis.conf bind 0.0.0.0 #监听地址 0.0.0.0 protected-mode no #本机访问保护模式 no port 6379 #监听6379端口 daemonize yes #设置为守护进程,后台启动 pidfile /usr/local/redis/log/redis_6379.pid #PID 文件 logfile "/usr/local/redis/log/redis_6379.log" #日志文件 dir /usr/local/redis/data #指定持久化文件所在目录 requirepass Wrt65536 #可选,设置redis密码 appendonly yes #开启AOF
2、在s上修改redis.conf
vim /usr/local/redis/conf/redis.conf bind 0.0.0.0 #监听地址 0.0.0.0 protected-mode no #本机访问保护模式 no port 6379 #监听6379端口 daemonize yes #设置为守护进程,后台启动 pidfile /usr/local/redis/log/redis_6379.pid #PID 文件 logfile "/usr/local/redis/log/redis_6379.log" #日志文件 dir /usr/local/redis/data #指定持久化文件所在目录 requirepass Wrt65536 #可选,设置redis密码 appendonly yes #开启AOF
#相比m的附加项
replicaof 192.168.10.20 6379 #指定要同步的m节点的ip和端口
masterauth Wrt65536 #指定m的密码,仅在m节点设置了requirepass时起作用
3、启动s和m上的redis
sudo redis-server /路径/redis.conf &
4、验证主从关系
在master上添加K-V对
redis-cli -h 192.168.10.20 -p 6379 -a Wrt65536
在两台slave上查看K(这里我为了方便,将三台机器的密码设为统一了)
redis-cli -h 192.168.10.11 -p 6379 -a Wrt65536
redis-cli -h 192.168.10.12 -p 6379 -a Wrt65536
3、哨兵模式
学习自:Redis哨兵模式
redis哨兵模式来进行主从替换以及故障恢复_redis 主服务恢复后依然是主服务_Rapig1的博客-CSDN博客
在主从复制的基础上,哨兵模式引入了主节点的自动故障转移。
1)实现之前,注意事项
- m+s数量≥3;
- 哨兵集群中的机器数量为奇数;
2)实现原理图
3)哨兵模式作用
①监控
监控m和s节点是否正常工作;
②自动故障转移
当m不工作时,哨兵自动开始故障转移,将失效m中的一个s升级为m,并让其他s从新m复制
③通知
将故障转移结果告知client
4)结构
哨兵节点:由一个或多个哨兵节点组成
数据节点:m和s节点
5)故障转移机制
①定期检测,哨兵每1s向m、s、其他哨兵发送一次ping做心跳检测。如果m在一段时间内不回复或错误回复,该哨兵会认为这个节点主观下线。超半数哨兵认为主观下线,则变为客观下线。
②当m故障,哨兵通过Raft算法(选举算法)共同选举出一个哨兵为leader,来处理主节点的故障转移和通知。所以哨兵集群中节点≥3。
③由leader执行故障转移:
- 将某个s升级为m,让其他s指向新m;
- 若原m恢复,也变为s并指向新m;
- 通知client更换了m。
注意,下线是单纯针对m才有的概念,对s、哨兵不会有后续。
m的选举
1.过滤掉不健康的(已下线的),没有回复哨兵 ping 响应的从节点。
2.选择配置文件中从节点优先级配置最高的。(replica-priority,默认值为100)
3.选择复制偏移量最大,也就是复制最完整的从节点。
6)实现
哨兵的实现依赖于主从模式,所以在做哨兵模式前要先做主从模式。
①基于第2节的主从复制,已经搭建完3台redis服务器
主机 | IP地址 |
---|---|
Master | 192.168.10.20 |
Slave1 | 192.168.10.11 |
Slave2 | 192.168.10.12 |
②修改redis配置文件(所有主机)
systemctl stop firewalld #关闭firewalld防火墙 setenforce 0 #关闭selinux防火墙 vim /usr/local/redis/redis-6.2.13/sentinel.conf protected-mode no #17行,关闭保护模式 port 26379 #21行,Redis哨兵默认的监听端口 daemonize yes #26行,指定sentinel为后台启动 pidfile /usr/local/redis/log/sentinel.pid
logfile "/usr/local/redis/log/sentinel.log" #36行,指定日志存放路径 dir dir /usr/local/redis/6379 #65行,指定数据库存放路径
#84行,指定该哨兵节点监控192.168.10.20:6379这个主节点,该主节点的名称是mymaster,
#最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
sentinel monitor mymaster 192.168.10.20 6379 2
#这两项一开始是注释掉的,需要手动添加
#113行,判定服务器down掉的时间周期,默认3000毫秒(3秒) sentinel down-after-milliseconds mymaster 3000
#146行,故障节点的最大超时时间为1800毫秒(1.8秒) sentinel failover-timeout mymaster 1800
#如果接入外界的网络是NAT,那么还要设置下边两项
sentinel announce-ip 本机ip
sentinel announce-port 26379
要确保这里写的所有目录(比如log,6379)都是存在的,如果不存在需要先去新建
③启动哨兵模式:先m后s
redis-sentinel sentinel.conf &
注意:
- 这里是哨兵的启动过程,在此之前要先启动m和s上的redis服务
redis-server redis.conf &
- 这里是redis-sentinel sentinel.conf而不是redis-server redis.conf
- 先m后s,共启动3次(有多少台启动多少次)
④故障模拟
在m上执行如下指令:
- 先用ps -ef查询redis-server的进程号
- kill该redis-server进程(注意是server不是sentinel)
- 查看日志
日志显示切换成功
⑤验证
在已经成为master的主机192.168.10.12上,设置新的K-V对:
在另一台slave上查看结果
4、集群模式
本节学习自:三、Redis 集群模式
将数据库部署在一组Redis实例,形成一个相互关联的集群。它支持多个客户端同时连接多台服务器,实现真正的分布式系统,可以更好地满足大型系统的高可用性和高吞吐性要求。
redis-server --cluster-enabled yes --cluster-config-file nodes.conf --cluster-node-timeout 15000
5、注意事项
redis启动方式为:redis-server 路径/redis.conf &,符号&必须放在conf文件之后,不然会导致conf文件读取失效
设置了masterauth之后,s在登录时不会用到该密码,登录时的-a密码还是它自己的requirepass
[root@localhost bin]# redis-cli -h 192.168.10.12 -p 6379 标签:主从复制,单机,Redis,redis,192.168,哨兵,6379,conf,节点 From: https://www.cnblogs.com/ShineLeBlog/p/17629164.html