单机
单点故障、瓶颈;多个节点负载;
集群
定义
Replication
镜像:增删改<主 退化至单节点> 查询负载到从节点
实现高可用 Sentinel
redis-server --port 6380 --slaveof 127.0.0.1 6379
SLAVEOF host port命令,将当前服务器状态从Master修改为别的服务器的Slave
redis > SLAVEOF 192.168.1.1 6379,将服务器转换为Slave
redis > SLAVEOF NO ONE ,将服务器重新恢复到Master,不会丢弃已同步数据
配置方式:启动时,服务器读取配置文件,并自动成为指定服务器的从服务器
slaveof <masterip> <masterport>
slaveof 127.0.0.1 6379
主从复制问题 手动解决master挂掉
Sentinel哨兵,实现故障转移Failover高可用
监控Monitoring
Sentinel会不断检查Master和Slaves是否正常
每一个Sentinel可以监控任意多个Master和该Master下的Slaves
当主服务器下线时
当一个sentinel认为被监视的服务器已经下线时,它会向网络中的其他Sentinel进行确认,判断该服务器是否真的已经下线
如果下线的服务器为主服务器,那么sentinel网络将对下线主服务器进行自动故障转移,通过将下线主服务器的某个从服务器提升为新的主服务器,并让其从服务器转为复制新的主服务器,以此来让系统重新回到上线的状态
Sentinel配置文件
至少包含一个监控配置选项,用于指定被监控Master的相关信息
Sentinel monitor<name><ip><port><quorum>,例如sentinel monitor mymaster 127.0.0.1 6379 2监视mymaster的主服务器,服务器ip和端口,将这个主服务器判断为下线失效至少需要2个Sentinel同意,如果多数Sentinel同意才会执行故障转移
Sentinel会根据Master的配置自动发现Master的Slaves
Sentinel默认端口号为26379
Sentinel 总结
1 主从复制,解决了读请求的分担,从节点下线,会使得读请求能力有所下降
2 Master只有一个,写请求单点问题
3 Sentinel会在Master下线后自动执行Failover操作,提升一台Slave为Master,并让其他Slaves重新成为新Master的Slaves
4 主从复制+哨兵Sentinel只解决了读性能和高可用问题,但是没有解决写性能问题
配置方案
Twemproxy配置
redischi:
listen: 192.168.56.201:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 3
servers:
- 192.168.56.201:6379:1
- 192.168.56.202:6379:1
- 192.168.56.203:6379:1
配置说明
Twemproxy配置说明
redischi,服务器池的名字,支持创建多个服务器池
listen: 192.168.56.201:22121,这个服务器池的监听地址和端口号
hash: fnv1a_64,键散列算法,用于将键映射为一个散列值
distribution: ketama,键分布算法,决定键被分布到哪个服务器
redis: true,代理redis命令请求,不给定时默认代理memcached请求
servers,池中各个服务器的地址和端口号及权重
auto_eject_hosts、
server_failure_limit: twemproxy连续3次向同一个服务器发送命令请求都遇到错误时,twemproxy就会将该服务器标记为下线,并交由池中其他在线服务器处理
整合方案
https://github.com/changyibiao/redis-mgr
一站式的Redis服务器部署、监控、迁移功能
Redis集群
本文地址:https://blog.csdn.net/chixushuchu/article/details/85990130
如对本文有疑问, 点击进行留言回复!!
将音频文件转二进制分包存储到Redis的实现方法(奇淫技巧操作)
网友评论