快速掌握Redis——第七招:运维必学 主从和监控sentinel(未排版)
2015-03-31 18:16
639 查看
1 主从同步 Replication
过程slave 配置复制(Replication)策略后,会向master 主动发送一个SYNC命令。Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master继续将所有已经收集到的修改命令,和新的修改命令依次传送给Slaves,Slave将在本次执行这些数据修改命令,从而达到最终的数据同步。如果Master和Slave之间的链接出现断连现象,Slave可以自动重连Master,但是在连接成功之后,又会完全同步数据,不是"增量"的。
配置
redis的主从很简单,master 几乎不用配置,主要配置 slave ,1个mater 可以有N个slave(若干个) ,而且当master遇到问题时,可以切换某一个slave 为master ,避免单点故障 ,保证数据完整性。
笔记本虚拟机内存有限,我就在不同的端口开启redis服务,达到不同机器(ip)开启redis的效果。
master port: 6379
slave 1 port: 6380
slave 2 port: 6381
[root@localhost redis]# ll total 160 drwxr-xr-x. 2 root root 4096 Mar 26 20:57 bin -rw-r--r--. 1 root root 120602 Mar 29 22:36 dump.rdb -rw-r--r--. 1 root root 36028 Mar 29 22:35 redis.conf [root@localhost redis]# ps -ef |grep redis root 2141 1 0 Mar29 ? 00:00:56 ./bin/redis-server *:6379 root 4986 4959 0 18:40 pts/0 00:00:00 grep redis [root@localhost redis]# kill -9 2141 [root@localhost redis]# cp redis.conf redis6380.conf [root@localhost redis]# vim redis6380.conf ## 将 # slaveof <masterip> <masterport> 改为 slaveof 127.0.0.1 6379 保存退出。 [root@localhost redis]# bin/redis-server ./redis6380.conf [root@localhost redis]# bin/redis-server ./redis.conf [root@localhost redis]# bin/redis-cli 127.0.0.1:6379> keys * 1) "name" 2) "fasdff" 3) "fasdfasf" 4) "counter:__rand_int__" 5) "faffffff" 6) "age" 7) "key:__rand_int__" 8) "faff" 9) "fafffssssdfafff" 10) "mylist"这是上次的数据,6379有数据了,重开个终端,连接 6380端口。
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 6380 127.0.0.1:6380> keys * 1) "name" 2) "faffffff" 3) "counter:__rand_int__" 4) "fasdfasf" 5) "fasdff" 6) "key:__rand_int__" 7) "age" 8) "mylist" 9) "faff" 10) "fafffssssdfafff"
数据太乱了,我在6379 端口执行flushdb ,在6380端口的数据也没了。
主从好处:
实际部署时,这么分配,原先的master(s) 主要做数据收集,slave(s)做备份,其他工作,分担主压力。
读写分离:为了分载Master的读操作压力,Slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由Master来完成。即便如此,系统的伸缩性还是得到了很大的提高。
Master 是以非阻塞的方式为Slaves提供服务。所以在Master-Slave同步期间,客户端仍然可以提交查询或修改请求。
Slave 同样是以非阻塞的方式完成数据同步。在同步期间,如果有客户端提交查询请求,Redis则返回同步之前的数据。
2
人工更改配置文件很 low , 请出哨兵( sentinel )复制sentinel.conf
[root@localhost redis]# cp /usr/local/src/redis-2.8.19/sentinel.conf /usr/local/redis/ [root@localhost redis]# ls bin dump.rdb redis6380.conf redis.conf sentinel.conf [root@localhost redis]# vim sentinel.conf [root@localhost redis]# grep -v ^# sentinel.conf | tee sentinel.conf #不显示配置的说明文件,重定向到sentinel.conf port 26379 dir /tmp sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 30000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 接下来配置下。
6380 和 6381 都是6379的slave:将各自配置文件slaveof设置为 slaveof 127.0.0.1 6379 并且端口改为各自端口。
sentinel.conf 我们这里只设置和6379(master)端口对应的哨兵sentinel,每个端口都可以设置哨兵。
[root@localhost redis]# ll total 120 drwxr-xr-x. 2 root root 4096 Mar 26 20:57 bin -rw-r--r--. 1 root root 40 Mar 30 21:37 dump.rdb -rw-r--r--. 1 root root 36085 Mar 30 21:37 redis6380.conf -rw-r--r--. 1 root root 36109 Mar 30 21:37 redis6381.conf -rw-r--r--. 1 root root 36028 Mar 29 22:35 redis.conf -rw-r--r--. 1 root root 824 Mar 30 21:37 sentinel.conf [root@localhost redis]# cat sentinel.conf #sentinel的端口 port 26379dir “/tmp”
自定义服务器名 mymater
控制的机器ip 端口
最后的”1”为当至少有1个从赞同sentinel的监控结果,判为主失效
sentinel monitor mymaster 127.0.0.1 6380 110000ms后连接不到master就认为断开了
sentinel down-after-milliseconds mymaster 10000sentinel can-failover mymaster yes
是否允许sentinel修改slave->master. 如为no,则只能监控,无权修改
允许一次性有几台slave连接新的master(建议一个)
sentinel config-epoch mymaster 13.启动各个端口服务。
[root@localhost redis]# bin/redis-server ./redis6380.conf [root@localhost redis]# bin/redis-server ./redis6381.conf [root@localhost redis]# bin/redis-server ./redis.conf
启动哨兵
[root@localhost redis]# bin/redis-server ./sentinel.conf --sentinel
5.重新开启个终端,杀死6379端口的服务,或者shutdown,这样等会儿就能切换优先级搞得slave作为master了。
[5780] 31 Mar 00:52:31.266 # +try-failover master mymaster 127.0.0.1 6380 [5780] 31 Mar 00:52:31.269 # +vote-for-leader 86d663c9700709770705bdb758337364eb82a102 3 [5780] 31 Mar 00:52:31.269 # +elected-leader master mymaster 127.0.0.1 6380
6380成为master了。
相关文章推荐
- Redis主从复制,读写分离及sentinel监控的使用
- 16 redis之sentinel运维监控
- redis总结3-持久化rdb,aof,运维命令,Sentinel监控
- Sentinel系统监控Redis主从节点
- redis-高级(事务,频道发布,消息订阅,持久化,主从复制,运维监控....)
- Redis的同步(主从复制)和Redis Sentinel
- redis 3.0 集群__监控警报工具(sentinel)
- 实现redis(主从,sentinel,cluster)的主从复制集群
- Redis集群:redis主从自动切换Sentinel
- redis sentinel 主从切换(failover)解决方案,详细配置
- Redis监控工具 sentinel
- centos下sentinel主从监控配置
- Redis主从集群的Sentinel配置
- sentinel redis 集群部署+zabbix监控配置+性能测试+多实例自动配置脚本
- redis主从集群搭建及容灾部署(哨兵sentinel)
- Redis 安装主从配置及Sentinel配置自动Failover
- redis-3.0.1 sentinel 主从高可用 详细配置
- 配置redis主从复制和sentinel模式
- 利用redis-sentinel实现redis主从高可用设计
- redis主从同步配置和哨兵机制监控master主从切换配置