Centos7 编译安装redis-4.0.1及主从+哨兵模式

来源:互联网 发布:工业进销存软件免费版 编辑:程序博客网 时间:2024/05/19 18:37

一、redis概述及哨兵模式

redis对数据缓存到内存,实现高效缓存,使用持久化模块对数据进行保存,使用sentinel模式实现redis集群,提供高可用服务。

下面是在宏观层面上哨兵模式的功能列表:

·        监控哨兵不断的检查masterslave是否正常的运行。

·        通知当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序。

·        自动故障转移如果一个master不正常运行了,哨兵可以启动一个故障转移进程,将一个slave升级成为master,其他的slave被重新配置使用新的master,并且应用程序使用Redis服务端通知的新地址。

·        配置提供者哨兵作为Redis客户端发现的权威来源:客户端连接到哨兵请求当前可靠的master的地址。如果发生故障,哨兵将报告新地址。

二、网络规划及拓扑

hostnameIPredis服务端口哨兵哨兵服务端口redis-master10.0.0.1416739sentinel126739redis-slave110.0.0.1426739sentinel226739redis-slave210.0.0.1436739sentinel326739



三、编译安装redis及采用systemd启动脚本

1、解决依赖包问题并上传安装包

[root@redis-master ~]#yum install gcc gcc-c++ -y

2、创建必须的用户、文件及授权

[root@redis-master ~]# cd /usr/local/src/[root@redis-master src]# tar -xf redis-4.0.1.tar.gz[root@redis-master src]# mkdir /usr/local/redis[root@redis-master src]# useradd redis[root@redis-master src]# mv redis-4.0.1/* /usr/local/redis[root@redis-master src]# chown -R redis:redis /usr/local/redis

3、编译安装redis,makeMALLOC=libc是调用管理内存碎片

[root@redis-master src]# cd /usr/local/redis[root@redis-master redis]# make MALLOC=libc[root@redis-master redis]# make && make install
4、配置redis配置文件
[root@redis-master redis]# vim /usr/local/redis/redis.confdaemonize yes(为体现效果,一开始使用默认,暂时设为前台运行)protected-mode nobind 10.0.0.141logfile “/var/log/redis/redis.log”(日志存放路径,一开始使用默认)dir /usr/local/redis/rdb(持久化配置)supervised systemd(采用systemd启动)[root@redis-master redis]# mkdir /usr/local/redis/rdb[root@redis-master redis]# chown -R redis:redis /usr/local/redis/[root@redis-master redis]# mkdir /var/log/redis[root@redis-master redis]# chown -R redis:redis /var/log/redis

5、启动redis测试

[root@redis-master redis]# pwd/usr/local/redis[root@redis-master redis]# ./src/redis-server redis.conf

redis启动成功!!
6、编写启动脚本,并增加执行权限
[root@redis-master redis]# vim /usr/lib/systemd/system/redis.service[root@redis-master redis]# cat /usr/lib/systemd/system/redis.service[Unit]Description=Redis persistent key-value databaseAfter=network.target[Service]User=redisGroup=redisExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf --daemonize noExecStop=/usr/local/redis/src/redis-cli -h 10.0.0.141 -p 6379 shutdownRestart=always[Install]WantedBy=multi-user.target[root@redis-master redis]# chmod 750 /usr/lib/systemd/system/redis.service
使用systemd启动服务
[root@redis-master redis]# systemctl start redis

 查看启动状态


四、配置redis主从+哨兵模式
1、配置两台从服务器(redis-slave1和redis-slave2)
[root@redis-slave1 redis]# vim redis.confslaveof 10.0.0.141 6379[root@redis-slave2 redis]# vim redis.confslaveof 10.0.0.141 6379

2、配置哨兵模式(三台服务器都要配置)

[root@redis-master redis]# vim sentinel.confdaemonize yes(方便测试效果,使用默认)sentinel monitor mymaster 10.0.0.141 6379 2(ip指向master)protected-mode no
3、启动哨兵(手动启动)

配置完Redis和Sentinel之后,按顺序启动各个角色。启动顺序如下:

Master->Slave->Sentinel,要确保按照这个顺序依次启动。

Sentinel的启动命令和Redis类似。

[root@redis-master ~]# systemctl start redis[root@redis-slave1 ~]# systemctl start redis[root@redis-slave2 ~]# systemctl start redis[root@redis-master ~]# cd /usr/local/redis/[root@redis-master redis]# ./src/redis-sentinel sentinel.conf[root@redis-slave1 redis]# ./src/redis-sentinel sentinel.conf

哨兵启动成功!!!!
4、编写systemd启动sentinel脚本,使用systemd启动sentinel

[root@redis-master ~]# vim /usr/lib/systemd/system/sentinel.service[Unit]Description=Redis persistent key-value databaseAfter=network.target[Service]User=redisGroup=redisExecStart=/usr/local/redis/src/redis-sentinel /usr/local/redis/sentinel.conf --daemonize noExecStop=/usr/local/redis/src/redis-cli -h 10.0.0.141 -p 6379 shutdownRestart=always[Install]WantedBy=multi-user.target[root@redis-master redis]# chmod 750 /usr/lib/systemd/system/sentinel.service
systemd启动sentinel

五、测试

1、测试master写入缓存并查看slave是否同步



2、持久化数据


2、测试哨兵模式

实现高可用切换master(故障前master位于10.0.0.141)



redis-master主机故障,两台从服务器选举出新master


新master产生




原创粉丝点击