减少了对数据库的读操作,数据库的压力降低 ,加快了响应速度 缓存机制可谓是做到了完美一绝,下面我就centos7环境下的redis-5.0.12版本主从复制,哨兵搭建做个分享,请多多提出宝贵意见!
配置编译环境:
sudo yum install gcc-c++
官网下载redis-5.0.12版本,上传到linux环境下http://download.redis.io/releases/
这里直接通过命令去操作wget http://download.redis.io/releases/redis-5.0.12.tar.gz
下载后解压至当前目录
tar -zxvf redis-5.0.12.tar.gz
进入解压后的目录,进行初始化
cd redis-5.0.12/
执行make编译Redis:执行命令
make MALLOC=libc
然后初始化,redis
执行命令
make install
好,操作到这里,redis安装的差不多了,我们现在去修改配置文件redis.conf,修改前为了保持文件原整性,我们这里copy它
cp redis.conf redis_16379.conf
这里简要说明下, redis默认端口是6379,哨兵默认端口是26379,我们这里搭建的主从复制,那么我们简单定义
主端口16379,两个从端口分别是16380,16381
哨兵是集群模式,这里搭建三台,端口分别定义为26379,26380,26381;这里只是个人习惯,让他你可以定义为其他端口也是可以的
好,继续,
为了规范,这里创建一个文件夹,后续日志、pid等信息都放到这个目录下:mkdir sentinel
开始修改conf,vim redis_16379.conf
这个文件里面主要修改以下配置
ip,protected-mode保护模式,port(端口),daemonize运行模式,pidfile地址,logfile日志路径,dir数据目录,
protected-mode关闭保护模式
port,6379改为16379
daemonize运行模式,no改为yes
pidfile地址
logfile日志路径
dir数据目录
修改配置文件,保存退出:wq
这里我们启动试试,看看配置的是不是有问题哈
src/redis-server redis_16379.conf
ps -ef|grep redis
看着没啥问题,端口已经启动,
我们用自己的客户端工具连接下试试
远程连接成功,好到这里我们主从复制才做好第一步,搭建一个redis实例,
接下来,我们开始搭建主从模式模式,16379端口为主,16380和16381端口为从节点
操作:
1、复制一份redis.conf文件
2、将相关配置修改为如下值: port 16380
pidfile /root/redis-5.0.12/sentinel/redis_16380.pid # 把pid进程号写入pidfile配置的文件
logfile "16380.log"
dir /usr/local/redis-5.0.3/data/16380 # 指定数据存放目录
3、配置主从复制
replicaof 127.0.0.1 16379 # 从本机16379的redis实例复制数据,
replica-read-only yes # 配置从节点只读
4、启动从节点 redis-server redis.conf 5、连接从节点 redis-cli -p 6380 6、测试在6379实例上写数据,6380实例是否能及时同步新修改数据 7、可以自己再配置一个6381的从节点
开干,复制文件
cp redis_16379.conf redis_16380.conf
修改配置,
端口
pidfile 和logfile
配置主从复制
好,保存退出,启动
src/redis-server redis_16380.conf ,
创建16381端,复制redis_16380.conf,
cp redis_16380.conf redis_16381.conf
然后将文件里面的所有16380,都改为16381,这里不在操作,及其简单,和配置16380一样,只是把16380改为16381而已,
然后启动16381端口
src/redis-server redis_16381.conf
ps -ef| grep redis
三个端口都已经启动,好这里验证下,主从复制是不是好使,
进入16379,看看他的info
src/redis-cli -h 127.0.0.1 -p 16379
好主从复制搭建成功,这里你可以自己验证下, 在16379里面set内容,看看16380,和16381里面是不是已经同步了,这里不在演示,我们开始搭建哨兵集群
哨兵集群最少是三台,我们这就按照三台搭建,端口分别是26379,26380,26381,
1、复制一份sentinel.conf文件 cp sentinel.conf sentinel_26379.conf
2、将相关配置修改为如下值:
port 26379
daemonize yes
pidfile "/root/redis-5.0.12/sentinel/redis-sentinel-26379.pid"
logfile "/root/redis-5.0.12/sentinel26379.log"
dir "/root/redis-5.0.12/sentinel"
sentinel monitor mymaster 192.168.0.60 6379 2 # mymaster这个名字随便取,客户端访问时会用到
3、启动sentinel哨兵实例 src/redis-sentinel sentinel-26379.conf
开干,复制文件
cp sentinel.conf sentinel_26379.conf
修改文件
找到sentinel monitor mymaster,6379修改为16379
好退出保存,并且复制sentinel_26379.conf,
将sentinel_26380里面所有的26379改为sentinel_26380,
将sentinel_26381里面所有的26379改为sentinel_26381,这里不在演示
配置好后,启动哨兵
src/redis-sentinel sentinel_26379.conf
src/redis-sentinel sentinel_26380.conf
src/redis-sentinel sentinel_26381.conf
启动完毕,我们看看哨兵里面的info
src/redis-cli -h 127.0.0.1 -p 26379
info
哨兵搭建成功,
我们验证下,我们找到16379,16380,16381这个几个redis实例哪个是主节点
发下16379是主节点,
那我们将这个节点给kill掉,看看哨兵会不会选举出来新的节点,
我们再次进入26379里面,看看现在主节点是谁
大概10s左右,看监控主节点端口已经改变,
此时我们在将16379启动起来,看看16379是什么角色
src/redis-server redis_16379.conf
src/redis-cli -h 127.0.0.1 -p 16379
好,到这里,哨兵搭建完毕。