文档结构如下:

一、环境说明:

作用

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主从复制(一主二从)哨兵模式的搭建的更多相关文章

  1. Linux 安装Redis 5.0

    结构如下: Redis 官方不建议Redis安装在WINDOWS 服务器上(尤其是生产中分布式事物缓存). linux 下Redis 5.0主从复制(一主二从)哨兵模式的搭建:https://www. ...

  2. windows下和linux下 Redis 安装

    Redis 是一个高性能的key-value数据库, 使用内存作为主存储,数据访问速度非常快,当然它也提供了两种机制支持数据持久化存储.比较遗憾的是,Redis项目不直接支持Windows,Windo ...

  3. Linux下Redis服务器安装配置

    说明:操作系统:CentOS1.安装编译工具yum install wget  make gcc gcc-c++ zlib-devel openssl openssl-devel pcre-devel ...

  4. linux下Redis与phpredis扩展安装

    ++++++++++++++++++++++++++++++++++++++++++++++linux下Redis与phpredis扩展安装++++++++++++++++++++++++++++++ ...

  5. linux下redis的安装及配置启动

    linux下redis的安装及配置启动 标签: redisnosql 2014-10-24 14:04 19732人阅读 评论(0) 收藏 举报  分类: 数据与性能(41)  wget http:/ ...

  6. linux下redis服务器安装使用 安装php的redis扩展 安装laravel下的redis

    linux下redis服务器安装使用 学习源头: https://blog.csdn.net/itmanba/article/details/77335012 安装完毕试运行redis的时候,可能会出 ...

  7. 莫小安 Linux下Redis的安装与配置

    转载自--Linux下Redis的安装与配置 redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcached类似,但很大程度补偿了 memcached的不足,它 ...

  8. 详解Linux下swig 3.0.12的手动安装过程

    详解Linux下swig 3.0.12的手动安装过程 首先 从http://www.linuxfromscratch.org/blfs/view/cvs/general/swig.html上下载swi ...

  9. linux下安装opencv3.0

    查版本gcc --version 需>4.8python 2.7+cmake --version numpy 以上是必须的 linux下安装opencv3.0<pre>https:/ ...

随机推荐

  1. 创建一个netcore2.0和angular的项目并运行起来

    netcore2.0发布了,喜大普奔. 我们先下载SDK,请看张善友老师的这篇博客 http://www.cnblogs.com/shanyou/p/7363037.html 下载完之后 我用的vs2 ...

  2. (链接)IDEA 2018 激活 IDEA 2018.3激活教程 最新的(三种)—2018.11.26亲测

    破解不成功的请注意时效性,写于2019/2/8,以下第一种激活方法亲测可用, 不过有时候破解成功了可能过几天突然就打不开了,双击无反应的说,这时候再按顺序 操作一遍就是了: 1)把idea64.exe ...

  3. java线程入门知识

    为什么需要多线程? . 模型的简化,如某些程序是由多个相对独立任务的运行: . 图形界面的出现,输入.输出的阻塞 . 多核CPU的更好利用 . 异步行为的需要 Java多线程的特性: . 程序的入口m ...

  4. (转)基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍

    http://www.cnblogs.com/wuhuacong/p/3344096.html 在前面介绍了一些关于最新基于MVC4+EasyUI的Web开发框架文章,虽然Web开发框架的相关技术文章 ...

  5. 洛谷P2038 无线网络发射器选址 水题 枚举

    刚开始边界写错了(将128写成127). 注意n <= 20,所以可以每读入一个点就将其周边更新,这样最多也只会有 40 * 40 * 20 种位置需要被枚举. Code: #include&l ...

  6. `itchat`配置代理

    config.py配置 首先,先找到itchat安装的目录,然后定位到config.py文件: import os, platform VERSION = '1.3.10' BASE_URL = 'h ...

  7. webpack学习笔记(3)--webpack.config.js

    module 参数 使用下面的实例来说明 module.exports = { module: { rules: [ { test: /\.css$/, use: 'css-loader' }, { ...

  8. nyoj48-小明的调查作业

    48-小明的调查作业 内存限制:64MB时间限制:1000msSpecial Judge: No accepted:3submit:4 题目描述: 小明的老师布置了一份调查作业,小明想在学校中请一些同 ...

  9. Spring 的IOC和DI

    IOC:IOC其实就是一种容器,该容器会主动的将资源推送给他所管理的组件, 组件所要做的仅是一种合适的方式来接受资源,这种行为也被称为查找的被动形式! IOC的反转控制:传统应用程序是由我们自己在对象 ...

  10. js:Array对象常用方法介绍

    前言 在js中,数组作为一个特殊的对象.是我们常用的数据格式.今天就来梳理一下常用的数组方法. 1.基础 几种基础的就简单介绍一下:创建数组 var arr1 = new Array(); //括号可 ...