简述:

1.0.1:redis cluster的现状

目前redis支持的cluster特性

1):节点自动发现

2):slave->master 选举,集群容错

3):Hot resharding:在线分片

4):进群管理:cluster xxx

5):基于配置(nodes-port.conf)的集群管理

6):ASK 转向/MOVED 转向机制.

1.1.0redis cluster 架构

1.1.1redis-cluster架构图

1.1.2架构细节:

(1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽.

(2)节点的fail是通过集群中超过半数的节点检测失效时才生效.

(3)客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可

(4)redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

redis-cluster选举:容错、

(1)领着选举过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉.

(2):什么时候整个集群不可用(cluster_state:fail),当集群不可用时,所有对集群的操作做都不可用,收到((error) CLUSTERDOWN The cluster is down)错误

a:如果集群任意master挂掉,且当前master没有slave.集群进入fail状态,也可以理解成进群的slot映射[0-16383]不完成时进入fail状态.

b:如果进群超过半数以上master挂掉,无论是否有slave集群进入fail状态.

软件版本

Linux系统版本:

centos 6.5 2.6.32-431.el6.x86_64

Redis-3.0.7

ruby

2.0.0redis集群搭建

2.0.1机器列表

Centos01:192.168.161.233     从

Centos02:192.168.161.234     从

Centos03:192.168.161.235     从

Centos04:192.168.161.236     主

Centos05:192.168.161.237     主

Centos06:192.168.161.238     主

2.0.2Redis安装

6台机器分别安装 redis-3.0.7
#yum –y install gcc make tcl
安装软件依赖包
#cp redis-3.0.7.tar.gz /opt
将安装包拷贝至opt目录
#cd /opt
进入opt目录
#tar –xvf redis-3.0.7.tar.gz
解压
#cd redis-3.0.7
#make
编译 安装redis
#make test

  

2.0.3修改redis.conf配置文件:

daemonize yes 		//后台运行开启
pidfile /bestpayserver/redis-3.0-data/redis.pid //pid文件
port 6380 //reids提供服务端口
logfile "/bestpayserver/redis-3.0-log/redis.log" //日志文件配置
dir /bestpayserver/redis-3.0-data/ //数据存放路径
cluster-enabled yes //打开redis集群
cluster-config-file nodes-6380.conf //cluster集群配置文件(启动自动生成)
cluster-node-timeout 15000 //节点互链超时阀值
appendonly yes

  

2.0.4部署脚本

也可以写成脚本用salt跑
-------------------------------------------------------------------------华丽的分割线---------------------------------------------------------------------------
#!/usr/bin/bash
yum -y install gcc make tcl;
cp redis-3.0.7.tar.gz /opt;
cd /opt;
tar -xvf redis-3.0.7.tar.gz;
cd redis-3.0.7;
make
make test;
sed -i 's/daemonize no/daemonize yes/' /opt/redis-3.0.7/redis.conf;
sed -i 's/pidfile \/var\/run\/redis.pid/pidfile \/bestpayserver\/redis-3.0-data\/redis.pid/' /opt/redis-3.0.7/redis.conf;
sed -i 's/port 6379/port 6380/' /opt/redis-3.0.7/redis.conf;
sed -i 's/logfile ""/logfile "\/bestpayserver\/redis-3.0-log\/redis.log"/' /opt/redis-3.0.7/redis.conf;
sed -i 's/dir .\//dir \/bestpayserver\/redis-3.0-data\//' /opt/redis-3.0.7/redis.conf;
sed -i 's/# cluster-enabled yes/cluster-enabled yes/' /opt/redis-3.0.7/redis.conf;
sed -i 's/# cluster-node-timeout 15000/cluster-node-timeout 15000/' /opt/redis-3.0.7/redis.conf;
sed -i 's/appendonly no/appendonly yes/' /opt/redis-3.0.7/redis.conf;
mkdir -p /bestpayserver/redis-3.0-log/;
mkdir -p /bestpayserver/redis-3.0-data/;
/opt/redis-3.0.7/src/redis-server /opt/redis-3.0.7/redis.conf &;
-------------------------------------------------------------------------更华丽的分割线---------------------------------------------------------------------------

salt安装

Salt传输文件到各服务器
salt 'centos*' cp.get_file salt://redis-3.0.7.tar.gz /home/redis-3.0.7.tar.gz
salt 'centos*' cp.get_file salt://sed.sh /home/redis3install.sh
salt 'centos*' cmd.run 'sh /home/redis3insatl.sh
查看进程
salt '*' cmd.run 'ps -ef |grep redis'

3.0.5安装ruby

Reids.trib.rb  是redis集群命令行工具,是一个ruby程序所以我们需要ruby环境才能启动它

随意挑选两台机器安装ruby

# yum -y install ruby ruby-devel rubygems rpm-build
# gem install redis

2.0.6创建集群

# /opt/redis-3.0.7/src/redis-trib.rb create --replicas 1 192.168.161.233:6380 192.168.161.234:6380 192.168.161.235:6380 192.168.161.236:6380 192.168.161.237:6380 192.168.161.238:6380

[OK] All 16384 slots covered 则集群创建成功。

3.0.7查看集群状态

# /opt/redis-3.0.7/src/redis-cli -c -p 6380                    //进入redis客户端
127.0.0.1:6380> cluster info //查看集群信息

127.0.0.1:6380> cluster nodes			//查询集群节点

4.0.0集群操作:

CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
节点
CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
槽(slot)
CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT <slot> STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。

CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT <slot> <count> 返回 count 个 slot 槽中的键。

  

Redis 3.0.0 集群部署的更多相关文章

  1. hbase-2.0.4集群部署

    hbase-2.0.4集群部署 1. 集群节点规划: rzx1 HMaster,HRegionServer rzx2 HRegionServer rzx3 HRegionServer 前提:搭建好ha ...

  2. Redis 中常见的集群部署方案

    Redis 的高可用集群 前言 几种常用的集群方案 主从集群模式 全量同步 增量同步 哨兵机制 什么是哨兵机制 如何保证选主的准确性 如何选主 选举主节点的规则 哨兵进行主节点切换 切片集群 Redi ...

  3. redis3.0.5集群部署安装详细步骤

    Redis集群部署文档(centos6系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) ...

  4. 1--redis3.0.5集群部署安装详细步骤

    Redis集群部署文档(centos6系统) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下) ...

  5. redis-5.0.5 集群部署

    之前写过一套基于redis-4.0.6版本的测试集群部署 https://www.cnblogs.com/mrice/p/10730309.html 最近生产环境需要部署一套redis-5.0.5版本 ...

  6. Storm1.0.3集群部署

    Storm集群部署 所有集群部署的基本流程都差不多:下载安装包并上传.解压安装包并配置环境变量.修改配置文件.分发安装包.启动集群.查看集群是否部署成功. 1.所有的集群上都要配置hosts vi   ...

  7. redis 3.0的集群部署

    转载请注明出处:http://hot66hot.iteye.com/admin/blogs/2050676 最近研究redis-cluster,正好搭建了一个环境,遇到了很多坑,系统的总结下,等到re ...

  8. (转)redis 3.0的集群部署

    一:关于redis cluster 1:redis cluster的现状 reids-cluster计划在redis3.0中推出,可以看作者antirez的声明:http://antirez.com/ ...

  9. Redis 5.0.3集群部署

    参考文章 https://blog.csdn.net/yyTomson/article/details/85783753 https://www.cnblogs.com/zy-303/p/102731 ...

  10. redis3.0.7集群部署手册

    1.用root登录主机2.将redis-3.0.7.tar.gz传送到主机3.将rubygems-update-2.5.2.gem,redis-3.0.0.gem传送到主机4.解压redis-3.0. ...

