Redis配置哨兵模式
安装redis:
1、下载安装包
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
2、解压
tar -zxvf redis-5.0.7.tar.gz
3、编译
cd redis-5.0.7/ make
安装完成后,可以在目录内看到src、conf等子目录
4、安装
cd src/ make install
二、部署主从架构(一主二从)
由于 src 下文件非常多,我们可以将几个常用的命令和 conf 配置文件复制出来进行统一管理,如下:
1、新建bin目录和etc目录
cd /root/redis/redis-5.0.7/
mkdir etc
mkdir bin
cd etc/
mkdir redis_master
mkdir redis_slave1
mkdir redis_slave2
说明: redis_master作为master节点配置文件的目录 redis_slave1作为第一个slave节点配置文件的目录 redis_slave2作为第二个slave节点配置文件的目
2、回到安装目录将配置文件拷贝对应目录下
cp redis.conf /root/redis/redis-5.0.7/etc/redis_master
cp redis.conf /root/redis/redis-5.0.7/etc/redis_slave1
cp redis.conf /root/redis/redis-5.0.7/etc/redis_slave2
3、进入 src 文件夹下,将mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-server、redis-sentinel文件复制到 bin 文件夹
cd src/
cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server redis-sentinel /root/redis/redis-5.0.7/bin/
4、启动一个redis服务测试,redis是否可以正常启动
cd /root/redis/redis-5.0.7/bin
./redis-server ../etc/redis_master/redis.conf
使用redis-cli命令连接客户端,如下
经测试可行,关闭redis服务
redis-cli -p 6379 shutdown
5、分别修改各节点配置文件
cd etc/redis_master
vim redis.conf
- 主节点配置
bind:0.0.0.0 ##Redis 默认只允许本机访问,把 bind 修改为 0.0.0.0 表示允许所有远程访问。如果想指定限制访问,可设置对应的 ip。
port:6379
protected-mode:no ##关闭保护模式,可以外部访问
daemonize:yes ##设置为后台启动
pidfile "/var/run/redis_6379.pid" ##redi pid存储位置,建议加上端口,便于区分
logfile "/root/redis/redis-5.0.7/bin/redis_6379.log" ##日志文件存储位置
requirepass:pwdtest@2019 ##设置 redis 连接密码
masterauth:pwdtest@2019 ##slave 服务连接 master 的密码
- 从节点配置
从机的配置和主机相似,不同的地方是需要使用replicaof指定主机(master)的IP地址和端口,需要注意的是老版本使用的是 slaveof,目前我使用的5.0.7版本要使用 replicaof ,如下。
bind:0.0.0.0
port:6378
protected-mode:no
daemonize:yes
pidfile "/var/run/redis_6378.pid"
logfile "/root/redis/redis-5.0.7/bin/redis_6378.log"
requirepass:pwdtest@2019
masterauth:pwdtest@2019
replicaof 192.168.231.130 6379 ##主节点的IP 端口
replicaof 192.168.231.130 6379 指定当本机为 slave 服务时,设置 master 服务的IP地址及端口,在 redis 启动的时候会自动跟 master 进行数据同步,所以两台从机都这样配置即可。
照样修改另一个从节点的配置文件,端口可为6377
至此,主从架构已经配置完毕
三:主从验证
1、分别启动三个节点
cd bin/
./redis-server ../etc/redis_master/redis.conf
./redis-server ../etc/redis_slave1/redis.conf
./redis-server ../etc/redis_slave2/redis.conf
可通过 ps -ef|grep redis 查询redis启动情况
2、连上一个节点查看主从信息
./redis-cli -h xx.xx.xx.xx -p 6379
auth pwdtest@2019 ##由于设置有密码,故需先登录
info replication
./redis-cli -h xx.xx.xx.xx -p 6378
auth pwdtest@2019 ##由于设置有密码,故需先登录
info replication
可以看到当前节点的角色以及相关信息
3、主从同步验证
在主节点添加几条数据,看slave节点是否可以看到
./redis-cli -h xx.xx.xx.xx -p 6379
auth pwdtest@2019
set name xiaoming
get name
./redis-cli -h xx.xx.xx.xx -p 6377
auth pwdtest@2019
get name
结论:master节点添加的数据,slave节点可以查看到
四:哨兵模式搭建
哨兵的配置文件是:sentinel.conf
1、同样为了方便管理,将sentinel.conf复制至对应的目录下
cp redis-5.0.7
cp sentinel.conf etc/redis_master/
cp sentinel.conf etc/redis_slave1/
cp sentinel.conf etc/redis_slave2/
2、分别编辑 sentinel.conf
master节点6379对应的sentinel.conf端口为6376 slave1节点6378对应的sentinel.conf端口为6375 slave2节点6377对应的sentinel.conf端口为6374
vim sentinel.conf
port:6376 ## 默认端口为26379。
protected-mode:no ## 关闭保护模式,可以外部访问
daemonize:yes ##设置为后台启动
pidfile "/var/run/redis-sentinel_6376.pid" ##redis sentinel pid文件位置
logfile "/root/redis/redis-5.0.7/bin/sentinel_6376.log" ##日志文件
sentinel monitor mymaster 192.168.231.130 6379 2 ##指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换
sentinel auth-pass mymaster pwdtest@2019 ##当在Redis实例中开启了requirepass,这里就需要提供密码
sentinel down-after-milliseconds mymaster 3000 ##这里设置了主机多少秒无响应,则认为挂了
snetinel parallel-syncs mymaster 1 ##主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1
sentinel failover-timeout mymaster 180000 ##故障转移的超时时间,这里设置为三分钟
3、启动三个哨兵
cd bin/
redis-sentinel ../etc/redis_master/sentinel.conf
redis-sentinel ../etc/redis_slave1/sentinel.conf
redis-sentinel ../etc/redis_slave2/sentinel.conf
4、查看哨兵信息
./redis-cli -h 121.36.xx.xx -p 6375
info sentinel
五、容灾切换
1、模拟主机宕机:手动停掉master节点
./redis-cli -h 121.36.xx.xx -p 6379
auth pwdtest@2019
shutdown
2、连上原来的slave1节点查看主从信息,会发现主节点已经自动变了
./redis-cli -h xx.xx.xx.xx -p 6378
auth pwdtest@2019
info replication
3、重新启动6379节点,发现又加入主从里面了
./redis-server ../etc/redis_master/redis.conf
./redis-cli -h xx.xx.xx.xx -p 6378
auth pwdtest@2019
info replication