redis+twemproxy+keepalive集群搭建

redis集群简介:

Redis集群是一个实现分布式并且允许单点故障的Redis高级版本。

Redis集群没有最重要或者说中心节点,这个版本最主要的一个目标是设计一个线性可伸缩(可随意增删节点?)的功能。

Redis集群为了数据的一致性可能牺牲部分允许单点故障的功能,所以当网络故障和节点发生故障时这个系统会尽力去保证数据的一致性和有效性。(这里我们认为节点故障是网络故障的一种特殊情况)

为了解决单点故障的问题,我们同时需要masters 和 slaves。 即使主节点(master)和从节点(slave)在功能上是一致的,甚至说他们部署在同一台服务器上,从节点也仅用以替代故障的主节点。 实际上应该说 如果对从节点没有read-after-write(写并立即读取数据 以免在数据同步过程中无法获取数据)的需求,那么从节点仅接受只读操作。

twemproxy简介:

twemproxy,也叫nutcraker。是一个twtter开源的一个redis和memcache代理服务器。 redis作为一个高效的缓存服务器,非常具有应用价值。但是当使用比较多的时候,就希望可以通过某种方式 统一进行管理。避免每个应用每个客户端管理连接的松散性。同时在一定程度上变得可以控制。 搜索了不少的开源代理项目,知乎实现的python分片客户端。node的代理中间层,还有各种restfull的开源代理。

服务器系统:CentOS 6.5 x86_64
服务器架构:

10.57.1.127 twemproxy master,redis master
10.57.1.197 twemproxy slave,redis slave
10.57.1.111 keepalived

服务版本:

redis: 2.4.10
keepalived: 1.2.8
autoconf: 2.69
twemproxy: 0.4.0

一、redis
1、在redis master和redis slave主机上安装redis
先安装epel源

yum -y localinstall http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum -y install redis

redis master上修改/etc/redis.conf以下内容:

port 6379
bind 0.0.0.0

redis slave上修改/etc/redis.conf以下内容:

port 6379
bind 0.0.0.0
slaveof 10.57.1.127 6379

2、启动redis服务

/etc/init.d/redis restart

3、验证redis服务
登录到redis master服务器,执行

redis-cli -h 10.57.1.127 -p 6379 info|grep role

如果显示

role:master

登录到redis slave服务器,执行

redis-cli -h 10.57.1.197 -p 6379 info|grep role

如果显示

role:slave

说明redis的master/slave已经完成配置

二、twemproxy
1、在redis master和redis slave主机上安装twemproxy
首先去下载最新的twemproxy,在github上面找到最新版本

git clone https://github.com/twitter/twemproxy.git 
cd twemproxy/
CFLAGS="-ggdb3 -O0" autoreconf -fvi && ./configure --prefix=/usr/local/twemproxy  --enable-debug=log 
make 
make install
/usr/local/twemproxy/bin/nutcracker -t 
nutcracker: configuration file ‘conf/nutcracker.yml‘ syntax is ok
cp conf/nutcracker.yml /usr/local/twemproxy

2、配置twemproxy master

vim /usr/local/twemproxy/nutcracker.yml
redis1:
  listen: 0.0.0.0:22122
  hash: fnv1a_64
  hash_tag: "{}"
  distribution: ketama
  auto_eject_hosts: true
  timeout: 400
  redis: true
  servers:
  - 10.57.1.127:6379:1 server1  # redis实例的ip,端口,权重
  - 10.57.1.197:6379:1 server2

3、配置twemproxy slave

vim /usr/local/twemproxy/nutcracker.yml
redis2: 
  listen: 0.0.0.0:22122 
  hash: fnv1a_64 
  hash_tag: "{}" 
  distribution: ketama 
  auto_eject_hosts: true
  timeout: 400 
  redis: true 
  servers: 
  - 10.57.1.127:6379:1 server1  # redis实例的ip,端口,权重
  - 10.57.1.197:6379:1 server2

4、使用twemproxy启动脚本启动twemproxy master、twemproxy slave

vim /etc/init.d/redis-twemproxy
#!/bin/bash
source /etc/profile;
function Stop()
{
/usr/bin/pkill nutcracker
}
function Start()
{
/usr/local/twemproxy/sbin/nutcracker -d -c /usr/local/twemproxy/nutcracker.yml
}
case $1 in 
        stop)
            Stop
            ;;
        start)
            Start
            ;;
        *)
            echo "Usage: `basename $0` {stop|start}"
            ;;
esac

5、redis测试服务
执行

redis-cli -h 10.57.1.127 -p 22122
redis-cli -h 10.57.1.197 -p 22122

如果没有报错,说明成功!

三、keepalived
1、在keepalived主机上安装keepalived和ipvsadm

yum -y install keepalived ipvsadm

2、配置keepalived

vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived
global_defs {
   notification_email {
    [email protected]
   }
   notification_email_from [email protected]
   smtp_server smtp.yeah.net
   smtp_connect_timeout 30
   router_id redis_twemproxy
}
vrrp_instance VIP_1 {
    interface eth0
    state MASTER
    virtual_router_id 55
    priority 100
    virtual_ipaddress {
    10.57.1.101
    }
}
virtual_server 10.57.1.101 6379 {
    delay_loop 3
    lb_algo wrr
    lb_kind DR
    protocol TCP
    sorry_server 127.0.0.1 22122
    real_server 10.57.1.127 22122 {
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    }
    }
    real_server 10.57.1.197 22122 {
    TCP_CHECK {
    connect_timeout 3
    nb_get_retry 3
    delay_before_retry 3
    }
    }
}

