linux 下Redis 5.0主从复制(一主二从)哨兵模式的搭建
文档结构如下:

一、环境说明:
|
作用 |
IP地址 |
端口 |
操作系统版本 |
安装目录 |
哨兵文件 |
|
主库 |
172.16.10.80 |
6379 |
Redhat 6.7 |
/redis5.0/redis-5.0.0 |
Sentinel6379.conf |
|
从一 |
172.16.10.81 |
6380 |
Redhat 6.7 |
/redis5.0/redis-5.0.0 |
Sentinel6380.conf |
|
从二 |
172.16.10.82 |
6381 |
Redhat 6.7 |
/redis5.0/redis-5.0.0 |
Sentinel6381.conf |
Redis一主二从主要是用于读写分离和容灾,配置是配从不配主,主从复制首次同步是全量,后面是增量同步;但是只要是重新连接master,一次完全同步(全量复制)将被自动执行。
二、安装
Redis 一主二从的安装其实跟单机的安装区别不大,本次安装我们可以先修改参数文件后在安装,可以参考我的单机的安装博客:
https://www.cnblogs.com/hmwh/p/9831091.html
或者直接百度 redis 5.0 linux 之类关键字,也可以百度的到。
2.1. 配置yum
a) 关闭防火墙
vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
setenforce 0
service iptables stop
chkconfig iptables off
b) 三台服务器配置好yum
mount /dev/sr0 /mnt/
cd /etc/yum.repos.d/
mv redhat.repo redhat.repo.bak
mv rhel-source.repo rhel-source.repo.bak
vi /etc/yum.repos.d/rhel-debuginfo.repo
[rhel-debuginfo]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///mnt/
enabled=1
gpgcheck=0
yum -y install make gcc*
2.2. 参数配置
mkdir -p /redis5.0
把解压包上传到/redis5.0
tar -zxvf redis-5.0.0.tar.gz
需要修改以及注释的参数如下:
Master:
cd /redis5.0/redis-5.0.0
save 900 1
#save 300 10
#save 60 10000
bind 172.6.10.80
daemonize yes
loglevel warning
timeout 60
logfile "6379.log"
dbfilename dump6379.rdb
maxmemory-policy volatile-ttl
auto-aof-rewrite-min-size 10GB
masterauth redis --主库的密码(本机可以不配置)
Slave1:
cd /redis5.0/redis-5.0.0
save 900 1
#save 300 10
#save 60 10000
bind 172.6.10.81
daemonize yes
loglevel warning
logfile "6380.log"
dbfilename dump6380.rdb
pidfile /var/run/redis_6380.pid
port 6380
timeout 60
maxmemory-policy volatile-ttl
auto-aof-rewrite-min-size 10GB
slaveof 172.16.10.80 6379
masterauth redis --主库的密码
Salve2:
cd /redis5.0/redis-5.0.0
save 900 1
#save 300 10
#save 60 10000
bind 172.6.10.82
daemonize yes
loglevel warning
port 6381
timeout 60
dbfilename dump6381.rdb
logfile "6381.log"
pidfile /var/run/redis_6381.pid
maxmemory-policy volatile-ttl
auto-aof-rewrite-min-size 10GB
slaveof 172.16.10.80 6379
masterauth redis --主库的密码
2.3. 安装
cd /redis5.0/redis-5.0.0
make
make install

安装完成。
启动如下:
redis-server /redis5.0/redis-5.0.0/redis6379.conf
redis-server /redis5.0/redis-5.0.0/redis6380.conf
redis-server /redis5.0/redis-5.0.0/redis6381.conf



由于参数已经修改完了,后面修改密码:
config set requirepass "redis"

并且写入配置文件:


例如关闭提示需要密码就说明修改成功。
同理修改下面两台服务器:


主从复制的密码配置:

查看主机角色信息:

查看从机一配置:

查看从机二配置:




