保定网站模板建站,简述seo,wordpress用七牛,境外 网站网站目录 
一、Redis 主从复制 
1、主从复制的作用 
2、主从复制流程 
3、搭建Redis 主从复制 
安装Redis#xff08;所有主机) 修改Master节点Redis配置文件 
修改Slave节点Redis配置文件 
验证主从效果 一、Redis 主从复制 
主从复制#xff0c;是指将一台Redis服务器的数据所有主机) 修改Master节点Redis配置文件 
修改Slave节点Redis配置文件 
验证主从效果 一、Redis 主从复制 
主从复制是指将一台Redis服务器的数据复制到其他的Redis服务器。前者称为主节点(Master)后者称为从节点(Slave)数据的复制是单向的只能由主节点到从节点。 
默认情况下每台Redis服务器都是主节点且一个主节点可以有多个从节点(或没有从节点)但一个从节点只能有一个主节点。 
1、主从复制的作用 
数据冗余主从复制实现了数据的热备份是持久化之外的一种数据冗余方式。 故障恢复当主节点出现问题时可以由从节点提供服务实现快速的故障恢复实际上是一种服务的冗余。 负载均衡在主从复制的基础上配合读写分离可以由主节点提供写服务由从节点提供读服务即写Redis数据时应用连接主节点读Redis数据时应用连接从节点分担服务器负载尤其是在写少读多的场景下通过多个从节点分担读负载可以大大提高Redis服务器的并发量。 高可用基石除了上述作用以外主从复制还是哨兵和集群能够实施的基础因此说主从复制是Redis高可用的基础。 
2、主从复制流程 
1若启动一个Slave机器进程则它会向Master机器发送一个“sync command”命令请求同步连接。 2无论是第一次连接还是重新连接Master机器都会启动一个后台进程将数据快照保存到数据文件中执行rdb操作同时Master还会记录修改数据的所有命令并缓存在数据文件中。 3后台进程完成缓存操作之后Master机器就会向Slave机器发送数据文件Slave端机器将数据文件保存到硬盘上然后将其加载到内存中接着Master机器就会将修改数据的所有操作一并发送给Slave端机器。若Slave出现故障导致宕机则恢复正常后会自动重新连接。 4Master机器收到Slave端机器的连接后将其完整的数据文件发送给Slave端机器如果Master同时收到多个Slave发来的同步请求则Master会在后台启动一个进程以保存数据文件然后将其发送给所有的Slave端机器确保所有的Slave端机器都正常。 
3、搭建Redis 主从复制 
安装Redis所有主机) 
systemctl stop firewalld
setenforce 0yum install -y gcc gcc-c maketar zxvf redis-5.0.7.tar.gz -C /opt/cd /opt/redis-5.0.7/
make
make PREFIX/usr/local/redis installcd /opt/redis-5.0.7/utils
./install_server.sh回车四次下一步需要手动输入Please select the redis executable path [] /usr/local/redis/bin/redis-server  	ln -s /usr/local/redis/bin/* /usr/local/bin/ 修改Master节点Redis配置文件 
vim /etc/redis/6379.conf
bind 0.0.0.0						#70行修改bind 项0.0.0.0监听所有网段
daemonize yes						#137行开启守护进程
logfile /var/log/redis_6379.log		#172行指定日志文件目录
dir /var/lib/redis/6379				#264行指定工作目录
appendonly yes						#700行开启AOF持久化功能/etc/init.d/redis_6379 restart 修改Slave节点Redis配置文件 
vim /etc/redis/6379.conf
bind 0.0.0.0						#70行修改bind 项0.0.0.0监听所有网卡
daemonize yes						#137行开启守护进程
logfile /var/log/redis_6379.log		#172行指定日志文件目录
dir /var/lib/redis/6379				#264行指定工作目录
replicaof 192.168.10.27 6379		#288行指定要同步的Master节点IP和端口
appendonly yes						#700行开启AOF持久化功能/etc/init.d/redis_6379 restart 验证主从效果 实验成功  
二、哨兵模式 
主从切换技术的方法是当服务器宕机后需要手动一台从机切换为主机这需要人工干预不仅费时费力而且还会造成一段时间内服务不可用。为了解决主从复制的缺点就有了哨兵机制。 
哨兵的核心功能在主从复制的基础上哨兵引入了主节点的自动故障转移。 
1、哨兵模式的作用 
监控哨兵会不断地检查主节点和从节点是否运作正常。 
自动故障转移当主节点不能正常工作时哨兵会开始自动故障转移操作它会将失效主节点的其中一个从节点升级为新的主节点并让其它从节点改为复制新的主节点。 
通知提醒哨兵可以将故障转移的结果发送给客户端。 
2、哨兵结构 
哨兵结构由两部分组成哨兵节点和数据节点 哨兵节点哨兵系统由一个或多个哨兵节点组成哨兵节点是特殊的redis节点不存储数据。 数据节点主节点和从节点都是数据节点。 
3、故障转移机制 
1.由哨兵节点定期监控发现主节点是否出现了故障 每个哨兵节点每隔1秒会向主节点、从节点及其它哨兵节点发送一次ping命令做一次心跳检测。如果主节点在一定时间范围内不回复或者是回复一个错误消息那么这个哨兵就会认为这个主节点主观下线了单方面的。当超过半数哨兵节点认为该主节点主观下线了这样就客观下线了。 
2.当主节点出现故障此时哨兵节点会通过Raft算法选举算法实现选举机制共同选举出一个哨兵节点为leader来负责处理主节点的故障转移和通知。所以整个运行哨兵的集群的数量不得少于3个节点。 
3.由leader哨兵节点执行故障转移过程如下 将某一个从节点升级为新的主节点让其它从节点指向新的主节点 若原主节点恢复也变成从节点并指向新的主节点 通知客户端主节点已经更换。 
需要特别注意的是客观下线是主节点才有的概念如果从节点和哨兵节点发生故障被哨兵主观下线后不会再有后续的客观下线和故障转移操作。 
4、主节点的选举 
1.过滤掉不健康的已下线的没有回复哨兵 ping 响应的从节点。 2.选择配置文件中从节点优先级配置最高的。replica-priority默认值为100 3.选择复制偏移量最大也就是复制最完整的从节点。 
哨兵的启动依赖于主从模式所以须把主从模式安装好的情况下再去做哨兵模式 
5、实验部署 
修改所有 Redis 配置文件 
systemctl stop firewalld
setenforce 0vim /opt/redis-5.0.7/sentinel.conf
protected-mode no								#17行关闭保护模式
port 26379										#21行Redis哨兵默认的监听端口
daemonize yes									#26行指定sentinel为后台启动
logfile /var/log/sentinel.log					#36行指定日志存放路径
dir /var/lib/redis/6379						#65行指定数据库存放路径
sentinel monitor mymaster 192.168.10.27 6379 2	#84行修改 指定该哨兵节点监控192.168.10.27:6379这个主节点该主节点的名称是mymaster最后的2的含义与主节点的故障判定有关至少需要2个哨兵节点同意才能判定主节点故障并进行故障转移
sentinel down-after-milliseconds mymaster 30000	#113行判定服务器down掉的时间周期默认30000毫秒30秒
sentinel failover-timeout mymaster 180000		#146行故障节点的最大超时时间为180000180秒 先启动主再启动从 
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf  
故障模拟 
查看Redis进程号并杀掉此时从会立即顶上 
ps aux | grep redis
tail -f /var/log/sentinel.log
redis-cli -p 26379 INFO Sentinel 三、群集模式 
集群即Redis Cluster是Redis 3.0开始引入的分布式存储方案。 
集群由多组节点(Node)组成Redis的数据分布在这些节点中。集群中的节点分为主节点和从节点只有主节点负责读写请求和集群信息的维护从节点只进行主节点数据和状态信息的复制。 
1、集群的作用 
数据分区数据分区(或称数据分片)是集群最核心的功能。 集群将数据分散到多个节点一方面突破了Redis单机内存大小的限制存储容量大大增加另一方面每个主节点都可以对外提供读服务和写服务大大提高了集群的响应能力。 Redis单机内存大小受限问题在介绍持久化和主从复制时都有提及例如如果单机内存太大bgsave和bgrewriteaof的fork操作可能导致主进程阻塞主从环境下主机切换时可能导致从节点长时间无法提供服务全量复制阶段主节点的复制缓冲区可能溢出。 
高可用集群支持主从复制和主节点的自动故障转移与哨兵类似当任一节点发生故障时集群仍然可以对外提供服务。 
2、集群的数据分片 
Redis集群引入了哈希槽的概念 Redis集群有16384个哈希槽编号0-16383 集群的每组节点负责一部分哈希槽 每个Key通过CRC16校验后对16384取余来决定放置哪个哈希槽通过这个值去找到对应的插槽所对应的节点然后直接自动跳转到这个对应的节点上进行存取操作 
#以3个节点组成的集群为例 节点A包含0到5460号哈希槽 节点B包含5461到10922号哈希槽 节点C包含10923到16383号哈希槽 
3、集群的主从复制模型 
集群中具有A、B、C三个节点如果节点B失败了整个集群就会因缺少5461-10922这个范围的槽而不可以用。 为每个节点添加一个从节点A1、B1、C1整个集群便有三个Master节点和三个slave节点组成在节点B失败后集群选举B1位为的主节点继续服务。当B和B1都失败后集群将不可用。 
4、实验部署 
redis的集群一般需要6个节点3主3从。方便起见这里所有节点在同一台服务器上模拟 以端口号进行区分3个主节点端口号6001/6002/6003对应的从节点端口号6004/6005/6006。 
cd /usr/local/redis/
mkdir -p redis-cluster/redis600{1..6}for i in {1..6}
do
cp /opt/redis-7.0.9/redis.conf /usr/local/redis/redis-cluster/redis600$i
cp /opt/redis-7.0.9/src/redis-cli /opt/redis-7.0.9/src/redis-server /usr/local/redis/redis-cluster/redis600$i
done 
开启集群 
#其他5个文件夹的配置文件以此类推修改注意6个端口都要不一样。
cd /usr/local/redis/redis-cluster/redis6001
vim redis.conf
#bind 127.0.0.1									#87行注释掉bind项默认监听所有网卡
protected-mode no								#111行关闭保护模式
port 6001										#138行修改redis监听端口
daemonize yes									#309行设置为守护进程后台启动
pidfile /usr/local/redis/log/redis_6001.pid		#341行指定 PID 文件
logfile /usr/local/redis/log/redis_6001.log	#354行指定日志文件
dir ./											#504行指定持久化文件所在目录
appendonly yes									#1379行开启AOF
cluster-enabled yes								#1576行取消注释开启群集功能
cluster-config-file nodes-6001.conf				#1584行取消注释群集名称文件设置
cluster-node-timeout 15000						#1590行取消注释群集超时时间设置