twemproxy安装访问及同机部署多实例

twemproxy是干啥的网上讲的很多,这里就不提了。

项目github地址:https://github.com/twitter/twemproxy/releases

twemproxy不支持事务操作

twemproxy支持的命令情况:https://github.com/twitter/twemproxy/blob/master/notes/redis.md

首先安装配置redis,此处略过。

下载

到github上下载twemproxy的源代码,此处下载的zip版本的,然后解压:

unzip twemproxy-0.4.1.zip
编译
# 进入到源码目录
cd twemproxy-0.4.1

# 使用autoreconf工具生成一些编译的程序文件
yum install autoconf automake libtool libffi-dev
autoreconf -fvi

# 建立一个twemproxy编译后的工作目录
mkdir -p /home/redis-test/twemproxy

# 进行编译的目录配置
./configure --prefix=/home/redis-test/twemproxy

# 进行源代码的编译与安装
make && make install
配置
# 将源码中提供的配置文件复制到源码安装目录
mkdir -p /home/redis-test/twemproxy/conf
cp -p /home/redis-test/twemproxy-0.4.1/conf/nutcracker.yml /home/redis-test/twemproxy/conf/redis_master.yml

默认文件内容如图:


删除多余内容,修改配置文件,LISTEN的含义和redis的host:port相同,代表允许访问IP的范围,第一个字段要和文件名一致:

redis_master:
  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:
   - 127.0.0.1:6379:1
   - 127.0.0.1:6380:1
   - 127.0.0.1:6381:1
运行访问
# 创建pid目录
mkdir -p /home/redis-test/twemproxy/pids
# 创建log目录
mkdir -p /home/redis-test/twemproxy/logs

# 启动
# 还有参数会用到,用于监控   如果在同一台机器上启动多个twemproxy,不修改端口的话也会报错
# -s, --stats-port=N     : set stats monitoring port (default: 22222)
# -a, --stats-addr=S     : set stats monitoring ip (default: 0.0.0.0)
# 更多参数见文末
/home/redis-test/twemproxy/sbin/nutcracker -c  /home/redis-test/twemproxy/conf/redis_master.yml -p  /home/redis-test/twemproxy/pids/redis_master.pid -o  /home/redis-test/twemproxy/logs/redis_master.log -d

然后通过redis-cli 进行访问就好,twemproxy相当于redis的代理,所以地址和ip改为twemproxy的即可:

redis-cli -h 127.0.0.1 -p 22121

因为twemproxy是代理,所以依旧可以用各种client直接访问。
下面是lettuce的例子:

public class LettuceMain {
    public static void main(String[] args) {
        RedisClient redisClient = RedisClient.create(
                RedisURI.builder()
                        .withHost("47.93.126.108")
                        .withPort(22121)
                        .build()
        );
        RedisCommands<String, String> commands =  redisClient.<String, String>connect().sync();
        commands.set("test", "test twemproxy");
        System.out.println(commands.get("test"));
    }
}

jedis的例子:

public class JedisMain {
    public static void main(String[] args) {
        Jedis jedis = new Jedis("47.93.126.108", 22121);
        System.out.println(jedis.get("test"));
    }
}
高可用

通过平行的部署多个twemproxy实例,外面再加一层负载均衡,如Nginx、HAProxy等。

个人测试一般是在同机部署多实例,直接按上面的运行方式,修改配置文件的端口后运行,是无法启动的。

因为twemproxy提供的有监控访问端口,如果直接启动就会端口冲突,上面提到了监控访问端口的ip和port参数。

# -s, --stats-port=N     : set stats monitoring port (default: 22222)
# -a, --stats-addr=S     : set stats monitoring ip (default: 0.0.0.0)

所以同机启动多实例时,还需要加个-s参数,使用一个未被占用的端口即可。

命令参数
-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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值