随机推荐

  1. 为什么当多个inline-block的div中,如果有的div没有内容而有的div有内容,有内容的会下沉?

    为什么当多个inline-block的div中,如果有的div没有内容而有的div有内容,有内容的会下沉? 就像这样 两个div高度相同,第二个我写了一个1当作 有内容吧,它就下沉了... 奇怪... ...

  2. 新接触PHP课程,给自己定制的目标

    PHP课程初接触,对自己的计划和展望恢复 从今天开始了为期四个半月的关于PHP课程的学习.从零开始接触一门新的技术知识,而且还是在短短四个月内就要掌握牢固,其实确确实实感觉不易.可是世间再没有路,不还 ...

  3. 中国天气网放回json的解释

    本文是出自David_Tang的,原文http://www.cnblogs.com/mchina/archive/2013/07/12/3170551.html {"weatherinfo& ...

  4. MySQL 添加列, 修改列, 删除列

    ALTER TABLE:添加,修改,删除表的列,约束等表的定义. 查看列:desc 表名; 查看数据库创建语句: show create database 数据库名: 查看创建表的语句: show c ...

  5. html5 formData上传 针对app端

    function uploadFile() { if ((document.getElementById("file").files[0].size / 1024).toFixed ...

  6. PhpStorm配置svn时提示需要证书:authentication required的解决方法,总是弹出

    总是弹出下面的框框,每次输入svn账号密码,还是不行. 于是上网查了半天,需要安装和配置SlikSvn.于是就下载安装了. 完了还是不行,就尝试着配置. 上面和下面的加上,svn.exe的地址. 再次 ...

  7. 老王讲自制RPC框架.(一.前言与技术选型)

    (#)背景 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当网站流量很小时,只 ...

  8. git入门网站

    http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 git入门教程:对商业的.开源的. ...

  9. <js>实现回车键登陆方法,并处理谷歌与火狐不兼容的问题

    1.在body中添加onkeydown事件 <body onkeydown="keyLogin(event);">2.使用js相应登陆添加方法//添加回车登陆事件 fu ...

  10. jquery写的ajax

    1.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8& ...