Redis基于HA的集群布署 -- Redis Sentinel
来源:互联网 发布:推荐有品质的淘宝女装 编辑:程序博客网 时间:2024/06/05 14:14
Redis基于HA的集群布署 – Redis Sentinel
Redis Sentinel规划
考虑到大多数学习者环境有限,我们使用如下配置:
所以我们在一台服务器上安装3个目录:
- redis1-对应master
- redis2-对应slave
- redis-sentinel对应sentinel,它使用26379这个端口来监控master和slave
因此我们使用redis-stable源码包来如此构建我们的实验环境:
[root@bogon redis-stable]# make PREFIX=/usr/local/redis1 install[root@bogon redis-stable]# make PREFIX=/usr/local/redis2 install[root@bogon redis-stable]# make PREFIX=/usr/local/redis-sentinel install
根据redis安装教程安装 三个测试redis
Sentinel中的配置
更改/usr/local/redis-sentinel/bin/sentinel.conf
文件:
port 26379 daemonize yes logfile "/var/log/redis/sentinel.log" sentinel monitor master1 192.168.56.101 7001 1 sentinel down-after-milliseconds master1 1000 sentinel failover-timeout master1 5000 #sentinel can-failover master1 yes #remove from 2.8 and aboved version
daemonize yes – 以后台进程模式运行
port 26379 – 哨兵的端口号,该端口号默认为26379,不得与任何redis node的端口号重复
logfile “/var/log/redis/sentinel.log“ – log文件所在地
sentinel monitor master1 192.168.56.101 7001 1 – (第一次配置时)哨兵对哪个master进行监测,此处的master1为一“别名”可以任意如sentinel-26379,然后哨兵会通过这个别名后的IP知道整个该master内的slave关系。因此你不用在此配置slave是什么而由哨兵自己去维护这个“链表”。
sentinel monitor master1 192.168.56.101 7001 1 – 这边有一个“1”,这个“1”代表当新master产生时,同时进行“slaveof”到新master并进行同步复制的slave个数。在salve执行salveof与同步时,将会终止客户端请求。此值较大,意味着“集群”终止客户端请求的时间总和和较大。此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据。我们这边只想让一个slave来做此时的响应以取得较好的客户端体验。
sentinel down-after-milliseconds master1 1000 – 如果master在多少秒内无反应哨兵会开始进行master-slave间的切换,使用“选举”机制
sentinel failover-timeout master1 5000 – 如果在多少秒内没有把宕掉的那台master恢复,那哨兵认为这是一次真正的宕机,而排除该宕掉的master作为节点选取时可用的node然后等待一定的设定值的毫秒数后再来探测该节点是否恢复,如果恢复就把它作为一台slave加入哨兵监测节点群并在下一次切换时为他分配一个“选取号”。
sentinel can-failover master1 yes #remove from 2.8 and aboved version – 该功能已经从2.6版以后去除,因此注释掉,网上的教程不适合于redis-stable版
在配置Redis Sentinel做Redis的HA场景时,一定要注意下面几个点:
除非有多机房HA场景的存在,坚持使用单向链接式的master->slave的配置如:node3->node2->node1,把node1设为master
如果sentinel(哨兵)或者是HA群重启,一定要使用如此顺序:先启master,再启slave,再启哨兵
第一次配置完成“哨兵”HA群时每次启动不需要手动再去每个redis node中去更改master slave这些参数了,哨兵会在第一次启动后记录和动态修改每个节点间的关系,第一次配置好启动“哨兵”后由哨兵以后自行维护一般情况下不需要人为干涉,如果切换过一次master/slave后也因该记得永远先起master再起slave再起哨兵这个顺序,具体当前哪个是master可以直接看哨兵的sentinel.conf文件中最末尾哨兵自行的记录
Redis Master和Redis Slave的配置
这部分配置除了端口号,所在目录,pid文件与log文件不同其它配置相同,因此下面只给出一份配置:
daemonize yes pidfile "/var/run/redis/redis1.pid" port 7001 tcp-backlog 511 timeout 0 tcp-keepalive 0 loglevel notice logfile "/var/log/redis/redis1.log" databases 16 save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error no rdbcompression yes rdbchecksum yes dbfilename "dump.rdb" dir "/usr/local/redis1/data" slave-serve-stale-data yes slave-read-only yes #slave只读,当你的应用程序试图向一个slave写数据时你会得到一个错误 repl-diskless-sync no repl-disable-tcp-nodelay no slave-priority 100 maxmemory 0 appendonly no # The name of the append only file (default: "appendonly.aof") appendfilename "appendonly.aof" # appendfsync always #appendfsync everysec appendfsync no #关闭AOF no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "gxE" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-entries 512 list-max-ziplist-value 64 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10
其中:
slave-read-only yes 我们把slave设成只读,当你的应用程序试图向一个slave写数据时你会得到一个错误
appendfsync no 我们关闭了AOF功能
这是192.168.41.128:7001 master上的配置,你要把192.168.41.128:7002作为slave,那很简单,你只需要在redis2的配置文件的最未尾加入一句:
slaveof 192.168.41.1128 7001
配完了master, slave和sentinel后,我们按照这个顺序来启动redis HA:
master->slave->sentinel
启动后我们通过windows客户端使用命令:
redis-cli -p 26379 -h 192.168.41.128
进入我们配置好的sentinel后并使用: info命令来查看我们的redis sentinel HA配置。可以看到目前它的master为7001,它有一个slave。
为了确认,我们另外开一个command窗口,通过:
redis-cli -p 7001 -h 192.168.41.128
进入到7001后再使用redis内部命令info replication来查看相关信息
我们还可以通过命令:
redis-cli -h 192.168.41.128 -p 7002
进入到7002中并通过info replication来查看7002内的情况:
- Redis基于HA的集群布署 -- Redis Sentinel
- 基于sentinel的redis的HA方案
- 借助sentinel 实现redis集群HA配置
- 基于keepalived、redis sentinel的高可用redis集群
- redis-sentinel 做HA
- 基于docker的sentinel的高可用Redis集群
- 【胖鱼头】基于Sentinel的Redis主从分片集群搭建
- 基于sentinel(哨兵)实现redis集群的管理
- 基于redis sentinel 的tomcat7 集群 session 共享
- Redis HA方案之sentinel
- Redis sentinel集群实验
- Redis Sentinel集群方案
- redis+sentinel集群部署
- redis-sentinel集群安装
- 基于Sentinel的Redis集群(主从&Sharding)的redis封装实现
- 基于keepalived、redis sentinel的高可用redis集群【修改版】
- 基于keepalived、redis sentinel的多实例redis集群【1】---路由以及哨兵配置
- 基于keepalived、redis sentinel的多实例redis集群【2】---realserver配置
- javascript-总结
- xcode4.2 完成输入后关闭键盘
- linux查看.so文件中函数
- IOS中时区的问题
- javascript-例子
- Redis基于HA的集群布署 -- Redis Sentinel
- Java并发编程:volatile关键字解析
- 归并排序
- javascript-特效
- DFS&BFS
- mysql可靠性(异步复制)
- 软件研发部管理制度
- 后台管理
- json-总结