- 👏大家好,我是polaris_coder,很高兴认识大家!
- 🔥如果觉得我的文章对你有帮助,请一键三连支持一下!
- 📝:学习,提升自己总是没错的!
前言
环境:VMware搭建的虚拟机 + centos7 + Xshell + Xftp + Another Redis Desktop Manager
一、搭建redis集群
说明:为了保证redis的高可用,当一个redis坏掉了,还可有其他的redis提供服务,所以需要搭建redis集群,真实环境,每个redis都部署在一台服务器上。
1.1、在linux上安装redis
1.1.1、在linux系统上解压redis安装包。
1.1.2、 开始解压
1.1.3、将解压后的目录重命名为redis
1.1.4、切换到redis目录,并查看内容。
- src:redis的源码,一些.c文件(C语言源文件),.h(C语言头文件)。
- redis.conf:redis的主配置文件。
1.1.5、编译
由于redis是用c语言写的,而且linux版的安装包,没有进行编译,所以我们需要手动进行编译。
①make
必须进到redis根目录编译,该目录有Makefile文件。
②提示我们进行编译测试(这是个建议,可以不做)
③make test
编译测试需要tcl,会提示你安装一个tcl(8.5及以上版本)
④安装tcl,yum install tcl -y
⑤cd到src目录 执行ll
1.1.6、启动redis
至此,redis安装成功!
2.2 、搭建redis集群(主从集群)
下面将搭建一主两从的redis集群,下面集群架构图。
- 原理:两个从节点连接主节点,会自动同步主节点的数据,从只能读,不能写。
2.2.1、准备工作
下面这一行注释起来,表示可以通过其他ip连接redis。
连接redis默认不需要密码,设置密码,下面这一行去掉#,requirepass后面跟你自己的密码
关闭保护模式,yes改成no
将redis.conf重命名为redis-6379.conf,作为主节点6379的主配置文件。
2.2.2、配置主6379
配置日志文件,redis-6379.log
配置pid文件,/var/run/redis_6379.pid,该文件存放了redis启动的进程号。
设置主的密码,打开注释,masterauth跟上你自己redis密码。
由redis-6379.conf复制出来两份配置文件,redis-6380.conf,redis-6381.conf,作为从6380,从6381的配置文件。
2.2.3、配置从6380
在Xftp中,用记事本打开redis-6380.conf
ctrl + h,将6379全部替换为6380,点击全部替换。
下面这一行注释打开,replicaof 主的ip,主的端口
2.2.4、配置从6381
和配置从6380一样。
2.3、启动redis集群
注意:要带配置文件启动,否则使用默认的配置,后面的&表示后台启动redis,返回的是redis的进程号。
查看redis进程,6379,6380,6381,都启动了
Another Redis DeskTop Manager连接三个redis
打开对应的命令行
主6379输入info命令,查看服务器的相关信息。
role:master,角色是master,主人
slave0,slave1 有两个奴隶,两个从,列出了对应的ip,端口。
主6380输入info命令,查看服务器的相关信息。
role:slave,角色是slave,奴隶。
master_host,主人的ip。
master_port,主人的端口。
主6381输入info命令,和从6380看到的,都是相同的主人。
2.4、主从复制测试
主6379,执行set name polaris。
从6380,执行get name。
从6381,执行get name。
说明主节点的数据,会自动同步到从节点。
2.5、从节点写操作测试
从6380执行 set age 12,提示如下。
READONLY You can’t write against a read only replica.
在只读的从节点上,你不能写!
二、搭建redis哨兵模式
- 上面的集群模式,如果主节点挂了呢,这时候,不能往redis写数据了!这时候这需要搭建哨兵模式了,哨兵会自动从剩下的两个从节点中,选举主节点。
- 注:搭建redis哨兵模式不需要安装额外的软件,redis内置了哨兵,redis-sentinel。
- 哨兵模式没有主从的概念,都是平等的。
2.1、配置哨兵模式(三个哨兵,端口为:26379,26380,26381)
sentinel.conf 重名为sentinel-26379.conf
端口:26379
进程文件:后面跟上端口26379
日志文件:后面跟上端口26379
配置主的名字、ip、端口、投票制(ip端口改成你自己的),2票制:表示有两票,就被选举为主节点,几票制=哨兵数/2 + 1。
打开注释,配置主的密码,
sentinel-26379.conf复制出来sentinel-26380.conf,sentinel-26381.conf
记事本打开sentinel-26380.conf,sentinel-26381.conf,全局将26379替换为对应的端口。
2.2、启动哨兵
查看进程
2.3、选举测试
再开一个窗口,实时追踪6380的日志。
停掉redis主6379。
刚开始一直在练6379,连不上,后来6381成为主,连上了。
查看6381的日志,6381已经变成主节点了。
之所以是从节点,是因为配置文件有replicaof 主的ip,端口,现在6381变成主,那么这行配置应该自动被哨兵给删了,这行配置找不到了。