网站架构基本知识,中国电力工程造价信息网,沧浪企业建设网站方法,南宁良庆网站建设一、Redis的主从复制
1.1 Redis主从复制定义
主从复制是redis实现高可用的基础#xff0c;哨兵模式和集群都是在主从复制的基础之上实现高可用#xff1b; 主从复制实现数据的多级备份#xff0c;以及读写分离(主服务器负责写#xff0c;从服务器只能读)
1.2 主从复制流…一、Redis的主从复制
1.1 Redis主从复制定义
主从复制是redis实现高可用的基础哨兵模式和集群都是在主从复制的基础之上实现高可用 主从复制实现数据的多级备份以及读写分离(主服务器负责写从服务器只能读)
1.2 主从复制流程
(主从复制推荐使用AOF)
1若启动一个slave机器进程,则它会向Master机器发送一个sync command命令请求同步连接。
2无论是第一次连接还是重新连接Master机器都会启动一个后台进程将数据快照保存到数据文件中执行bgsave操作同时Master还会记录修改数据的所有命令并缓存在数据文件中。
3后台进程完成缓存操作之后Master机器就会向slave机器发送数据文件slave端机器将数据文件保存到硬盘上然后将其加载到内存中接着Master机器就会将修改数据的所有操作一并发送给slave端机器。若slave出现故障导致宕机则恢复正常后会自动重新连接。
4Master机器收到slave端机器的连接后将其完整的数据文件发送给slave端机器如果Master同时收到多个slave发来的同步请求则Master会在后台启动一个进程以保存数据文件然后将其发送给所有的slave端机器确保所有的slave端机器都正常。
1.3 主从复制实操(一主二从)
主从复制架构
20.0.0.91MASTER
20.0.0.92SLAVE1
20.0.0.93SLAVE2
关闭防火墙
systemctl stop firewalld
setenforce 0
修改master配置文件
vim /etc/redis/6379.conf
--70--
bind 0.0.0.0
#修改监听地址为0.0.0.0,允许所有网段访问--137--
daemonize yes
#开启守护进程后台启动 --172--
logfile /var/log/redis_6379.log
#指定日志文件存放目录--264--
dir /var/lib/redis/6379
#指定工作目录--700--
appendonly yes
#开启AOF持久化功能/etc/init.d/redis_6379 restart修改slave配置文件
#salve1、slave2相同操作
vim /etc/redis/6379.conf
--70--
bind 0.0.0.0
#修改监听地址为0.0.0.0,允许所有网段访问--137--
daemonize yes
#开启守护进程后台启动 --172--
logfile /var/log/redis_6379.log
#指定日志文件存放目录--264--
dir /var/lib/redis/6379
#指定工作目录--288--
replicaof 20.0.0.91 6379
#指定要同步的Master节点的IP和端口--700--
appendonly yes
#开启AOF持久化功能
/etc/init.d/redis_6379 restart #重启redis
ss -natp | grep redis #查看主从服务器是否已建立连接 测试
测试主从复制以及读写分离 测试slave断开时master写入数据slave恢复正常后能否复制 二、Rdis的哨兵模式
在主从复制的基础上哨兵引入了主节点的自动故障转移。
2.1 哨兵模式的组成
哨兵节点 哨兵系统由一个或多个哨兵节点组成哨兵节点是特殊的redis节点不存储数据。
数据节点 主节点和从节点都是数据节点。
2.2 哨兵模式的原理
哨兵是一个分布式系统部署在每一个redis的节点之上用于在主从结构之间对每一台redis的服务进行监控。
1).监控 哨兵会不断地检查主节点和从节点是否运作正常。 每个哨兵节点每隔一秒通过ping命令方式检测主从之间的心跳线。 主节点在一定时间内没有回复或者回复了错误的消息此时哨兵就会主观地认为主节点下线 超过半数的哨兵节点认为主节点下线时才会将主节点认为客观下线。
2).自动故障转移 当主节点不能正常工作时哨兵会开始自动故障转移操作它会将失效主节点的其中一个从节点升级为新的主节点并让其它从节点改为复制新的主节点。主节点的选举原则 已经下线的从节点不会被选为主节点 选择配置文件当中优先级最高的从节点作为主节点(replica-priority 100) 选择一个复制数据最完整的从节点作为主节点。(如何实现切换主节点出现故障时从节点通过投票的方式选择一个新的master )
3).通知(提醒) 哨兵可以将故障转移的结果发送给客户端。
2.3 哨兵模式实操
修改哨兵节点配置文件
#所有节点相同操作
vim /opt/redis-5.0.7/sentinel.conf
--17--
protected-mode no
#取消注释关闭保护模式--21--
port 26379
#Redis哨兵默认的监听端口--26--
daemonize yes
#指定sentinel为后台启动--36--
logfile /var/log/sentinel.log
#指定日志文件存放路径--65--
dir /var/lib/redis/6379
#指定数据库存放路径--84--
sentinel monitor mymaster 20.0.0.91 6379 2
#指定该哨兵节点监控20.0.0.91:6379这个主节点该主节点的名称是mymaster。
#最后的2的含义与主节点的故障判定有关至少需要2个哨兵节点同意才能判定主节点故障并进行故障转移
--113--
sentinel down-after-milliseconds mymaster 30000
#判定服务器down掉的时间周期默认30000毫秒30秒--146--
sentinel failover-timeout mymaster 180000
#同一个sentinel对同一个master两次failover之间的间隔时间180秒
启动哨兵模式并查看哨兵状态
#启动三台节点上的哨兵模式
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf #在哨兵节点查看监控状态
[rootlocalhost ~]# redis-cli -p 26379 info Sentinel 模拟故障测试
#Master
ps -elf | grep redis
kill -9 pid号 #Master节点上redis-server的进程号
netstat -natp | grep redis