可以看出同步状态正常。
三、测试
3.1. 注意
1、如果没有把slaveof 参数配置到参数文件中,从库重启后需要重新slaveof;即从库会变成主库(没有配置slaveof参数文件)
2、在主从搭建完成后,后面添加的从库slaveof后,会自动把数据从主库同步过来,生产上会有一定的性能影响。
3、从机只有读的权限,主机才能够写操作。
3.1. Master 挂掉slave变master(反客为主)
master 挂掉后,手动的让从库一升为主库。
关闭主库。

查看从库1,2


slave 变成主库
slaveof no one

3.1. 哨兵模式配置测试
Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:
监控(Monitoring): 哨兵(sentinel) 会不断地检查你的Master和Slave是否运作正常。
提醒(Notification):当被监控的某个 Redis出现问题时, 哨兵(sentinel) 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover):当一个Master不能正常工作时,哨兵(sentinel) 会开始一次自动故障迁移操作,它会将失效Master的其中一个Slave升级为新的Master, 并让失效Master的其他Slave改为复制新的Master;如果修复好的master重新启动后,原master变成slave。
简单配置如下:
在安装的redis目录下,有sentinel.conf文件,可以设置超时等等。
本次测试是我自己新建一个文件格式如下:

sentinel monitor 主机名 主机ip 主机端口 票数n 票数多余n的从机作为主机
由于是三台服务器(谁有2票就谁为新master)
vi sentinel6379.conf
sentinel monitor redis01 172.16.10.80 6379 2
sentinel auth-pass redis01 redis #master如果设置密码 没有可以不用这一行
sentinel down-after-milliseconds redis01 5000 #修改心跳为5000毫秒
protected-mode no --关闭保护进程模式,防止哨兵不能互相通信
启动:
redis-sentinel /redis5.0/redis-5.0.0/sentinel6379.conf
或者后台启动:
redis-sentinel /redis5.0/redis-5.0.0/sentinel6379.conf --sentinel &

vi sentinel6380.conf
sentinel monitor redis01 172.16.10.80 6379 2
sentinel auth-pass redis01 redis
sentinel down-after-milliseconds redis01 5000
protected-mode no --关闭保护进程模式,防止哨兵不能互相通信
启动:

vi sentinel6381.conf
sentinel monitor redis01 172.16.10.80 6379 2
sentinel auth-pass redis01 redis
sentinel down-after-milliseconds redis01 5000
protected-mode no --关闭保护进程模式,防止哨兵不能互相通信

3.4. 哨兵模式的反客为主(自动)
查看各个节点的哨兵模式情况:
Master:
redis-cli -h 172.16.10.80 -p 26379
info sentinel

Slave1:
redis-cli -h 172.16.10.81 -p 26379
info sentinel

Slave2:
redis-cli -h 172.16.10.82 -p 26379
info sentinel

模拟master down掉测试:

查看:
原master哨兵进程日志:

从中看出failover到原slave1了。
查看原salve1(现master) 哨兵进程日志:

Slave1 为新master了。
查看slave2日志说明:

Salve2变成原slave1的从库了。
查看新master信息:

角色为master,一个从库,为原slave1。
查看新从库信息:

为slave角色,新的主库为10.81。
测试是否同步:


同步成功。
3.3. 原master修好后
原master修好后,启动后:

变成现在master的从机了,并不会变成独立的一台master。

哨兵日志提示为10.81的从库了。
测试:

