配置redis 哨兵模式
哨兵模式概述
当我们的主服务器宕机后,要手动的去切换主从模式,这样的人工干预,费事费力,还会造成一段时间我们的服务不能使用。所有我们要使用哨兵模式来解决这一问题。
手动设置主从:
当主服务器down 掉后 服务器不在提供写功能,需要手动将从服务器设置为主
在从服务器上使用命令:
slaveof on one //从服务器关闭复制功能转为主服务器 原同步所得数据不丢失
在其他从服务器上执行命令
slaveof host port //host 指定转为主的从服务器地址 port 指定端口号
哨兵是对Redis的系统的运行情况的监控,它是一个独立进程。
哨兵模式作用
监控主机Redis和从机Redis是否运行正常;
主机Redis出现故障后自动将从机转化为主机;
哨兵功能
集群监控:负责监控主从集群中的Master和Slave进程是否正常工作。
故障转移(failover):如果Master宕机,会自动从Slave中选举出新的Master,进行主从自动切换。
配置中心:如果发生了故障转移,Sentinel负责通知客户端新的Master的地址。
消息通知:如果某个redis节点有故障,那么Sentsinel会发送报警消息给系统管理员
哨兵工作原理
单个哨兵的工作原理:
哨兵模式配置 (一主两从 三哨兵)
环境:
主redis 地址 192.168.38.3
从redis 地址 192.168.38.5
从redis 地址 192.168.38.6
哨兵sentinel 地址 192.168.38.7 (一台主机三哨兵)
四台主机相同配置部分:
禁用 selinux 关闭防火墙 yum 安装redis 环境 源码安装 redis
redis 安装路径 统一 /usr/local/redis
redis 安装部署
1,下载或者上传redis 6.2.14
wget http://download.redis.io/releases/redis-6.2.14.tar.gz //下载
scp c:\redis-6.2.14.tar.gz root@192.168.10.12:/root //将下载到本机的源码包上传到虚拟机
2,将源码包解压到 /usr/local/ 下
tar -zxvf redis-6.2.14.tar.gz -C /usr/local/
3,将解压包改名
cd /usr/local
mv redis-6.2.14 redis
4,安装依赖
yum clean all
yum makecache fast
yum -y install gcc gcc-c++ make tcl (utbuntu 安装 依赖关系 gcc make tcl)
gcc --version //查看gcc 版本
5,进入解压包 安装redis
进入redis目录,输入make
cd /usr/local/redis
make && make install
6,启动服务
redis-server
一,配置一主两从
主 redis服务器 配置文件修改部分
#bind 127.0.0.1 #将bind注释掉 或 bind 0.0.0.0 75 protected-mode no #允许远程主机访问 94 daemonize yes #修改服务为后台运行 259 logfile "/usr/local/redis/log/redis.log" #指定log日志路径 304 dir /usr/local/redis/data/redis #这个指定rdb文件和aof文件的路径配置,要求改成不同。 456 masterauth 123 #从服务到主服务的认证密码。 486 requirepass 123 #三份文件都配置,客户端访问需要密码验证。 903 |
从 redis服务器 配置文件修改
#bind 127.0.0.1 或 bind 0.0.0.0 75 protected-mode no #允许远程主机访问 94 daemonize yes #修改服务为后台运行 259 logfile "/usr/local/redis/log/redis.log" #指定log日志路径 304 dir /usr/local/redis/data/redis #这个指定rdb文件和aof文件的路径配置,要求改成不同。 456 replicaof 192.168.38.3 6379 #从服务配置需要开启。配置主服务的ip的port。 479 masterauth 123 #从服务到主服务的认证密码。 486 requirepass 123 #三份文件都配置,客户端访问需要密码验证。 903 |
二,在 主redis 和 两台从服务器上创建日志文件夹和数据文件夹
cd /usr/local/redis
mkdir log data
mkdir -p data/redis
三, 分别开启三台redis 的服务
cd /usr/local/redis
redis-server redis.conf
查看服务是否开启
netstat -anpt | grep redis //如果没有命令用yum 安装
四,配置 哨兵主机
三哨兵需要一台主机启用三个哨兵模式 需要三个哨兵配置文件
cd /usr/local/redis
mv sentinel.conf sentinel1.conf
cp sentinel1.conf sentinel2.conf
cp sentinel1.conf sentinel3.conf
修改配置三个配置文件如下
sentinel1.conf
bind 0.0.0.0 #服务监听地址,用于客户端连接,默认本机地址 daemonize yes protected-mode no #安全保护模式 port 26379 #哨兵端口 logfile "/usr/local/redis/log/sentinel1.log"" #日志文件路径 36hang pidfile /var/run/redis-sentinel1.pid #pid文件路径 31 行 dir /tmp #工作目录 65行 sentinel monitor mymaster 192.168.38.3 6379 2 #设置要监控的master服务器,quorum表示最少有几个哨兵认可客观下线,同意故障迁移的法定票数 84行 sentinel auth-pass mymaster 123 #master设置了密码,连接master服务的密码 86行 |
sentinel2.conf
bind 0.0.0.0 daemonize yes protected-mode no port 26380 logfile "/usr/local/redis/log/sentinel2.log"" pidfile /var/run/redis-sentinel2.pid dir /tmp sentinel monitor mymaster 192.168.38.3 6379 2 sentinel auth-pass mymaster 123 |
sentinel3.conf
bind 0.0.0.0 daemonize yes protected-mode no port 26381 logfile "/usr/local/redis/log/sentinel3.log"" pidfile /var/run/redis-sentinel3.pid dir /tmp sentinel monitor mymaster 192.168.38.3 6379 2 sentinel auth-pass mymaster 123 |
五, 创建存放日志的文件夹并启动三个哨兵服务
cd /usr/local/redis
mkdir log
./src/redis-sentinel sentinel1.conf --sentinel
./src/redis-sentinel sentinel2.conf --sentinel
./src/redis-sentinel sentinel3.conf --sentinel
查看端口号
六,查看 几个哨兵的日志文件
cat log/sentinel1.log
cat log/sentinel2.log
cat log/sentinel3.log
七,down 掉 主redis 服务器 验证哨兵作用
在 主 redis 服务器上关闭redis 服务 或者杀死 redis 进程
关闭服务
杀死进程
cd /var/run/
ls //查看redis 进程文件
cat redis_6379.pid //通过进程文件查看进程号
kill -9 20504 //杀死进程
rm -rf redis_6379.pid //删除进程文件
八,查看哨兵日志哪台从服务器可以写入数据 变成了主redis
cat log/sentinel1.log
进入新的 主服务器 测试写入数据
验证新的主服务器能写能读,从服务器只能读不能写