主从复制
Redis主从复制作用:数据备份,读写分离,集群,高可用,宕机容错机制
Redis只支持一主(有继承关系) 一主一从(备)或一主多从(备)
如果主挂机,使用哨兵机制从备机中选举一台主出来。如果所有机都挂了,要使用keepalived脚本重启Redis。
哨兵机制只能重新选主机器,不能重启。
Redis自带主从复制的权限控制,主能读和写,从Redis只有读权限。不像mysql需要使用第三方mycat来控制
配置主从复制 主从redis的密码要一致 启动哨兵时,如果主挂了,再次重启后就要选择后redis的密码才能同步
主服务器redus配置
找到# masterauth <master-password> 修成masterauth 123456 -- 用于哨兵机制,如果主挂了,重启后选择出来主机的密码
从redis配置
1、克隆从服务器redis,克隆要记得刷新mac地址(网络适配器 NAT 高级)
2、修改从redis中的redis.conf文件 多个从redis配置也是一样的
找到# slaveof <masterip> <masterport>的位置 主服务器的ip地址和redis的端号口 如修改成slaveof 192.168.120.128 6379
找到# masterauth <master-password> 修成masterauth 123456--- 主服务器redis服务器配置了密码,则需要配置
这样就配置好主从复制了,主有读和写的权限。从只能读
./redis-cli -h 127.0.0.1 -p 6379 -a "123456" 进入redis 然后ping 信息pong表示通了,info replication查看信息
哨兵机制
哨兵(sentinel)机制 高可用 心跳检测、故障转移(选举策略)、监控
当主redis挂机,哨兵监听到会从备redis中重新选举一台redis做主机,之前的主redis重新连接后会变成备机
配置好主从复制之后(1主2从) 哨兵的默认端口26379
哨兵模式修改配置 。选择任意一台装了redis的机器都可以启动哨兵模式 主要是sentinel.conf配置文件
安装redis时将sentinel.conf复制到了/usr/local/redis/etc目录
1、打开 vi sentinel.conf
2、找到sentinel monitor mymaster 127.0.0.1 6379 2
修改成 sentinel monitor mymaster 192.168.110.133 6379 1
主节点名称(随意起) IP(主redis) 端口号(主redis) 哨兵确认数(为1:表示主redis挂了后,至少有1个sentinel(哨兵)确认主节点是挂了,主节点才会被客观认为是挂了 )
3、找到# sentinel auth-pass <master-name> <password>
修改成sentinel auth-pass mymaster 123456 #主节点名称,要与上面设置的名称一致 主redis的密码
4、修改心跳检测 默认30秒
找到sentinel down-after-milliseconds mymaster 30000
修改成 sentinel down-after-milliseconds mymaster 30 30毫秒,实时监测
5、修改sentinel parallel-syncs mymaster 2 --- (现在2个从redis) 指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
启动哨兵模式
./redis-sentinel /usr/local/redis/etc/sentinel.conf --sentinel &
取消主备。进入redis 后输入命令 slaveof no one
停止哨兵模式
ps aux | grep '26379'
kill -9 端口号
如果出现异常问题 把redus.conf和sentinel.conf的 #Generated by CONFIG REWRITE(通过配置重写生成) 后面的内容删除
之前遇到Gemerated和slaveof的内容没空行也会出问题。奇怪
哨兵模式的缺点:哨兵模式虽然实现了高可用,但在每个节点都会存在相同的数据,数据冗余,每台节点的数据量会很大
Redis3.0集群方式可以实现数据分片,来缓解每台redis节点的存储压力,还能缓解访问的压力。