3、启动keepalived

/etc/init.d/keepalived start

4、验证keepalived

ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.57.1.101:6379 wrr
  -> 10.57.1.127:22122            Route   1      0          0         
  -> 10.57.1.197:22122            Route   1      0          0

说明keepalived配置成功

5、测试一下10.57.1.101的6379端口是否畅通

nc -nvz -w 5 10.57.1.101 6379
Connection to 10.57.1.101 6379 port [tcp/*] succeeded!

显示succeeded表明已成功

redis集群已经配置成功。

时间: 2024-10-18 19:57:34

redis+twemproxy+keepalive集群搭建的相关文章

Redis进阶实践之十一 Redis的Cluster集群搭建

原文:Redis进阶实践之十一 Redis的Cluster集群搭建 一.引言 本文档只对Redis的Cluster集群做简单的介绍,并没有对分布式系统的所涉及到的概念做深入的探讨.本文只是针对如何设置集群.测试和操作集群做了简述,并且从用户的角度描述了系统的行为,并不涉及Redis集群规范中所包含的细节.但是,本教程试图从最终用户的角度来解释有关Redis的Cluster集群的可用性和一致性的特点,并以简单易懂的方式讲解. 请注意,本教程需要使用Redis 3.0版本或更高版本. 如果您打算部署

redis主从及集群搭建

redis主从复制 概述 1.Redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库. 2.通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力.主数据库主要进行写操作,而从数据库负责读操作. 主从复制过程 主从复制过程:见下图

redis 主从备份服务器集群搭建

redis 主从备份服务器集群 由于redis是要自己手动编译的,我就不折腾了,刚好手上有windown 64位的,就拿来练练手,等哪天在服务器上搭建项目了再弄, 启动命令:redis-server  --port  端口 在window  下启动4个redis-server  服务,端口分别为:1000,2000,3000,4000,  这样也相当于开了4台redis 数据库服务器, 现在使用  redis-cli  -host server_ip  -p  端口   连接对应的服务器 注:

超详细的 Redis Cluster 官方集群搭建指南

今天从 0 开始搭建 Redis Cluster 官方集群,解决搭建过程中遇到的问题,超详细. 安装ruby环境 因为官方提供的创建集群的工具是用ruby写的,需要ruby2.2.2+版本支持,ruby安装需要指定openssl. 安装openssl $ wget https://www.openssl.org/source/openssl-1.0.2m.tar.gz $ tar -zxvf openssl-1.0.2m.tar.gz $ cd openssl-1.0.2m $ ./config

linux Redis 5.0集群搭建

文档结构如下: Redis cluster 是redis的分布式解决方案,在3.0版本正式推出后,有效的解决了redis分布式方面的需求:当遇到单机内存,并发,流量等瓶颈是,可以采用cluster架构方案达到负载均衡的目的. 官方网站: https://redis.io/topics/cluster-tutorial Redis数据分区 Redis cluster 采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式: Slot=CRC16(key)&16384.每个节点负

redis 5.0 集群搭建

今天主要分享一下 redis 3主3从 集群的搭建过程.redis经常用来做缓存,可以提升读取数据的速度,数据都是存在内存中的,采用 RDB 或者 AOF 持久化存储后便可以实时落地到硬盘.本次主要是3主3从.架构原理如下: 题图:来自于网络 图片中的每一个圆圈都代表一台服务器.客户端访问任何一台服务器便可以连通任何服务器.当老的主节点也就是 master 节点挂掉时,会进行重新选举,当半数以上的 master 节点投票出现失败状态时(也就是和该故障matser连不通),就会认为该 master

Redis安装与集群搭建

1 1.1   安装redis n  版本说明 本教程使用redis3.0版本.3.0版本主要增加了redis集群功能. 安装的前提条件: 需要安装gcc:yum install gcc-c++ 1.下载redis的源码包. 2.把源码包上传到linux服务器 3.解压源码包 tar -zxvf redis-3.0.0.tar.gz 4.Make 5.Make install [[email protected] redis-3.0.0]# make install PREFIX=/usr/lo

Redis Cluster 官方集群搭建指南

安装ruby环境因为官方提供的创建集群的工具是用ruby写的,需要ruby2.2.2+版本支持,ruby安装需要指定openssl. 安装openssl $ wget https://www.openssl.org/source/openssl-1.0.2m.tar.gz $ tar -zxvf openssl-1.0.2m.tar.gz $ cd openssl-1.0.2m $ ./config --prefix=/usr/local/openssl $ ./config -t $ make

Redis高可用集群搭建

绪论 redis集群需要至少要三个master节点,下面将搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用三台机器部署6个redis实例,每台机器一主一从.设备为192.168.137.11.192.168.137.12和192.168.137.13 1. 下载redis http://www.redis.cn/download.html 2.上传并解压 tar -zxvf /redis-5.0.4.tar.gz  需要将redis分别上传