Toggle Navigation
首页
Golang
PHP
Laravel
Magento
Linux
数据库
MySQL
Redis
Mongodb
热门知识
程序与生活
架构师之路
静态站点
GitHub
主页
Redis哨兵 - 实现Redis高可用
Redis哨兵 - 实现Redis高可用
10-18
Mark
1121
##概述 Redis哨兵为Redis提供了高可用性。实际上这意味着你可以使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。 哨兵模式还提供了其他的附加功能,如监控,通知,为客户端提供配置。 下面是在宏观层面上哨兵模式的功能列表: - 监控:哨兵不断的检查master和slave是否正常的运行。 - 通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序。 - 自动故障转移:如果一个master不正常运行了,哨兵可以启动一个故障转移进程,将一个slave升级成为master,其他的slave被重新配置使用新的master,并且应用程序使用Redis服务端通知的新地址。 - 配置提供者:哨兵作为Redis客户端发现的权威来源:客户端连接到哨兵请求当前可靠的master的地址。如果发生故障,哨兵将报告新地址。 ##哨兵的分布式特性 Redis哨兵是一个分布式系统: 哨兵自身被设计成和多个哨兵进程一起合作运行。有多个哨兵进程合作的好处有: - 当多个哨兵对一个master不再可用达成一致时执行故障检测。这会降低错误判断的概率。 - 即使在不是所有的哨兵都工作时哨兵也会工作,使系统健壮的抵抗故障。毕竟在故障系统里单点故障没有什么意义。 Redis的哨兵、Redis实例(master和slave)、和客户端是一个有特种功能的大型分布式系统。在这个文档里将逐步从为了理解哨兵基本性质需要的基础信息,到为了理解怎样正确的使用哨兵工作的更复杂的信息(这是可选的)进行介绍。 ##运行哨兵 如果你使用可执行的 redis-sentinel(或者你有可执行的redis-server),你可以使用下面的命令行运行哨兵: ``` redis-sentinel /path/to/sentinel.conf ``` 另外你可以直接使用可执行的redis-server在哨兵模式下启动。 ``` redis-server /path/to/sentinel.conf --sentinel ``` 两种方式效果都是一样的。 然而在启动哨兵时必须使用一个配置文件,因为这个配置文件将用于系统保存当前状态和在重启时重新加载。哨兵会在没有指定配置文件或指定的配置文件不可写的时候拒绝启动。 Redis 哨兵默认监听26379 TCP端口,所以为了哨兵的正常工作,你的26379端口必须开放接收其他哨兵实例的IP地址的连接。否则哨兵不能通信和商定做什么,故障转移将永不会执行。 ##配置哨兵 Redis源码发布包包含一个sentinel.conf的文件,它是一个自含的配置文件示例,你可以使用它配置哨兵,一个典型的最小的配置文件就像下面的配置: ``` sentinel monitor mymaster 127.0.0.1 6379 2 sentinel down-after-milliseconds mymaster 60000 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1 sentinel monitor resque 192.168.1.3 6380 4 sentinel down-after-milliseconds resque 10000 sentinel failover-timeout resque 180000 sentinel parallel-syncs resque 5 ``` 你只需要指定masters监控,给予每个分开的master不同的名字。不需要指定slaves,它们是自动发现的。Sentinel会自动的更新关于slaves的附加信息(为了保留信息以防重启)。每次slave晋升为一个master或者每次发现新的Sentinel都会重写配置。
最新文章
Golang内存问题处理
WebSocket详解
Gopher面试中的Coding(三)
Golang用os/signal包实现平滑重载配置文件
Nginx实现负载均衡的几种方式
Golang中子goroutine与主协程同步的四种实现
Dockerfile文件详解
Golang开发微信公众号
最热文章
Magento实现下载csv数据表格
1887
Laravel带有条件搜索的分页
1808
Magento上传文件、缩略图和导出CSV
1758
Golang开发微信公众号
1728
Magento添加Advanced Dataflow
1715
Magento后台添加rule规则
1639
Magento优化 – MySQL读写分离
1589
Magento常用模块分享
1517
热门标签
下载
laravel分页
上传
导出
微信公众号
Dataflow
rule
规则
读写分离
模块
shell
正则
内存泄漏
Collection
binlog
命名空间
Git
处理
composer
string
package
解锁
锁表
redis sentinel
函数
事务处理
time
架构
系统
读写
golang
事务处理
缓存
日志分析
进阶
schedule
fmt
表分割
Gopher面试
交叉编译
日志分割
事务
分布式锁
HTTPS
Dockerfile
mongodb
channel
git服务器
gogs
php
protobuf
重载配置
版本号
多数据库
负载均衡
concat
mongodb
日志过滤
发展方向
defer
panic
模型关系
goroutine
json
get
post
protobuf
golang算法
代码部署
算法
rpc
docker
elasticsearch
redis
写文件
主从配置
websocket
laravel
package
生成插件
直接下载
数据类型
curl
并发
量级
错误传递
成长
Shell
Go指针
grpc
方法
参数
队列
protobuf
Redis持久化
路上
风景
yum