CENTOS6.6下redis3.2集群搭建

本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn

[参考:]http://blog.csdn.net/zhu_tianwei/article/details/44928779

Redis3.0 最大的特点就是有了cluster的能力,使用redis-trib.rb工具可以轻松构建Redis Cluster。Redis Cluster采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。节点之间使用gossip协议传播信息以及发现新节点,这种结构和Cassandra很相似,Cassandra节点可以转发请求。Redis集群中节点不作为client请求的代理,client根据node返回的错误信息重定向请求。

集群特性

1.数据可以在cluster的多个node之间进行共享;2.一次请求处理多批key的命令将不再被支持,因为这些命令处理的key可能在不同的node之间,使用了它们反而会降低cluster的性能;
3.提供高HA,即某个node failed后cluster依旧提供高可用性。
cluster提供如下能力保证:
1.在cluster内自动把数据划分到不同的set上;
2.当集群中一小群机器出现网络故障时或者其他种类的failure时,cluster要保证系统继续可用;
redis的每个node启动后占用两个port 6379 & 16379。redis通过port 6379继续对client提供服务,client通过redis独有的文本协议与node进行通信,所以这个port被成为client port or command port。redis node通过port 16379与cluster内部的其他node进行二进制形式的通信,所以被称为data port or bus port。通过port 16379,node之间进行 failure detection(探活)、configure update(配置更新)、failure authorization(失败确认)。如果node使用别的端口作为command port,那么data port 一定是command port + 10000。 两个不同的cluster之间也可以通过data port进行data migration。
# 分片 redis cluster内部没用提供一致性hash算法来保证集群的可伸缩能力,而是通过简单的crc16 hash算法来进行sharding,所以它最多提供16384个slot。如果cluster有三个node,分别为 A and B and C,则A负责0 - 5500 slots,B负责5501 - 11000 slots,C负责11001 - 16383 slots。进行扩容的时候,就得在不同的node之间进行slots的迁移,不需要关机,也不会出现服务不可用现象。
cluster内部每个node(也成为一个instance)由一个master和多个slave构成,当master fail的时候,可以通过选举机制选出一个slave代替master。
Redis Cluster不提供强一致性。例如cluster接受了一个写请求,给client返回ok,这个写请求的内容也可能丢失。因为其写流程如下:
1 master B接受了一个写请求;
2 B写成功,返回ok给client;
3 B把数据广播给slaves(B1、B2、B3)
如果第二步执行完毕后,B crash了,则会发生数据不一致现象。这与传统的DBMS类似,它们接收了写请求后,每隔1S才会把数据写入disk,这么做也是在性能和一致性之间做一个平衡。
如果用户对数据的一致性要求比较高,Redis可能也会兼顾这种需求,将来会提供相应的选项,让redis中的slave没用成功的接受数据之前不会给client返回ok给client。即先执行step 3,然后再执行step 2。
一致性还有一种场景。假设有client Z,与cluster内各个node A and B and C,以及各个node的replica A1 and B1 and C1,Z与B之间连接正常,但是B与B1以及cluster内其他nodes连接失败。如果Z发起write request,那么B会给他返回ok,但是B1无法获取到相应的数据,这就要求写的时候也要把node与cluster内其他的成员的探活也要考虑在内。基本要求就是,写时间周期要大于探活时间周期(node timeout)。当node B timeout之后,master B会自动进入failing状态,拒绝外部client的连接请求,而cluster则会选出slave B1来代替B。

安装配置redis3.2

安装ruby环境

由于通过redis-trib.rb工具构建Redis Cluster,需要rudy环境,执行如下命令安装:

yum -y  install zlib ruby rubygems  

安装ruby 的redis库:

gem install redis

安装配置redis3.2

这里我用两台服务器,6个节点,互为主从,即3个主节点3个从节点192.168.10.120和192.168.10.121
分别在两台上安装redis

    wget http://download.redis.io/releases/redis-3.2.0.tar.gz
    tar -zxvf redis-3.2.0.tar.gz
    mkdir redis
    cd redis-3.2.0
    make PREFIX=/usr/local/redis
    make PREFIX=/usr/local/redis install
 

将集群工具复制到/usr/local/redis/bin下

cp /usr/local/redis-3.2.0/src/redis-trib.rb /usr/local/redis/bin/

创建数据配置目录

mkdir -p /usr/local/redis/{conf,data,logs}

两台都配置

cd /usr/local/redis
cp /usr/local/redis-3.2.0/redis.conf ./conf/redis-6380.conf
cp /usr/local/redis-3.2.0/redis.conf ./conf/redis-6381.conf
cp /usr/local/redis-3.2.0/redis.conf ./conf/redis-6382.conf

分别在两台服务器上修改这三个文件,如下,仅仅改对应的端口数字即可:

# 基本配置
daemonize  yes
pidfile /usr/local/redis/data/redis-6380.pid
port 6380
bind 192.168.10.120
unixsocket /usr/local/redis/data/redis-6380.sock
unixsocketperm 700
timeout 300
loglevel verbose
logfile /usr/local/redis/logs/redis-6380.log
databases 16
dbfilename dump-6380.rdb
dir /usr/local/redis/data/ 

# aof持久化
appendonly yes
appendfilename appendonly-6380.aof
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 80-100
auto-aof-rewrite-min-size 64mb
lua-time-limit 5000

# 集群配置
cluster-enabled yes
cluster-config-file /usr/local/redis/data/nodes-6380.conf
cluster-node-timeout 5000 

启动

分别把每个节点都启动起来

