• 基于twemproxy的redis集群部署


    一、系统及软件版本

    操作系统:CentOS Linux release 7.3.1611 (Core)

    内核版本:3.10.0-514.el7.x86_64

    redis版本:3.2.8

    twemproxy版本:0.4.1

    二、安装目录及服务器信息

    redis安装目录:/usr/local/redis

    twemproxy安装目录:/usr/local/twemproxy

    服务器信息:

    twemproxy:192.168.1.158

    redis-node1:192.168.1.182

    redis-node2:192.168.1.188

    三、redis安装过程

    1、安装依赖的包

    yum -y install jemalloc gcc

    2、解压redis的安装文件

    tar xf redis-3.2.8.tar.gz

    3、进入redis-3.2.8目录

    cd redis-3.2.8

    4、安装

    make && make install

    redis的安装文件目录

    PREFIX             : /usr/local

    BINDIR             : /usr/local/bin

    DATADIR            : /usr/local/share

    INCLUDEDIR         : /usr/local/include

    LIBDIR             : /usr/local/lib

    MANDIR             : /usr/local/share/man

    5、安装redis服务

    ./utils/install_server.sh

    服务的配置

    Port           : 6379

    Config file    : /etc/redis/6379.conf

    Log file       : /var/log/redis_6379.log

    Data dir       : /var/lib/redis/6379

    Executable     : /usr/local/bin/redis-server

    Cli Executable : /usr/local/bin/redis-cli

    Is this ok? Then press ENTER to go on or Ctrl-C to abort.

    Copied /tmp/6379.conf => /etc/init.d/redis_6379

    四、安装twemproxy

    1、安装依赖的包

    yum -y install automake sudo yum install libtool

    2、解压twemproxy的安装文件

    tar xf twemproxy-0.4.1.tar.gz

    3、进入twemproxy-0.4.1目录

    cd twemproxy-0.4.1

    4、安装

    CFLAGS="-ggdb3 -O0" autoreconf -fiv

    ./configure --prefix=/usr/local/twemproxy --enable-debug=log

    make

    make install

    5、添加配置文件

    cd /usr/local/twemproxy/

    mkdir conf run

    cd conf

    vim nutcracker.yml加入如下内容:

    alpha:

      listen: 127.0.0.1:22121

      hash: fnv1a_64

      distribution: ketama

      auto_eject_hosts: true

      redis: true

      server_retry_timeout: 2000

      server_failure_limit: 1

      servers:

       - 192.168.1.182:6369:1 node1

       - 192.168.1.188:6379:1 node2

    6、配置文件测试

    在测试之前要将conf目录复制到sbin目录下才可以进行测试,否则会一直提示配置文件无效:

    /usr/local/twemproxy/sbin/nutcracker -t

    nutcracker: configuration file 'conf/nutcracker.yml' syntax is invalid

    cp -r conf sbin/

    再测试即可成功

    7、以守护进程方式启动进程

    ./nutcracker -d -c /usr/local/twemproxy/conf/nutcracker.yml -p /usr/local/twemproxy/run/redisproxy.pid -o /usr/local/twemproxy/run/redisproxy.log

    五、单redis实例测试

     [root@server opt]# redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q

    SET: 38565.37 requests per second

    LPUSH: 40096.23 requests per second

    或者使用如下命令:

    redis-benchmark  -p 6379 -c 100 -t get -d 100

    六、twemproxy测试

    [root@server opt]# redis-benchmark -h 127.0.0.1 -p 22122 -t set,lpush -n 100000 -q

    SET: 8652.76 requests per second

    LPUSH: 8637.07 requests per second

    或者使用如下命令:

    redis-benchmark  -p 22122 -c 100 -t get -d 100

    七、twemproxy优劣

    优点:

    twemproxy这是一个轻量级的Redis和memcached代理。使用它可以减少缓存服务器的连接数,并且利用它来作分片。twemproxy与每个redis服务器都会建立一个连接,每个连接实现了两个FIFO的队列,通 过这两个队列实现对redis的pipeline访问。将多个客户端的访问合并到一个连接,这样既减少了redis服务器的连接数,又提高了访问性能。

    缺点:

    1、虽然可以动态移除节点,但该移除节点的数据就丢失了。

    2、 redis集群动态增加节点的时候,twemproxy不会对已有数据做重分布

    3、性能上的损耗(其实作为代理  必定会有损耗, twemproxy损耗属于很小的级别了)

    4、不支持针对多个值的操作,比如取sets的子交并补等(MGET 和 DEL 除外)

    5、不支持Redis的事务操作

    虽然twemproxy是缓存集群代理,可以对单点出现问题进行剔除和重试链接。但是twemproxy同时也存在单点故障,解决方法参考高可用的解决方案。

  • 相关阅读:
    Java核心篇,二十三种设计模式(二),结构型——适配器模式
    Java第三十七天,Mybatis框架系列,基于注解的缓存控制
    Java第三十七天,Mybatis框架系列,缓存
    Java第三十七天,Mybatis框架系列,延迟加载(基于 Collection 的实现方式)
    Java第四十五天,SpringBoot框架系列,SpringBoot基础(五)
    第十一篇 Django 【基础篇】
    第十篇 web应用&http协议
    第八篇 (2)jQuery
    第九篇 BootStrap
    第八篇 JavaScript
  • 原文地址:https://www.cnblogs.com/fansik/p/6986319.html
Copyright © 2020-2023  润新知