dynomite上手指南

96
小城大麦
2016.09.07 10:58* 字数 357

dynomite使用netflix开源的一个开源将非分布式的缓存系统改造成分布式的缓存系统,根据亚马逊的Dynamo进行设计,是一个高可用,高性能,支持跨数据中副本的分布式存储代理层。
根据Dynomite的拓扑图,我们创建一个单DC单Rack三个服务节点的dynomite存储层。

安装redis

wget http://download.redis.io/releases/redis-3.2.3.tar.gz
tar zxf redis-3.2.3.tar.gz
cd redis-3.2.3
make install

安装dynomite

$ yum install -y git autoconf automake libtool openssl-devel net-tools
$ git clone git@github.com:Netflix/dynomite.git
$ git checkout master
$ cd dynomite
$ autoreconf -fvi
$ ./configure --enable-debug=log
$ make
$ src/dynomite -h

创建工作目录

$ mkdir -p /apps/dynomite/bin
$ mkdir -p /apps/dynomite/conf
$ cp src/dynomite /app/dynomite/bin/
$ git clone https://github.com/richieyan/IntroDynomitedb.git

复制IntroDynomitedb中conf下的3个配置到/apps/dynomite/conf
修改配置的IP地址

创建3个redis配置文件

复制redis下的配置,修改端口,bind地址和daemonize
redis1.conf : port 6379
redis2.conf : port 6389
redis3.conf : port 6399
启动这三个redis服务

redis-server redis1.conf
redis-server redis2.conf
redis-server redis3.conf

启动dynomite服务(单DC单Rack的普通集群)

-s 是stats的监听端口 -d 表示后台运行

$ bin/dynomite -c conf/node1.yml -s 22221 -d --output=node1.log
$ bin/dynomite -c conf/node2.yml -s 22222 -d --output=node2.log
$ bin/dynomite -c conf/node3.yml -s 22223 -d --output=node3.log

3个节点构成一个普通集群,无副本复制,但是通过dynomite的端口可以获得任意节点的数据。

使用redis-cli测试

redis-cli -h 10.130.138.47 -p 8102
> set ca California
> get ca
> "California"

通过dynomite的端口进行操作,dynomite会计算key的hash,按照Node的token计算出实际操作的Node,并将请求转发给次节点。
使用Dyno客户端,可以同步节点的token信息,从而使Dyno客户端在java层计算出其实际存储的节点token,可以避免dynomite的二次计算。

server
Web note ad 1