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

Twemproxy是一个代理服务器,可以通过它减少Memcached或Redis服务器所打开的连接数。

优点:

1、通过代理的方式减少缓存服务器的连接数

2、自动在多台缓存服务器间共享数据

3、通过不同的策略与散列函数支持一致性散列

4、通过配置的方式禁用失败的结点

5、运行在多个实例上,客户端可以连接到首个可用的代理服务器

6、支持请求的流式与批处理,因而能够降低来回的消耗

一、安装依赖项

yum install automake
yum install libtool

二、更新Autoconf版本。

Twemproxy需要2.64或更高版本。否则编译的时候报错:

autoreconf: Entering directory `.'

autoreconf: configure.ac: not using Gettext

autoreconf: running: aclocal --force -I m4

configure.ac:8: error: Autoconf version 2.64 or higher is required

configure.ac:8: the top level

autom4te: /usr/bin/m4 failed with exit status: 63

aclocal: autom4te failed with exit status: 63

autoreconf: aclocal failed with exit status: 63

下载新版本:  #wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz

rpm -qf /usr/bin/autoconf
autoconf-2.63-5.1.el6.noarch rpm -e --nodeps autoconf-2.63 #卸载当前版本 tar zxvf autoconf-2.69.tar.gz #解压安装
cd autoconf-2.69
./configure --prefix=/usr #编译
make && make install #安装
/usr/bin/autoconf -V #查看是否安装成功

三、安装Twemproxy

1、 安装git命令

yum install git -y

2、 下载

git clone https://github.com/twitter/twemproxy.git

3、 安装

cd twemproxy
autoreconf -fvi
./configure --prefix=/usr/local/twemproxy
make -j 8
make install

4、 配置文件

添加pid文件目录和配置文件conf目录

cd /usr/local/twemproxy
mkdir run conf

添加proxy配置文件

cd conf
vim nutcracker.yml

alpha:
listen: 127.0.0.1:22222 #使用哪个端口启动Twemproxy
hash: fnv1a_64 #指定具体的hash函数
distribution: ketama #具体的hash算法
auto_eject_hosts: true #是否在结点无法响应的时候临时摘除结点
timeout: 400 #超时时间(毫秒)
redis: true #是否是Redis的proxy
server_retry_timeout: 3000 #重试的时间(毫秒)
server_failure_limit: 1 #结点故障多少次就算摘除掉
servers: #下面表示所有的Redis节点(IP:端口号:权重 别名)
- 192.168.1.10:6379:1 master0
- 192.168.1.7:6379:1 master1

5、 启动twemproxy服务

nutcracker -t 测试配置文件

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

启动服务:

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

6nutcracker用法与命令选项

Usage: nutcracker [-?hVdDt] [-v verbosity level] [-o output file]

[-c conf file] [-s stats port] [-a stats addr]

[-i stats interval] [-p pid file] [-m mbuf size]

Options:

-h, –help              : 查看帮助文档,显示命令选项

-V, –version           : 查看nutcracker版本

-t, –test-conf         : 测试配置脚本的正确性

-d, –daemonize           : 以守护进程运行

-D, –describe-stats : 打印状态描述

-v, –verbosity=N   : 设置日志级别 (default: 5, min: 0, max: 11)

-o, –output=S        : 设置日志输出路径,默认为标准错误输出 (default: stderr)

-c, –conf-file=S     : 指定配置文件路径 (default: conf/nutcracker.yml)

-s, –stats-port=N   : 设置状态监控端口,默认22222 (default: 22222)

-a, –stats-addr=S  : 设置状态监控IP,默认0.0.0.0 (default: 0.0.0.0)

-i, –stats-interval=N    : 设置状态聚合间隔 (default: 30000 msec)

-p, –pid-file=S         : 指定进程pid文件路径,默认关闭 (default: off)

-m, –mbuf-size=N      : 设置mbuf块大小,以bytes单位 (default: 16384 bytes)

7、最近在新的公司要上twemproxy方案了,使用过程中出现了一下小问题:

1).yml配置文件中每个参数值对分隔符”:”后需要有一个空格

2)不同层次的参数需要缩进区分,最好使用tab键缩进,否则nutcracker进程不能启动。

3)在auto_eject_hosts: true的时候,关闭一个redis实例后,写入数据还是提示“(error) ERR Connection refused”。这个与server_retry_timeout参数设置太小有关,默认值30000msec是一个很好的选择。

CentOS6.5安装Twemproxy集群的更多相关文章

  1. Centos6.6 安装Mysql集群

    一.环境准备 1.1系统IP设置 准备三台服务器安装Centos6.6 64位操作系统,IP地址及角色分配如下: Node                 IP Address            ...

  2. 36. CentOS-6.3安装Mysql集群

    安装要求 安装环境:CentOS-6.3安装方式:源码编译安装 软件名称:mysql-cluster-gpl-7.2.6-linux2.6-x86_64.tar.gz下载地址:http://mysql ...

  3. redis CentOS6.5安装及集群部署

    .下载redis source包 链接:https://pan.baidu.com/s/122ZCjNvjl9Jx6M2YsLrncw 密码:92ze 2.解压 tar -xzf redis-3.2. ...

  4. CentOS6.5 安装Storm集群

    1.首先安装依赖包 [root@Hadoop-NN-01 ~]# yum install uuid* [root@Hadoop-NN-01 ~]# yum install libuuid [root@ ...

  5. CentOS6.5 安装Spark集群

    一.安装依赖软件Scala(所有节点) 1.下载Scala:http://www.scala-lang.org/files/archive/scala-2.10.4.tgz 2.解压: [root@H ...

  6. CentOS6.5安装HBase集群及多HMaster配置

    1.配置SSH免登录 请参考:http://www.cnblogs.com/hunttown/p/5470357.html 服务器配置: Hadoop-NN-01 主Hadoop-NN-02 备Had ...

  7. CentOS6.5 安装Zookeeper集群

    1.下载解压 2.配置环境变量:vi ~/.bashrc   或者   vi /etc/profile [hadoopuser@Linux01 ~]$ vi ~/.bashrc # zookeeper ...

  8. CentOS6.5 安装Kafka集群

    1.安装zookeeper 参考文档:http://www.cnblogs.com/hunttown/p/5452138.html 2.下载:https://www.apache.org/dyn/cl ...

  9. 安装hadoop集群服务器(hadoop1.2.1)

    摘要:hadoop,一个分布式系统基础架构,可以充分利用集群的威力进行高速运算和存储.本文主要介绍hadoop的安装与集群服务器的配置. 准备文件: ▪ VMware11.0.0      ▪ Cen ...

随机推荐

  1. spring基础---->请求与响应的参数(一)

    这里面我们主要介绍一下spring中关于请求和响应参数数据的问题.爱,从来就是一件千回百转的事.不曾被离弃,不曾受伤害,怎懂得爱人?爱,原来是一种经历. spring中的请求与响应 一.spring中 ...

  2. VS 2008 头文件库文件设置

    在程序开发中,很多时候需要用到别人开发的工具包,如OpenCV和itk.一般而言,在vs2008中,很少使用源文件,大部分是使用对类进行声明的头文件和封装了类的链接库(静态lib或动态dll). 如果 ...

  3. 关于array.sort(array,array)

    // 基于第一个 System.Array 中的关键字,使用每个关键字的 System.IComparable 实现,对两个一维 System.Array // 对象(一个包含关键字,另一个包含对应的 ...

  4. [原]openstack-kilo--issue(二) openstack auth error

    /** 系统环境:redhat7.2 repo:163 openstack version : kilo author: lihaibo 本博客已经添加"打赏"功能,"打 ...

  5. java.lang.NoClassDefFoundError: Could not initialize class xxx 原因

    一.问题及原因 程序里有个工具类,主要是调用它的静态方法来发送mq. 调用场景如下: 结果这两天报了个错: java.lang.NoClassDefFoundError: Could not init ...

  6. Kerberos认证与攻击学习总结

    0.背景 聆听了n1nty大佬(90后黑客代表)的谆谆指导,学习了n1nty大佬的基本操作,决定总结一下,做一个简要的读书笔记,也把之前自己记录的关于Windows的安全的一些博客能够串联起来.所以首 ...

  7. X-Requested-With导致CSRF失败

    在漫漫渗透之路中,眼前一亮的发现一个站.Referer字段没有检查,POST参数中的动态token也没有检查,这不是带一波CSRF的节奏嘛.但是遇到一个之前我没遇到的问题导致我CSRF失败,这个问题或 ...

  8. Unity3D动作资源(AnimatinClip)优化

    能做到去掉Scale曲线,降低浮点精度 using System; using UnityEngine; using System.Collections; using System.Collecti ...

  9. CentOS 安装PostregSQL9.2 同时出现pg安装错误

    错误: Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /usr/local/bin ...

  10. 【CF903G】Yet Another Maxflow Problem 线段树

    [CF903G]Yet Another Maxflow Problem 题意:一张图分为两部分,左边有n个点A,右边有m个点B,所有Ai->Ai+1有边,所有Bi->Bi+1有边,某些Ai ...