【Redis集群分类】

1.主从复制(master/slave)

2.高可用Sentinel哨兵

3.高可用集群模式

【 主从复制(master/slave)】

[Redis一主多从架构]

通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,但由于数据是存储在一台服务器上的,如果这台服务器出现故障,比如硬盘坏了,也会导致数据丢失。

为了避免数据单点丢失,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。

【如何实现】

要求当主服务器上的数据更新后,自动将更新的数据同步到其他服务器上。

Redis提供了复制(replication)功能来自动实现多台Redis服务器的数据同步。

我们可以通过配置多台Redis,并在配置文件中指定这几台Redis之间的主从关系,主负责写入数据,同时把写入数据实时同步到从机器,这种模式叫做“主从复制”,即master/slave方式,并且Redis默认master用于写,slave用于读,向salve写数据会导致错误。

[ 实现方式1 ]

修改配置文件,启动时,服务器读取配置文件,并自动成为指定服务器的从服务器,从而构成主从复制关系。

下面配置是基于单台服务器,启动多个Redis实例的配置,模拟一下多台redis服务

  1. #master主服务器conf文件配置 新增一个redis_6380配置文件
  2. include /usr/local/redis-3.2.9/redis.conf #导入Redis原始配置文件的内容
    daemomize yes
  3. port 6380
  4. pidfile /var/rum/redis_6380.pid
  5. logfile 6380.log
  6. dbfilename dump6380.rdb

  7. #slave从服务器conf文件配置
  8. include /usr/local/redis-3.2.9/redis.conf #同主服务器
    daemonize yes
  9. port 6382
  10. pidfile /var/run/redis_6382.log
  11. dbfilename dump6382.rdb
  12. slaveof 127.0.0.1 6380 #这句是关键

相关命令

[ 实现方式2 ]

./redis-server --slaveof <master-ip> <master-port>,在启动redis时指定当前服务器成为某个主Redis服务的从slave。

[容灾处理(手动处理)]

当master服务出现故障,需手动将slave中的一个提升为master,剩下的slave挂至新的master上(冷处理),步骤如下(假如三台机器分别是:master、slave1、slave2)

1.连接slave1,先将slave1服务器提升为master:slaveof no one

2.连接salve2,再将slave2挂至新的master上:slaveof 127.0.0.1 6381

[主从模式总结]

【高可用Sentinel哨兵】

Sentine哨兵是Redis官方提供的高可用方案,可以用它来监视多个Redis实例的运行情况。

[监控]

[配置(使用的是单台服务器启动三个实例的方式)]

[启动sentinel]

[sentinel总结]

【高可用集群模式】

Redis集群是一个由多个节点群组成的分布式服务器群,它具有复制、高可用、分片的特性,Redis不需要Sentinel哨兵也能完成节点移除和故障转移的功能,需要将每个节点设置为集群模式,这种集群模式没有中心节点,可以水平扩展,官方文档称可以线性扩展到1000节点,Redis集群的性能和高可用均优于之前版本的Sentinel哨兵模式,且集群配置较为简单。

11_Redis集群的更多相关文章

  1. 启动了VSAN服务的主机不在vCenter集群中

    背景: 这个问题的来源是,某用户将该ESXi主机直接夺取到另一个vCenterA的管辖中,而这个vCenterA中集群A开启了VSAN功能,导致再次反向夺取到vCenterB中的时候带有了来自于集群A ...

  2. Apache Ignite之集群应用测试

    集群发现机制 在Ignite中的集群号称是无中心的,而且支持命令行启动和嵌入应用启动,所以按理说很简单.而且集群有自动发现机制感觉对于懒人开发来说太好了,抱着试一试的心态测试一下吧. 在Apache ...

  3. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  4. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  5. windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

    本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分 ...

  6. 在开启DRS的集群中修复VMware虚拟主机启动问题

    通过iSCSI方式连接到ESXi主机上的外挂存储意外失联了一段时间,导致部分虚拟主机在集群中呈现出孤立的状态,单独登陆到每台ESXi上可以看到这些虚拟主机都变成了unknow状态.因为有过上一次(VM ...

  7. 通过VMware的PowerCLI配置集群内指定主机的vMotion功能

    PowerCLI是VMware开发的基于微软(MSFT)的PowerShell的命令行管理vSphere的实现,因此在批量化操作方面CLI会减轻很多GUI环境下的繁琐重复劳作. 现有场景中有大量的物理 ...

  8. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之集群概念介绍(一)

    集群概念介绍(一)) 白宁超 2015年7月16日 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习 ...

  9. 【Big Data】HADOOP集群的配置(一)

    Hadoop集群的配置(一) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...

随机推荐

  1. golang (2) package

    综述 golang package是基本的管理单元,package是golang最基本的分发单位和工程管理中依赖关系的体现. 每个golang源代码文件开头都拥有一个package声明,表示该gola ...

  2. php尝试调用一个图灵机器人

    1.需要到图灵机器人的网址,去注册一下账号.网址:http://www.tuling123.com/sso-web/index.html?ReturnURL=http%3A%2F%2Fwww.tuli ...

  3. 使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)

    一直听说python requests库对于接口自动化测试特别合适,但由于自身代码基础薄弱,一直没有实践: 这次赶上公司项目需要,同事小伙伴们一起学习写接口自动化脚本,听起来特别给力,赶紧实践一把: ...

  4. 实习没事干之自学redis

    什么是Redis--http://how2j.cn/frontroute Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语 ...

  5. Spring Roo 想知道源码,怎么实现自动生成枯燥的有规律的文件

    简介   似乎是社区在维护的,不在 Spring 官网的 main projects 列表里,而是在 社区projects 列表里   是工具,不是像Spring Boot 一样的框架 http:// ...

  6. sql根据表中数量字段自动复制记录行

    客户需要将表中统计好的数据还原成统计前的原始记录 例如: ID Name QTYCount100 Name1 1101 Name2 2102 Name3 3103 Name4 4104 Name5 5 ...

  7. document.referrer的使用和window.opener 跟 window.parent 的区别

    偶尔看到了document.referrer,之前一直有点疑惑与window.opener 和 window.parent之间的区别 首先查了一下w3cSCHOOL, 上面的解释:referrer 属 ...

  8. Ubuntu apache

    Linux系统为Ubuntu 1. 启动apache服务 # /etc/init.d/apache2 start 2. 重启apache服务 # /etc/init.d/apache2 restart ...

  9. 在myeclipse中换项目的jdk版本,你需要做哪些?

    首先,我们必须把jdk在系统中安装好,环境变量配好,才能进行下一步的操作…… 然后在点击项目,右键选择Properties,找到Java Build Path,拉倒最下面,把原来的jdk版本给remo ...

  10. ES6中的类继承和ES5中的继承模式详解

    1.ES5中的继承模式 我们先看ES5中的继承. 既然要实现继承,首先我们得要有一个父类. Animal.prototype.eat = function(food) { console.log(th ...