Redis failover
下载Redis源码并编译
$ wget http://download.redis.io/releases/redis-2.8.24.tar.gz
$ tar -zxvf redis-2.8.24.tar.gz
$ cd redis-2.8.24
$ make install
编译结束后我们从 src
文件夹下找到可执行文件 redis-server
和 redis-sentinel
,redis根目录下的redis.conf和sentinel.conf文件我们接下来也要用到。
主从复制
新建文件夹master、slave1、slave2,把redis-server和redis.conf文件复制到这些文件夹下,目录结构如下
.
├── master
│ ├── redis-server
│ └── redis.conf
├── slave1
│ ├── redis-server
│ └── redis.conf
└── slave2
├── redis-server
└── redis.conf
分别修改三个redis.conf中的port
配置文件 | 端口设置 | |
---|---|---|
1 | master/redis.conf | 10010 |
2 | slave1/redis.conf | 10011 |
3 | slave2/redis.conf | 10012 |
在所有的 slave 中添加设置,使得slave自动的从master中同步数据
slaveof 127.0.0.1 10010
先启动master中的redis-server,然后分别启动slave1和slave2中的redis-server
./redis-server redis.conf
此时master节点可以读写数据,slave会自动的同步master的数据,slave可读不可写。
master失效选举
redis-sentinel 会在master失效时使用raft算法自动把一个slave选举为master以实现failover,redis-sentinel本身也需要设置多个节点来避免单点故障,sentinel之间的通信使用gossip协议。
新建文件夹sentinel1、sentinel2、sentinel3,把redis-sentinel和sentinel.conf文件复制到这些文件夹下,目录结构如下
.
├── sentinel1
│ ├── redis-sentinel
│ └── sentinel.conf
├── sentinel2
│ ├── redis-sentinel
│ └── sentinel.conf
└── sentinel3
├── redis-sentinel
└── sentinel.conf
设置sentinel.conf中的port
配置文件 | 端口设置 | |
---|---|---|
1 | sentinel1/sentinel.conf | 20010 |
2 | sentinel2/sentinel.conf | 20011 |
3 | sentinel3/sentinel.conf | 20012 |
在所有的sentinel.conf中添加设置
# 监控master节点,slave的信息可以从master中获取到
# 2表示需要有两个sentinel认为master挂了才可以触发重新选举
sentinel monitor mymaster 127.0.0.1 10010 2
# 超时检测时间设置为1秒钟
sentinel down-after-milliseconds mymaster 1000
接下来启动sentient
./redis-sentinel sentinel.conf
sentinel会自动的组成一个集群,一旦master超过1秒钟没有响应就会把一个slave选举为master。
参考
本文链接:
https://www.nosuchfield.com/2018/11/29/Redis-failover/
版权声明:
本博客所有文章均采用
CC BY-NC-SA 4.0 许可协议,转载请注明出处!