一、环境信息
1、版本要求
redis2.6版本开始提供,稳定版本为2.8及之后。
2、服务节点个数要求
至少需部署3个且奇数个哨兵节点;
3、特性
哨兵进程作用:监控、提醒、自动故障转移,配置提醒者
优点:基于主从模式的升级,解决主从复制的缺陷
缺点:在线扩容困难、配置繁琐
4、投产部署说明
本文档是在一台服务器上启动了6个实例进行演示。实际投产部署时,每个节点应该对应一台服务器,每个节点配置为自己主机的IP信息即可。
5、本文当部署信息
- - [ ] - | | | redis哨兵模式部署 | |
|
| :-----: | :-------: | :---------------: | :-------: | :-------: |
| 系统 | 角色 | IP | redis端口 | Redis版本 |
| CentOS7 | Master | 192.168.100.135 | 7000 | 6.0.20 |
| CentOS7 | Slave1 | 192.168.100.135 | 7001 | 6.0.20 |
| CentOS7 | Slave2 | 192.168.100.135 | 7002 | 6.0.20 |
| CentOS7 | Sentinel1 | 192.168.100.135 | 26379 | 6.0.20 |
| CentOS7 | Sentinel2 | 192.168.100.135 | 26380 | 6.0.20 |
| CentOS7 | Sentinel3 | 192.168.100.135 | 26381 | 6.0.20 |
注:默认使用root权限账户进行安装部署
二、Redis哨兵模式部署
(1)创建配置文件目录
- mkdir /usr/local/redis-sentinel # 自行指定路径
- mkdir /usr/local/redis-sentinel/data # 自行指定路径
- mkdir /usr/local/redis-sentinel/run # 自行指定路径
(2)配置主节点
- vim /usr/local/redis-sentinel/redis-7000.conf #新建配置文件
添加信息如下
#928注释
port 7000
daemonize yes
pidfile /usr/local/redis-sentinel/run/redis-7000.pid
logfile /usr/local/redis-sentinel/log/redis-7000.log
dir /usr/local/redis-sentinel/data
(3)配置从节点
本文档主从节点在同一服务器,实际生成部署时需要替换为主节点IP和端口
- vim /usr/local/redis-sentinel/redis-7001.conf #新建配置文件
#928注释
port 7001
daemonize yes
pidfile /usr/local/redis-sentinel/run/redis-7001.pid
logfile /usr/local/redis-sentinel/log/redis-7001.log
dir /usr/local/redis-sentinel/data
slaveof 127.0.0.1 7000
-
vim /usr/local/redis-sentinel/redis-7002.conf #新建配置文件
#928注释 port 7002 daemonize yes pidfile /usr/local/redis-sentinel/run/redis-7002.pid logfile /usr/local/redis-sentinel/log/redis-7002.log dir /usr/local/redis-sentinel/data slaveof 127.0.0.1 7000
(4)启动主、从节点
- 如果在同一服务器中,需要将安装配置好的redis配置文件复制一份到/usr/local/redis-sentinel/下
/usr/local/redis-sentinel/下 新建
bin
bin下存储的文件
redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-sentinel,redis-cli
log
run
conf
将redis的配置文件放到conf文件夹下
redis-7000.conf
redis-7001.conf
redis-7002.conf
后三个配置文件为后边配置,此处表面都在该目录下
redis-sentinel-26379.conf
redis-sentinel-26380.conf
redis-sentinel-26381.conf
找到/usr/local/redis-sentinel/bin
因为该目录下有redis-server
开始启动主从节点
redis-server /usr/local/redis-sentinel/redis-7000.conf
redis-server /usr/local/redis-sentinel/redis-7001.conf
redis-server /usr/local/redis-sentinel/redis-7002.conf
ps -ef | grep redis 查看redis节点进程信息
下图前三个为启动的redis进程,后三个还没有启动
(5)查看主节点配置信息
分别连接主从节点客户端,在客户端使用info replication 命令查看角色信息
/usr/local/redis-sentinel/bin
在该目录下有redis-cli,执行如下命令
1-主节点信息
./redis-cli -p 7000
ping
info replication
退出用quit
查看主机节点信息如下:
2-从节点Slave1信息
./redis-cli -p 7001
ping
info replication
退出用quit
Slave1从节点信息如下
3-从节点Slave2信息
./redis-cli -p 7002
ping
info replication
退出用quit
Slave2从节点信息如下
(6)配置哨兵
注意:
#拷贝Sentinel配置文件
此处会用到redis-sentinel
将redis-sentinel文件复制到新建的配置文件/usr/local/redis-sentinel/conf/ 下
如果没有找到该文件,则去/usr/local/redis/src下找,前边已经将该文件放到/usr/local/redis/bin下
cp /usr/local/redis/bin/redis-sentinel.conf /usr/local/redis-sentinel/conf/
将redis-sentinel文件通过以下命令进行拷贝
cd /usr/local/redis-sentinel/conf
(也就是sentinel.conf存在的目录)
#拷贝文件并去除空行和注释
cat sentinel.conf | grep -v “#” | grep -v “^$” > redis-sentinel-26379.conf
cat sentinel.conf | grep -v “#” | grep -v “^$” > redis-sentinel-26380.conf
cat sentinel.conf | grep -v “#” | grep -v “^$” > redis-sentinel-26381.conf
执行完以上三条命令后,会出现相应的的xxx-xxx-xxx.conf文件
然后进行对其编辑
vim redis-sentinel-26379.conf,#修改后配置信息如下
里边的信息与下图不一致,需要重新看这几个位置,自己配置,路径是文件的路径
1、redis-sentinel-26379.conf
2、redis-sentinel-26380.conf
vim redis-sentinel-26379.conf,#修改后配置信息如下
里边的信息与下图不一致,需要重新看这几个位置,自己配置,路径是文件的路径
3、redis-sentinel-26381.conf
vim redis-sentinel-26379.conf,#修改后配置信息如下
里边的信息与下图不一致,需要重新看这几个位置,自己配置,路径是文件的路径
(7)启动哨兵
注意:
cd /usr/local/redis-sentinel/bin
因为此目录下有之前复制过来的 redis-sentinel文件
若没有,则去安装reids的目录下的src下寻找,如果没有此处应该从
/usr/local/redis/src 下寻找redis-sentinel文件
redis-sentinel redis-sentinel-26379.conf
redis-sentinel redis-sentinel-26380.conf
redis-sentinel redis-sentinel-26381.conf
# 查看哨兵进程信息
ps -ef | grep redis-sentinel
如下图
(8)查看哨兵模式集群信息
# 查看哨兵模式各节点进程信息
ps -ef | grep redis
如下图
cd /usr/local/redis-sentinel/bin
#使用redis客户端连接到Sentinel
ping
./redis-cli -p 26379
如下图
连接后使用ping命令查看redis主从服务是否正常;返回PONG正常
使用
info sentinel 查看哨兵配置信息
可以看到本集群已搭建好:3各sentinel、一个master节点、两个slave节点