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进程如下:

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200120113531480.png在这里插入图片描述
进入redis master ./redis-cli -p 6379
在这里插入图片描述

使用info命令,可以看到6379为master,有两个slave分别为6377和6378
在这里插入图片描述
同样的可以连接下6377,使用info命令查看
在这里插入图片描述
在这里插入图片描述

至此redis主从已经搭建完毕.可以自己在主set,在从里面可以读到,从只能读不能写入

3.redis哨兵环境搭建

对于主从redis,有一个很大的问题,如果master挂了,虽然从服务器可以读取数据,但是没法写入数据了.redis哨兵机制解决了这个问题,如果master挂掉,会重新选取出一个新的master,他会修改conf配置文件,等你原先的主重新启动,会变成从服务器.
下面我们来配置一下哨兵环境:

bind 127.0.0.1 192.168.1.1#注释掉或者值为0.0.0.0

protected-mode no#关闭保护模式

port 26379#端口号

logfile “”#日志存放路径,默认不打日志
daemonize yes#后台运行

dir “/usr/local/bin/redis/sentinel/tmp”#解除挂载信息目录

sentinel monitor mymaster 192.168.64.69 6379 1#设置 主名称 ip地址 端口号 选举成功需要的哨兵数(如果为1,只要有一个哨兵即可发起选举,配置为哨兵数除以2,+1即可)

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.csdnimg.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哨兵搭建完毕.
有问题欢迎交流!

发布了55 篇原创文章 · 获赞 17 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/he_xiao123/article/details/104048813