redis主从和哨兵搭建
redis环境搭建
环境:: centos6.8,redis5.0.5,springboot 2.2.2.RELEASE*
本文主要介绍搭建简单的redis环境, 我们知道redis支持横向扩展:主从,集群和分片,高可用:哨兵机制,那么怎么搭建一个可扩展又高可用的redis呢.
1.安装redis单机
安装redis单机,网上有很多例子,这里就不一一表述.
但是有几处经历的错误记录一下
- xx command not found
CentOS默认没有安装gcc,这会导致我们无法make成功。使用yum安装:
yum -y install gcc
- error: jemalloc/jemalloc.h: No such file or directory
原因是jemalloc重载了Linux下的ANSI C的malloc和free函数。解决办法:make时添加参数。
make MALLOC=libc
2.redis主从搭建
redis主从最好大于等于三个,这样master挂了之后,还能保存有主从结构,哨兵的话奇数个就好(master挂了投票选举leader的时候奇数个可以一次成功),一般为1主二从三哨兵的结构.
ps:这里是用虚拟机进行的搭建.所有的主从都在一台服务器上,不过流程是大同小异的!
进入redis 目录,copy redis.conf文件三份,分别命名为redis-master.conf,redis-slave-6378.conf,redis-slave-6377.conf 我将他放在redis的外层新建redis-conf文件夹,看个人习惯,都可以.如下
编辑redis-master.conf,主文件是安装单机的时候需要修改的地方,我这里罗列一下比较重要的地方
bind 0.0.0.0#任意ip都可以连接,或者直接注掉
protected-mode no#关闭保护,允许非本地连接
port 6379#端口号
daemonize yes#后台运行
pidfile /var/run/redis_6379.pid#进程守护文件,就是存放该进程号相关信息的地方
appendonly yes#开启aof日志形式(按需修改,redis默认以rdb快照的方式备份)
requirepass hexiao123 #密码
masterauth:hexiao123#这个很重要,因为主挂了后重启会变为从,此处需要配置密码
编辑slave.conf,最下面两个属性是要注意的,6377和6378的配置同下
protected-mode no#关闭保护,允许非本地连接
port 6377#端口号
daemonize yes#后台运行
pidfile /var/run/redis_6377.pid#进程守护文件,就是存放该进程号相关信息的地方
appendonly yes#开启aof日志形式(按需修改,redis默认以rdb快照的方式备份)
requirepass hexiao123 #密码
replicaof 192.168.64.69 6378 #配置主master地址和端口号
masterauth “hexiao123” #配置主master密码
下面我们来启动测试一下
- 使用./redis-server /usr/local/bin/redis/redis-conf/redis-master.conf
- 后面替换成你防止conf的路径依次启动master和slave 使用 ps aux| grep redis查看redis进程如下:

sentinel down-after-milliseconds mymaster 3000#sentinel心跳检测主3秒内无响应(测试方便,按照需求配置即可),视为挂掉,开始切换其他从为主
sentinel parallel-syncs mymaster 1#每次最多可以有1个从同步主。一个从同步结束,另一个从开始同步。
sentinel failover-timeout mymaster 18000#主从切换超时时间
sentinel auth-pass mymaster hexiao123 #master密码
- 这里需要注意的是:sentinel monitor mymaster这个参数要放在用所有用mymaster的上面,否则会报找不到mymaster
至此,redis哨兵单机版已经配置完毕
让我们来启动一下
![在这里插入图片描述](https://img-blog.****img.cn/20200120144631944.png
如果出现上图所示,证明启动成功!
让我们来测试一下:
- 打开6379,发现他是master
exit退出
- 杀掉6379进程:
ps aux| grep redis
kill -9 进程号
等待3秒后
你可以看下
发现6378经过选举变成了master
有兴趣的可以查看下redis-master.conf,redis-slave-6378.conf和redis-slave-6377.conf,看看他们发生了什么变化.
重启6379,会发现6379变成了从服务器:
至此,redis哨兵搭建完毕.
有问题欢迎交流!