./bin/redis-server ./conf/redis-6380.conf ;tail -f logs/redis-6380.log
./bin/redis-server ./conf/redis-6381.conf ;tail -f logs/redis-6381.log
./bin/redis-server ./conf/redis-6382.conf ;tail -f logs/redis-6382.log # 查看是否都启动了

ps -ef |grep redis

创建集群

 ./bin/redis-trib.rb create --replicas 1 192.168.10.120:6380 192.168.10.120:6381 192.168.10.120:6382 192.168.10.121:6380 192.168.10.121:6381 192.168.10.121:6382
 
时间: 2024-11-05 19:33:54

CENTOS6.6下redis3.2集群搭建的相关文章

redis3.0集群搭建

Redis集群搭建 redis cluster介绍 节点自动发现.集群容错slave选举.Cluster管理.集群配置管理. 集群中的每个Redis节点需要2个TCP连接端口,如6379端口用于Client连接,16379端口用于集群数据通信 集群采用Hash Slot方案,而不是一致性哈希,共16384个Hashslot.如果有3台机器,那么NodeA在0-5500,NodeB 在5501-11000,NodeC在11001-16384.这种设计下,添加,删除新Node比较方便. 由于Hash

【Data Cluster】真机环境下MySQL数据库集群搭建

阅读目录 MySQL Cluster简介 mysql-cluster构造 虚拟机安装centos6.6 mysql-cluster下载 centos6.6搭建环境配置 mysql-cluster安装包导入cent中 集群配置 运行mysql-cluster 常见问题 测试 真机环境下MySQL-Cluster搭建文档  摘要:本年伊始阶段,由于实验室对不同数据库性能测试需求,才出现MySQL集群搭建.购置主机,交换机,双绞线等一系列准备工作就绪,也就开始集群搭建.起初笔者对此不甚了解,查阅很多资

CentOS下的ZooKeeper集群搭建

ZooKeeper集群搭建过程: 1.下载ZooKeeper安装包,解压安装: 2.在/etc/profile下配置ZooKeeper环境变量,增加变量$ZOOKEEP_HOME=ZooKeeper安装目录,再将$ZOOKEEPER_HOME/bin添加到$PATH变量: 3.将ZooKeeper安装目录conf下zoo_sample.cfg另存为zoo.cfg, 并修改相关配置信息: 4.将zoo.cfg文件拷贝到集群下的其他服务器上: 5.在每一台ZooKeeperZooKeeper服务器的

Centos6.5下Ceph存储集群的搭建

简单介绍 Ceph的部署模式下主要包含以下几个类型的节点 ? Ceph OSDs: A Ceph OSD 进程主要用来存储数据,处理数据的replication,恢复,填充,调整资源组合以及通过检查其他OSD进程的心跳信息提供一些监控信息给Ceph Monitors . 当Ceph Storage Cluster 要准备2份数据备份时,要求至少有2个Ceph OSD进程的状态是active+clean状态 (Ceph 默认会提供两份数据备份). ? Monitors: Ceph Monitor

Centos下Apache+Tomcat集群--搭建记录

一.目的 利用apache的mod_jk模块,实现tomcat集群服务器的负载均衡以及会话复制,这里用到了<Cluster>. 二.环境 1.基础:3台主机,系统Centos6.5,4G内存,50G硬盘. yum源已更换为阿里源(如何更换可参考博客的另外一篇文章) 2.软件:development tools,jdk-7u9-linux-x64.rpm;源码编译软件apr-util-1.5.4.tar.gz,apr-1.5.2.tar.gz,tomcat-connectors-1.2.40-s

【Oracle 集群】Linux下Oracle RAC集群搭建之Oracle DataBase安装(八)

Oracle 11G RAC数据库安装(八) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体系的总结,一则进行回顾复习,另则便于查询使用.本图文文档亦源于此.阅读Oracle RAC安装与使用教程前,笔者先对这篇文章整体构思和形成进行梳理.由于阅读者知识储备层次不同,我将从Oracle RAC安装前的准备与规划开始进行整体介绍安装部署Oracle RAC.始于唐博士指导,对数据库集群进行

Centos6.5下安装Mysql集群

安装要求:       安装环境:Centos6.5       安装方式:源码安装       软件名称: mysql-cluster-gpl-7.2.26-linux2.6-x86_64.tar.gz       软件安装位置:/usr/local/mysql       数据存放位置:/var/mysql/data       日志存放位置:/var/mysql/logs 集群设计:      首先设计集群的安装分配方式,至少需要三台服务器,sql节点和数据节点可以放在同一台服务器上,服务

Ubuntu16.04下,rabbimq集群搭建

rabbitmq作为企业级的消息队列,功能很齐全,既可以作为单一的部署模式,又可以做集群的部署模式 单一部署就不说了,就是在一台服务器上部署rabbitmq消息队列,可以参考我的博客:Ubuntu16.04下,erlang安装和rabbitmq安装步骤去安装部署 集群部署有好几种方式,具体使用哪一种,要根据自己的需求而定,这里主要介绍一下普通集群和镜像集群 普通模式 普通模式是集群的默认模式,集群中各个节点拥有相同的队列结构,但是队列的消息实体已保存在其中一个节点,当消费者consumer连接集

centos7下Zookeeper+sheepdog集群搭建

zookeeper 安装命令 yum install zookeeper -y            (版本:zookeeper.x86_64      3.4.6-1) yum install zookeeper-lib -y   (版本:zookeeper-lib.x86_64   3.4.6-1) 配置文件:/etc/zookeeper/zoo.cfg 作如下修改: maxClientCnxns=50 tickTime=2000 initLimit=10 syncLimit=5 dataD