redis主从配置和redis哨兵配置

主从配置

redis 主从配置master slave

优点:
防止单点故障(除了单机版,都可以)
读写分离,更好的实现多读写少
redis主从配置和redis哨兵配置_第1张图片
克隆两台redis虚拟机作为从机

复制操作文件
cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/bin/master.conf //redis1
cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/bin/slave1.conf //redis2
cp /usr/redis/redis-5.0.5/redis.conf /usr/redis/bin/slave2.conf //redis3

在all-session 中: ls /usr/redis/bin 修改配置文件:
在redis1主机修改配置文件 vim /usr/redis/bin/master.conf
:69 bind 192.168.152.31 绑定IP
:92 port 6666 端口号
:136 daemonize yes 守护进程

在redis2从机修改配置文件 vim slave1.conf
:136 daemonize yes 守护进程
:69 bind 192.168.152.32 绑定IP
:92 port 7777
在文件末尾加上一行 :1372 slaveof 192.168.152.31 6666

在redis3从机修改配置文件 vim slave2.conf
:136 daemonize yes 守护进程
:69 bind 192.168.152.33 绑定IP
:92 port 8888
在文件末尾加上一行 :1372 slaveof 192.168.152.31 6666

启动
redis1: /usr/redis/bin/redis-server /usr/redis/bin/master.conf
redis2: /usr/redis/bin/redis-server /usr/redis/bin/slave1.conf
redis3: /usr/redis/bin/redis-server /usr/redis/bin/slave2.conf

在all-session中: ps -ef |grep redis-server|grep -v grep

测试:
redis1: /usr/redis/bin/redis-cli -h 192.168.152.31 -p 6666 info
redis2: /usr/redis/bin/redis-cli -h 192.168.152.32 -p 7777 info
redis3: /usr/redis/bin/redis-cli -h 192.168.152.33 -p 8888 info

在all-session中使用: info replication查看主从机角色

redis1主机可以读写
redis2,redis3只能读取

特点:master/slave角色分工明确,master/slave数据相同,降低master读压力,从库分担

原理:
redis主从配置和redis哨兵配置_第2张图片
1.从机服务器链接主机服务器,发送PSYN命令
2.主服务器接受到PSYN命令后,开始fork子进程执行BGSAVE命令将当前存在的数据生成RDB文件,并使用缓冲区记录此后执行的所有写命令
3.主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
4.从服务器收到快照文件后丢弃旧数据,加载收到的快照文件
5.主服务器块照发送完毕后开始向从服务区发送缓冲区中的写命令
6.从服务器完成对快照的载入,开始接收命令的请求,并执行这些来自缓冲区的写命令

缺点:
无法保证高可用,一旦主服务器挂了,整个主从就不能写数据了
没有解决master的写压力

redis 哨兵配置 sentinel

优点:解决了master宕机没有写节点的问题,从slave中选举新的主节点,执行写操作

实现:

redis1执行: cp /usr/redis/redis-5.0.5/sentinel.conf /usr/redis/bin/sentinel1.conf
vim /usr/redis/redis-5.0.5/sentinel1.conf
redis2执行: cp /usr/redis/redis-5.0.5/sentinel.conf /usr/redis/bin/sentinel2.conf
vim /usr/redis/redis-5.0.5/sentinel2.conf

redis3执行: cp /usr/redis/redis-5.0.5/sentinel.conf /usr/redis/bin/sentinel3.conf
vim /usr/redis/redis-5.0.5/sentinel3.conf

#关闭保护模式 当开启保护模式的时候默认只能本机连
protected-mode no #17

#哨兵端口port 26666 #21 port 27777 port 28888

#添加守护进程模式daemonize yes #26

#添加指明日志文件名logfile “./temp.log” #36

#修改工作目录dir “/tmp” #65

#哨兵监控的master名称可以随便起,ip和端口固定 quorum 当哨兵是集群时,有多少个哨兵认为master失效(客观下线),master才算失效。
sentinel monitor mymaster 192.168.152.31 8888 1 #84

#master或slave多长时间(默认30秒)不能使用后标记为down状态。
sentinel down-after-milliseconds mymaster 30000 #113

#设置master和slaves验证密码
sentinel auth-pass mymaster 123456 #103

哨兵启动:

redis1启动: /usr/redis/bin/redis-sentinel /usr/redis/bin/sentinel1.conf

redis2启动: /usr/redis/bin/redis-sentinel /usr/redis/bin/sentinel2.conf

reids3启动: /usr/redis/bin/redis-sentinel /usr/redis/bin/sentinel3.conf

在all-session中:ps -ef|grep redis|grep -v grep可以看到redis实例和哨兵实例

测试: shutdown save 在redis1 执行

info replication 在All Session执行(稍等一会,节点切换需要时间)

看到redis2或者3已经变成了master,可以读写

/usr/redis/bin/redis-server /usr/redis/bin/master.conf //启动redis1

/usr/redis/bin/redis-cli -h 192.168.152.31 -p 6666
edis1自动变为从机 在redis1宕机期间,其他主机执行命令的结果都会被同步

注意:超过半数哨兵宕机,则哨兵模式无效

ps -ef|grep redis |grep -v grep 查看哨兵进程

特点:高可用,哨兵监控各个节点,自动故障迁移

缺点:主从模式切换需要时间,切换期间不能对外提供服务,没有解决master写的压力

原理:
redis主从配置和redis哨兵配置_第3张图片

1.监控:sentinel会不断的检查你的主服务器和从服务器是否正常运作
两个定时任务:
每十秒每个sentinel对master和slave执行info 目的:发现是slave节点,确认主从关系

每一秒每个sentinel对其它sentinel和redis实例执行ping 目的:心跳失败判断依据

2.当主机宕机

3.在从机服务器中执行SLAVEOF NO ONE 命令,断开主从关系并且提升为主库继续服务

当有多个从节点遵循下列原则选举新主节点:
slave-priority最高的slave节点(默认相同1)
选择复制偏移量最大的节点
否则选择runid最小的

4.将主库重新启动后执行SLAVEOF 命令,将其设置为从库,数据更新回来

你可能感兴趣的:(Java,redis,缓存,数据库)