前记:redis哨兵经验之谈。哨兵做主从切换可能要花费一两秒,这一两秒可能会丢失很多数据。解决方法之一是在java代码中做控制,try catch 到 链接断开的异常就sleep 一两秒钟再continue一下,重新执行一下try中的代码;另一种解决方法就是keepalive。所以说redis 3.0 之前的版本不太好用,我们应该把重点放到redis 3.0以后的版本 ,这一版本支持集群操作。

  在redis3.0以前,提供了Sentinel工具来监控各Master状态,如果master异常,则会做主从切换,将slave作为master,将master作为slave。其配置已稍微复杂一点,并且在各方面表现一般。在redis3.0已经支持集群的容错功能,并且非常简单。

  集群搭建:至少要三个master

第一步:创建一个文件夹reids-cluster,然后在其下面分别创建6个文件夹如下

  1. mkdir -p /user/local/reids-cluster
  2. mkdir 7001 7002 7003 7004 7005 7006

  正常来讲需要6台机器,我们在做练习的时候就开一台机器然后配置6个目录当做6个节点

第二步:把之前的redis.conf 配置文件分别copy到700*下,再修改各个文件内容

  1. daemonize yes
  2. port 700* (分别对每个机器的端口号进行设置)
  3. bind 192.168.1.16(必须要绑定当前机器的ip,不然会杯具)
  4. dir /usr/local/redis-cluster/700*/ (指定数据文件存放位置,必须要指定不同目录位置,不然会丢失数据)
  5. cluster-enabled yes (启动集群模式)
  6. cluster-config-file nodes700*.conf
  7. cluster-node-timeout 5000
  8. appendonly yes

第三步:由于redis集群需要使用ruby命令,所以我们需要安装ruby

  1. yum install ruby
  2. yum install rubygems
  3. gem install reids(安装redis和ruby的接口)

第五步:分别启动6个redis示例,然后检查是否启动成功

  1. /usr/local/redis/bin/redis-server /usr/local/redis-cluster/700*/redis.conf
  2. ps -el | grep reids 查看是否启动成功

第六步:首先到redis3.0安装目录下,然后执行redis-trib.rb 命令。

  1. cd /usr/local/redis3.0/src
  2. ./redis-trib.rb create --replicas 1 192.168.1.16:7001 192.168.1.16:7002 ..

  

  

第七步:到此为止,集群搭建成功,下面来验证一下集群

  1. 连接任意一个客户端:./redis-cli -c -h -p (-c表示集群模式,指定ip地址和端口号)如:/usr/local/redis/bin/redis-cli -c -h 192.168.1.16 -p 7001
  2. 进行验证:cluster info(查看集群信息)、cluster nodes(查看节点列表)
  3. 进行数据存储验证
  4. 关闭集群需要逐个关闭,使用命令 ./redis-cli -c -h 192.168.1.16 -p 7001 shutdown

补充:当集群出现无法启动的现象,删除临时数据文件,再次启动每一个redis服务,然后重新构造集群环境。reids-trib.rb 官方操作命令:http://redis.io/topics/cluster-tutorial 。推荐博客:http://blog.51yip.com/nosql/1726.html

