redis中间件

第五章----Redis三种集群详解

2020-03-17  本文已影响0人  枫子夜

Redis集群的三种模式

一张图看懂Redis部署演变方式:

Redis进化史

1. 主从复制(master/slave)

port 8001
slaveof 172.31.133.70 7001
修改redis.conf 启动 验证 主从链

其中master可读写,slave为只读,提高了服务读的能力,一定程度上缓解写能力,可修改redis.conf配置主服务器,也可动态执行slaveof语句配置丛服务器。

master slave
等待命令接入 连接master 发送sync命令
开始执行bgsave命令,并使用缓存区记录bgsave之后的写命令 根据配置决定继续接入本服务器命令还是返回接入命令错误提示
bgsave完毕 向从服务器发送快照文件,并继续缓存写命令 清空本服务数据,载入master快照文件
快照执行完毕,向从服务器发送缓存的写命令 像往常一样接收写命令
缓存区执行完毕,以后每个写命令都同步给从服务器 执行缓存区命令,并接收以后的每一个写命令

从服务器同步快照的时候会清空自身原有数据,Redis不支持主主同步,当多个从服务器连接主服务器时快照文件可以重用

主从链模式,可以分担主服务器的复制工作,当中间层从服务器同步数据的时候会断开与下层的连接,同步完毕后,须重新连接重新同步

1. 连接主服务器
slaveof 172.31.133.70 7001
2. 查看主从信息
info replication
3. 解除主从关系
info no one

2. 哨兵模式(sentinel)

port 9001
#判断master失效至少需要2个sentinel同意,建议设置为n/2+1,n为sentinel个数
sentinel monitor mymaster 172.31.133.70 7001 2   
#判断master主观下线时间,默认30s              
sentinel down-after-milliseconds mymaster 30000                 
./redis-sentinel ../redis-sentinel/sentinel-9001.conf 
启动信息
#查找进程,日志可看到7001端口宕机,master切换到8002端口
ps -ef | grep redis
#强制杀掉进程
kill -9 799
sentinel日志

sentinel模式是在主从模式基础上升级版,哨兵主要任务就是:监控、提醒、自动故障切换

一点也不乱

3. cluster模式

bind 172.31.133.70
port 7001
daemonize yes
pidfile /var/run/redis_7001.pid
logfile "/app/redis/redis-cluster/7001/redis-7001.log"
dir "/app/redis/redis-cluster/7001"        # node.conf文件保存路径
appendonly yes
appendfsync everysec
cluster-enabled yes        # 开启集群
cluster-config-file nodes-7001.conf        # 该文件中包含集群信息
cluster-node-timeout 15000
cluster搭建
vim /app/redis/redis-cluster/cluster.sh

# 文件内容
cd ../src/
./redis-server ../redis-cluster/7001/redis-7001.conf
./redis-server ../redis-cluster/7002/redis-7002.conf
./redis-server ../redis-cluster/7003/redis-7003.conf
./redis-server ../redis-cluster/7004/redis-7004.conf
./redis-server ../redis-cluster/7005/redis-7005.conf
./redis-server ../redis-cluster/7006/redis-7006.conf

# 授权执行
chmod u+x cluster.sh
启动服务器
# redis5之后就可以用redis-cli命令创建,--cluster-replicas 1  表示前三个为master后三个为slave
./redis-cli --cluster create 118.190.***.***:7001 118.190.***.***:7002 118.190.***.***:7003 118.190.***.***:7004 118.190.***.***:7005 118.190.***.***:7006 --cluster-replicas 1 
开启集群
# -c 表示集群方式登录 如有密码 -a
./redis-cli -h 172.31.133.70 -p 7001 -c
# 查看集群节点信息
cluster nodes
# 查看集群基本信息
cluster info
集群信息 节点宕机
# 增加节点,新增节点都是master节点
cluster meet 172.31.133.70 7007

# 更改节点身份(node_id)
cluster replicate 10c632232237a7703f21fb64c8e848fd5ecef63d

# 删除节点 ,无法删除自己
cluster forget 10c632232237a7703f21fb64c8e848fd5ecef63d

#保存配置
cluster saveconfig
cluster模型

假设6 台机器,3 台机器部署了 redis 主实例,另外 3 台机器部署了 redis 的从实例,每个主实例挂了一个从实例,3个节点对外提供读写服务,每个节点的读写高峰qps可能可以达到每秒 5 万,3 台机器最多是 15 万读写请求/s。

假设32G 内存+ 8 核 CPU + 1T 磁盘,分配给 redis 进程的是10g内存,一般线上生产环境,redis 的内存尽量不要超过 10g,超过 10g 可能会有问题。


花开如火 也如寂寞

上一篇下一篇

猜你喜欢

热点阅读