安装
- 通过wget 下载安装
- 解压
- make
配置后台启动和配置密码
修改redis.conf 里daemonize no 为daemonize yes,默认不守护进程运行,yes是通过pid监听 密码配置requirepass
src/Redis-server redis.conf
关闭 ./src/redis-cli shutdown 如果有密码的话,进入cli里输入密码在shutdown
配置主从同步
- 使用info replication 查看当前节点的主从配置
修改文件redis.conf 里 replicaof <masterip> <masterport> 为replicaof 主节点ip 端口
masterauth <master-password> 为 masterauth 主节点密码
这里对主节点不做任何操作,只对从节点配置
- 注意事项:
redis版本需要一致,密码对应设置一致比较好
Redis设置bind 0.0.0.0 ,所有可以访问,或者只对那台访问
关闭防火墙,或者开启redis端口,只要从服务器可以连接到主服务器就可以了
可以根据配置文件查看相应配置需求
目前aof无磁盘同步,通过内存复制还在测试阶段,目前还是使用rdb磁盘
哨兵模式
引子
- Master挂了,如何保证可读性,实现继续读写
什么是哨兵
Sentinel(哨兵)是用于监控redis集群中master状态的工具,是redis高可用解决方案,哨兵可以监视一个或多个redis master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个从服务升级为master来替代已宕机的master继续工作。
配置哨兵监控master
- 创建并配置sentinel.conf文件
Port、pidfile、dir、deamonize、protected-mode no、logfile
- 核心配置
#告诉sentinel去监听地址为ip:port的一个master,这里的master-name可以自定义,quorum是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效
sentinel monitor <master-name> <ip> <redis-port> <quorum>
#设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同。
sentinel auth-pass <master-name> <password>
#这个配置项指定了需要多少失效时间,一个master才会被这个sentinel主观地认为是不可用的。 单位是毫秒,默认为30秒
sentinel down-after-milliseconds <master-name> <milliseconds>
#这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。
sentinel parallel-syncs <master-name> <numslaves>
#failover-timeout 可以用在以下这些方面: 1. 同一个sentinel对同一个master两次failover之间的间隔时间。 2. 当一个slave从一个错误的master那里同步数据开始计算时间。直到slave被纠正为向正确的master那里同步数据时。 3.当想要取消一个正在进行的failover所需要的时间。 4.当进行failover时,配置所有slaves指向新的master所需的最大时间。不过,即使过了这个超时,slaves依然会被正确配置为指向master,但是就不按parallel-syncs所配置的规则来了。
sentinel failover-timeout <master-name> <milliseconds>
-
启动哨兵X3
Redis-sentinel sentinel.conf
-
测试
1、挂掉主节点,看slave是否成为master
2、Master恢复,是否为slave
3、查看相关信息
连接redis-cli -a 密码 -h ip -p 端口(26379)
#查看lg-master下master节点信息
Sentinel master lg-master
#查看lg-master下的slaves节点信息
Sentinel slaves lg-master
#查看lg-master下的哨兵节点信息
Sentinel sentinels lg-master
- 结论
Master挂了以后,由于哨兵监控,剩余slave会进行选举,选举后其中一个成为master,当原来的master恢复后,他会成为slave
- 注意事项:
1、配置redis主从时master没有配置replication 相应配置,如果没有配置的话,在使用哨兵时,master重启后显示其他节点为down
2、主要哨兵配置核心,仔细检查,尤其down-after-milliseconds
3、关闭防火墙,或者开启sentinel端口
4、设置bind 为0.0.0.0 或者填写对应ip
5、统一所有的密码,不要漏了某个节点没有设置
集群与环境准备
主要是为了解决一主多从主机宕机后1到2秒数据丢失和恢复主机后同步数据会丢失几秒的
前面我们一起学习了主从以及哨兵,他们可以提高读的并发,但是单个master容量有限,数据达到一定程度会有瓶颈,这个时候可以通过水平扩展为多master-slave成为集群。
那么redis-cluster集群诞生了,他可以支撑度多个master-slave,支持海量数据,实现高可用与高并发
哨兵模式其实也是一种集群,他能够提高读请求的并发,但是容错方面可能会有一些问题,比如master同步数据给slave同步数据给slave的时候,这其实是异步复制吧,这个时候master挂了,那么slave上的数据就没有master新,数据同步需要时间的,1-2秒的数据丢失,master恢复并转换成slave后,新数据则丢失。
- 特点
1、每个节点知道彼此之间的关系,也会知道自己的角色,当然他们也会知道自己存在与一个集群环境中,他们彼此之间可以交互和通信,,比如ping pong,那么这些关系都会保存到某个配置文件中,每个节点都有,这个我们在搭建的时候会配置的
2、客户端要和集群建立连接的话,只需要和其中一个建立关系就行。
3、某个节点挂了,也是通过超过半数的节点来进行的检测,客观下线后主从切换,和我们之间在哨兵模式中提到的是一个道理
4、Redis中存在很多的插槽,又可以称之为槽节点,用于存储数据,这个先不管,后面再说
集群容错
构建redis集群,需要至少三个节点做为master,以此组成一个高可用的集群,此外每个master都需要配置一个slave,所以整个集群需要6个节点,这个是最经典的redis集群,也可称为三主三从,容错性更佳,所以在搭建的时候需要有6台虚拟机,请准备好6台虚拟机,也可以克隆
集群也可以是在但服务器构建,称为伪集群,但是在生产环境肯定是真的,所以建议6台
克隆关闭redis
- Redis.conf 配置
#开启集群模式
Cluster-enabled yes
#每一个节点需要有一个配置问价,需要6份,每个节点处于集群的角色都需要告诉其他所有节点,彼此知道,这个文件用于存储集群模式状态等信息
Cluster-config-file nodes-201.conf
#超时时间,超时则认为master宕机,随后主备切换
Cluster-node-timeout 5000
#开启aof
Appendonly yes
- 启动6个redis实例
1、启动6台
2、如果启动过程出错,把rdb等文件删除清空
- 创建集群
Redis 3.*版本,需要redis-trib.rb来构建集群,最新版本是c语言编写
#创建集群。主节点和从节点比例为1
Redis-cli --cluster create ip1:port1 ip2:port2.... --cluster-relicas 1
Slot:槽,用于装数据,主节点有,从节点,从节点没有
- 检查集群信息
redis-cli --cluster check 192.168.195.121:6379
- 通过槽点查看所有
./src/redis-cli -c -h 192.168.195.122 -p 6379
- 注意事项:
1、防火墙关闭,切记,切记,切记,这里集群的总线程端口为16379,否则构建集群时一直在等待
详细迁移导入可以参考下面链接
https://www.cnblogs.com/zhoujinyi/p/11606935.html
https://www.cnblogs.com/kevingrace/p/7910692.html