redis主从设置 监控工具sentinel

1 redis主从复制(replication):


redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,
当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,不能执行写操作,并接受主数据库同步过来的数据,
即使通过修改从节点redis.conf的slave-read-only no,将从节点修改成可写,那么从节点写入的数据也不会被也不能被同步到主节点或者其他从节点上。
数据同步只能是从主到从的单方向操作。
一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库。

配置主从做法1 :修改配置文件redis.conf,只修改从数据库

修改从数据库的配置文件,修改为:
slaveof host(主数据库地址) 端口
eg: slaveof 192.168.1.110 6379
修改后,重启从节点上的redis,重启后会发现从节点会自动从主节点上备份数据


设置主从以及主节点负责写,同步到其余数据,从节点只负责读的目的是实现数据的读写分离,提高速度。


配置主从做法2 :命令行写动态设置主从节点(生产环境下不建议  数据库重启后 这些设置的命令行将失效)
从节点上执行命令:
192.168.1.111:6379>slaveof 192.168.1.110 6379
取消111的从节点设置,取消后111变成自己机器的主节点
192.168.1.111:6379>slaveof no one


通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力。主数据库主要进行写操作,而从数据库负责读操作。


主从复制原理:
原理:
1:当一个从数据库启动时,会向主数据库发送sync命令,
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
注意:redis2.8之前的版本:当主从数据库同步的时候因为网络原因断开重连后会重新执行上述操作,不支持断点续传。
redis2.8之后支持断点续传。


如果redis只是作为一个缓存来使用,那么只需要一个节点就可以。

如果主数据库设置了密码, 那么在从数据库的 redis.conf文件中,设置masterauth的密码,来实现免密码连接主数据库的目的。
否则同步数据失败。

 

 

 

2 监控工具sentinel

 
redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务
1:监控
2:提醒
3:自动故障转移


配置sentinel
修改redis/sentinel.conf文件:
sentinel monitor 自定义监控名称 监控节点IP 监控节点端口 num num表示至少有多少个sentinel认为master失效后才执行故障转移操作
由num引出如下概念:
主观下线: 只有一个sentinel实例认为主节点下线,即只启动一个sentinel 监听主节点  这个启动的sentinel可以放在主节点上 可以放在从节点上
客观下线: 多个sentinel实例认为主节点下线,即只启动多个sentinel 监听主节点  
sentinel 也是一个进程,一个节点可以有一个或者多个sentinel,只有启动的这个sentinel进程端口不同即可
   
上图如下:

。。。。。。


配置sentinel:
sentinel monitor mymaster 127.0.0.1 6379 1
启动sentinel的两种方式
1) redis-sentinel sentinel.conf
2) redis-server sentinel.conf --sentinel

实验:  一个sentinel 一个master 一个slaver

111上设置为从:

110节点上:
cp sentinel.conf /etc/
vi sentinel.conf
sentinel monitor mymaster 192.168.1.170 6379 1    --->监听主节点,如果主节点挂掉则让从节点为主 当主节点被人为开启后,依旧让 主为主 从节点从主变更为从

启动redis

启动sentinel


111节点上:
启动redis
命令行中动态设置从节点:  ----> 这样在测试sentinel切换机器以及手动回复主节点后 在回归主节点为master实验上能做好
slaveof 192.168.1.110 6379

110上,shutdown 关闭
后看110上sentinel的日志变化, +switch-master 110 111节点上
然后在启动110上,再看110的sentinel的日志变化,此时110启动后变成主节点  111位从节点

实验:  两个sentinel 一个master 一个slaver

110 111上:
110节点上:
cp sentinel.conf /etc/
vi sentinel.conf
sentinel monitor mymaster 192.168.1.110 6379 2


监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态。

提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。

自动故障转移(Automatic failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器, 并对其他从服务器进行配置,让它们使用新的主服务器。当应用程序连接到 Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口。

sentinel一些命令:
INFO
sentinel的基本状态信息
SENTINEL masters
列出所有被监视的主服务器,以及这些主服务器的当前状态
SENTINEL slaves <master name>
列出给定主服务器的所有从服务器,以及这些从服务器的当前状态
SENTINEL get-master-addr-by-name <master name>
返回给定名字的主服务器的 IP 地址和端口号
SENTINEL reset <pattern>
重置所有名字和给定模式 pattern 相匹配的主服务器。重置操作清除主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel 。
SENTINEL failover <master name>
当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移,但是它会给其他sentinel发送一个最新的配置,其他sentinel会根据这个配置进行更新
 


 

猜你喜欢

转载自chengjianxiaoxue.iteye.com/blog/2191247