架构师养成记--35.redis集群搭建的更多相关文章

  1. 架构师养成记--29.redis开篇

    主要有从下几点讲解 NOSQL(Redis) 简介.redis安装与部署 Redis基础事件类型详解 Redis高级命令 Redis与java的使用 Redis集群搭建 Redis集群与spring的 ...

  2. 架构师养成记--33.Redis哨兵、redis简单事务

    Redis哨兵 有了主从复制,如果我想想对主从服务器进行监控,在redis2.6后提供了哨兵机制,2.6有哨兵1.0版本,并不稳定.2.8以后的哨兵功能才稳定起来. 顾名思义,哨兵就是监控Redis系 ...

  3. 架构师养成记--34.Redis持久化

    ---恢复内容开始--- redis是一个支持持久化的内存数据库,也就是搜redis需要经常将内存中的数据同步到硬盘来保证持久化.redis持久化有两种方式. snapshotting(快照)默认方式 ...

  4. 架构师养成记--32.Redis高级(安全 主从复制)

    Redis高级命令及特性 keys * 返回满足的所有键值(*表示模糊匹配) exists 是否存在指定的key(返回1表示存在,0表示不存在) expire 设置某个key的过期时间,使用ttl查看 ...

  5. 架构师养成记--31.Redis的几种类型

    String类型 Redis一共分为五种基本数据类型:String.Hash.List.Set.ZSet String类型是包含很多张类型的特殊类型,并且是二进制安全的.比如对序列化的对象进行存储,比 ...

  6. 架构师养成记--30.Redis环境搭建

    Redis的安装 下载地址http://redis.io/download 安装步骤: 首先需要安装gcc,把下载好的redis-3.0.0-rc2.tar.gz 放到 /usr/local 文件夹下 ...

  7. Redis集群搭建-韩国庆

    认真一步一步搭建下来,就可以成功.... Redis-cluster集群架构讲解 redis集群专业名词称之为Redis-cluster,redis集群是从3.0版本以后才有的概念,也就是说在3.0之 ...

  8. redis学习五,redis集群搭建及添加主从节点

    redis集群 java架构师项目实战,高并发集群分布式,大数据高可用,视频教程 在redis3.0之前,出现了sentinel工具来监控各个Master的状态(可以看上一篇博客).如果Master异 ...

  9. Linux Redis集群搭建与集群客户端实现

    硬件环境 本文适用的硬件环境如下 Linux版本:CentOS release 6.7 (Final) Redis版本: Redis已经成功安装,安装路径为/home/idata/yangfan/lo ...

随机推荐

  1. advance shading——基础(辐射度测定)

    辐射度测定(radiometry) <real time rendering>在这章上来就说了一大堆光照方面的物理术语,不知该怎么翻译.后来在维基百科上看到这个表,清楚了很多(这里的w是瓦 ...

  2. Mybatis 实用篇(四)返回值类型

    Mybatis 实用篇(四)返回值类型 一.返回 List.Map List<User> getUsers(); <select id="getUsers" re ...

  3. 一起做RGB-D SLAM (6)

    第六讲 图优化工具g2o的入门 2016.11 更新 把原文的SIFT替换成了ORB,这样你可以在没有nonfree模块下使用本程序了. OpenCV可以使用 apt-get install libo ...

  4. asp.net mvc 5框架揭秘(文摘)

    第1章 asp.net + mvc 1.1.2 什么是MVC模式: model:对应用状态和业务功能的封装,同时包含数据和行为的领域模型. view:实现可视化界面的呈现并捕捉最终用户的交互操作. c ...

  5. iconv用法解读

    iconv是一个字符集转换函数,原型为: size_t iconv(iconv_t cd,              char **inbuf, size_t *inbytesleft,       ...

  6. swift - 歌曲列表动画

    // //  ViewController.swift //  songAnimation // //  Created by su on 15/12/10. //  Copyright © 2015 ...

  7. Ubuntu 16.04调节屏幕显示字体大小

    对于高分辨屏幕来说,Ubuntu的字体可能会有点小,反之,低分率的屏幕字体有点大,设置方法如下: [System Settings]->[Displays]->[ Scale for me ...

  8. 课堂限时训练-简易计算器·mini dc

    课堂限时训练-简易计算器·mini dc 实验题目 采用后缀表达式法,设计一个建议计算器,实现+.-.*./四种运算. 代码实现 码云链接 关键代码部分及结果如下: 实验分析 首先,分析一下后缀表达式 ...

  9. java中null转换成其它类型

    对null进行强转会不会抛错.测试结果是,如果把null强转给对象,是不会抛异常的,因为本身对象是可以为null的.但是如果是基本类型,比如 int i = (Integer)obj的强转,其实内部会 ...

  10. Hbase和传统数据库的区别

    在说HBase之前,我想再唠叨几句.做互联网应用的哥们儿应该都清楚,互联网应用这东西,你没办法预测你的系统什么时候会被多少人访问,你面临的用户到底有多少,说不定今天你的用户还少,明天系统用户就变多了, ...