搭建环境
三台CentOS7服务器
实现目标
在3台CentOS7服务器上搭建一主两从的redis集群,且配置哨兵模式,当master宕机,另外两个slave会选举出一个新的master,实现高可用。
master | slave0 | slave1 |
---|---|---|
ip0 | ip1 | ip2 |
准备工作
安装额外的软件包
$ yum install epel-release |
安装 redis
yum install redis |
配置一主两从
master(ip0)
修改
/etc/redis.conf
$ vim /etc/redis.conf
找到一下内容并修改
# 将 127.0.0.1 修改为本机的IP(ip0)
bind ip0
# 将 no 改为 yes,以守护进程的形式运行
daemonize yes修改完毕
测试
登录
redis
redis-cli -h ip0
列出所有
kyes *
redis-cli -h ip0
ip0:6379> keys *设置
key
value
redis-cli -h ip0
ip0:6379> set name holmeyoung得到
key
的value
redis-cli -h ip0
ip0:6379> get name删除
key
redis-cli -h ip0
ip0:6379> del name
slave(ip1、ip2)
修改
/etc/redis.conf
vim /etc/redis.conf
找到一下内容并修改
# 将 127.0.0.1 修改为本机的IP(eg:ip1)
bind ip1
# 将 no 改为 yes,以守护进程的形式运行
daemonize yes
# 增加该 slave节点 所要从的 master节点 的 ip/port
# 找到 # slaveof <masterip> <masterport>
# 在下面增加一行
slaveof ip0 6379修改完毕
测试
同
master
启动
分别运行三台机器的 redis-server
先运行
master
redis-server /etc/redis.conf |
测试
在
master
上连接
redis
redis-cli -h ip0
打印信息
ip0:6379> info Replication
Replication
role:master
connected_slaves:2
slave0:ip=ip1,port=6379,state=online,offset=3242902,lag=1
slave1:ip=ip2,port=6379,state=online,offset=3243317,lag=0
master_repl_offset:3243317
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2194742
repl_backlog_histlen:1048576写入一组
key
value
ip0:6379> set name holmeyoung
在
slave0
上连接
redis
redis-cli -h ip1
读取数值
ip1:6379> get name
输出
holmeyoung
则正常因为
slave
只有读权限,所以是不可以写入数据的
在
slave1
上同
slave0
配置哨兵模式
配置
三台机器配置相同
修改 /etc/redis-sentinel.conf
vim /etc/redis-sentinel.conf |
增改以下内容
保护模式,这个必须选择no,不然当master宕机,slave无法自动转换为master |
注意
sentinel monitor mymaster ip0 6379 2
里面的ip0
为master
的IP
配置备份
将配置文件
/etc/redis.conf
以及/etc/redis-sentinel.conf
备份一份,因为当master
宕机并唤醒哨兵模式后,系统会重写配置文件
启动
分别运行三台机器的 redis-sentinel
redis-sentinel /etc/redis-sentinel.conf |
测试
在 master
上杀死 redis
进程
pkill redis |
随便登录一个 slave
服务器
redis-cli -h ip1 |
打印信息
ip0:6379> info Replication |
会发现此时的 master
以及 slave
发生了更改
Reference
CentOS7 配置 Redis Sentinel 主从集群配置