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的二次计算。
网友评论
修改配置的IP地址”是修改哪几个ip呀?
(1)redis第三个server的端口写成了6389,应该是6399;
(2)girhub上的yaml配置文件中的pem_key_file: 写错了,不应该是你自己新建路径下的conf,应该是源码路径下的conf.
如果有误,请谅解。