把现在新master数据同步过来了没问题,也可以自行测试。
总结:
1、 大的互联网公司都会使用哨兵模式主从或者集群模式24*7提供业务以及提供读写分离,减轻系统的压力,身边使用最多的就是大家知道的知乎网站。
2、 在failover之后,原master修复好后会变为新master的从库,并不会变成独立的一台master。
linux 下Redis 5.0主从复制(一主二从)哨兵模式的搭建的更多相关文章
- Linux 安装Redis 5.0
结构如下: Redis 官方不建议Redis安装在WINDOWS 服务器上(尤其是生产中分布式事物缓存). linux 下Redis 5.0主从复制(一主二从)哨兵模式的搭建:https://www. ...
- windows下和linux下 Redis 安装
Redis 是一个高性能的key-value数据库, 使用内存作为主存储,数据访问速度非常快,当然它也提供了两种机制支持数据持久化存储.比较遗憾的是,Redis项目不直接支持Windows,Windo ...
- Linux下Redis服务器安装配置
说明:操作系统:CentOS1.安装编译工具yum install wget make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel ...
- linux下Redis与phpredis扩展安装
++++++++++++++++++++++++++++++++++++++++++++++linux下Redis与phpredis扩展安装++++++++++++++++++++++++++++++ ...
- linux下redis的安装及配置启动
linux下redis的安装及配置启动 标签: redisnosql 2014-10-24 14:04 19732人阅读 评论(0) 收藏 举报 分类: 数据与性能(41) wget http:/ ...
- linux下redis服务器安装使用 安装php的redis扩展 安装laravel下的redis
linux下redis服务器安装使用 学习源头: https://blog.csdn.net/itmanba/article/details/77335012 安装完毕试运行redis的时候,可能会出 ...
- 莫小安 Linux下Redis的安装与配置
转载自--Linux下Redis的安装与配置 redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了 memcached的不足,它 ...
- 详解Linux下swig 3.0.12的手动安装过程
详解Linux下swig 3.0.12的手动安装过程 首先 从http://www.linuxfromscratch.org/blfs/view/cvs/general/swig.html上下载swi ...
- linux下安装opencv3.0
查版本gcc --version 需>4.8python 2.7+cmake --version numpy 以上是必须的 linux下安装opencv3.0<pre>https:/ ...
随机推荐
- Codeforces Round #445
ACM ICPC 每个队伍必须是3个人 #include<stdio.h> #include<string.h> #include<stdlib.h> #inclu ...
- Android横屏时软键盘全屏问题
1.使用 SearchView xml加入 android:imeOptions="actionDone|flagNoExtractUi" 可以限制软键盘禁止全屏 <andr ...
- ML一些简单的资源
参考文献及推荐阅读 维基百科,http://en.wikipedia.org/wiki/K-nearest_neighbor_algorithm: 机器学习中的相似性度量,http://www.cnb ...
- Python快速定位工作目录
原文链接:http://www.cnblogs.com/wdong/archive/2010/08/19/1802951.html 常年奋斗在编码一线的同学,应该都深有体会,工作久了,很多项目文件.技 ...
- ES5:深入解析如何js定义类或对象。
1.原始方式 var oCar = new Object; oCar.color = "blue"; oCar.showColor = function(){alert(this ...
- 搞不懂的算法-排序篇<2>
上一篇排序算法<1>中,排序算法的时间复杂度从N2到NlgN变化,但他们都有一个共同的特点,基于比较和交换数组中的元素来实现排序,我们称这些排序算法为比较排序算法.对于比较排序算法,所有的 ...
- Spring Boot 项目学习 (二) MySql + MyBatis 注解 + 分页控件 配置
0 引言 本文主要在Spring Boot 基础项目的基础上,添加 Mysql .MyBatis(注解方式)与 分页控件 的配置,用于协助完成数据库操作. 1 创建数据表 这个过程就暂时省略了. 2 ...
- 解决time命令输出信息的重定向问题
解决time命令输出信息的重定向问题 time命令的输出信息是打印在标准错误输出上的, 我们通过一个简单的尝试来验证一下. [root@web186 root]# time find . -name ...
- echart全局属性,自用,搜索比较快
// 全图默认背景 // backgroundColor: ‘rgba(0,0,0,0)’, // 默认色板 color: ['#ff7f50','#87cefa','#da70d6','#32cd ...
- Project Euler 19 Counting Sundays( 蔡勒公式计算星期数 )
题意:在二十世纪(1901年1月1日到2000年12月31日)中,有多少个月的1号是星期天? 蔡勒公式:计算 ( year , month , day ) 是星期几 以下图片仅供学习! /****** ...