标签:从服务器 and ldb sudo config 网络 lis beta als
本文档主要介绍用于线上环境SSDB部署步骤,利用Twemproxy代理实现SSDB的分布式存储,部署SSDB节点为主主模式,仅对单个SSDB节点进行读写,SSDB节点down后切换到另一个SSDB节点进行读写。
操作系统: CentOS 6.7
节点规划:
Twemproxy 192.168.10.100
ssdb1 master 192.168.10.101
ssdb2 master 192.168.10.102
SSDB 是基于底层存储引擎 LevelDB 实现的NOSQL 数据库,接口支持类似于 Redis,完全兼容 Redis 的协议,支持 list, has, zset 等数据结构。与 Redis 相比较,SSDB 利用持久化设备存储,避免了纯内存数据库的容量问题,与 LevelDB 的关系是 SSDB 利用了 LevelDB 的高性能存储实现,为其实现了网络和多数据结构支持,除此之外,支持多节点的主备、主主模式。
1 wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip 2 unzip master 3 cd ssdb-master 4 make 5 # 将安装在 /usr/local/ssdb 目录下 6 sudo make install 7 #/usr/local/ssdb目录下的脚本用于管理ssdb
下面开始配置节点ssdb1,ssdb2配置类似
1 cd /usr/local/ssdb 2 #编辑配置文件ssdb.conf 3 vim ssdb.conf 4 5 work_dir = ./var #data保存位置 6 pidfile = ./var/ssdb.pid 7 server: 8 ip: 192.168.10.101 9 port: 8889 10 replication: 11 binlog: yes 12 capacity: 20000000 13 # Limit sync speed to *MB/s, -1: no limit 14 sync_speed: -1 15 slaveof: 16 # to identify a master even if it moved(ip, port changed) 17 # if set to empty or not defined, ip:port will be used. 18 id: svc_1 19 # sync|mirror, default is sync 20 type: mirror 21 host: 192.168.10.102 22 port: 8888 23 #auth: password 24 logger: 25 level: debug 26 output: log.txt #log保存位置 27 rotate: 28 size: 1000000000 29 leveldb: 30 # in MB 31 cache_size: 500 32 # in KB 33 block_size: 32 34 # in MB 35 write_buffer_size: 64 36 # in MB 37 compaction_speed: 200 38 # yes|no 39 compression: no
1 cd /usr/local/ssdb 2 # 启动主库, 此命令会阻塞住命令行 3 ./ssdb-server ssdb.conf 4 5 # 或者启动为后台进程(不阻塞命令行) 6 ./ssdb-server -d ssdb.conf 7 8 # 启动 ssdb 命令行 9 ./tools/ssdb-cli -p 8888 10 11 # 停止 ssdb-server 12 ./ssdb-server ssdb.conf -s stop
1 # 将ssdb源代码目录下的 ./tools/ssdb.sh 脚本放到 /etc/init.d 目录下 2 cp ${ssdb_home}/tools/ssdb.sh /etc/init.d/ssdb 3 4 #配置/etc/init.d/ssdb 的configs,configs的值为ssdb.conf的路径,如下所示 5 vim /etc/init.d/ssdb 6 7 configs="/usr/local/ssdb/ssdb.conf" 8 9 #将ssdb加入开机启动 10 sudo chkconfig --add ssdb 11 sudo chkconfig ssdb on
wemproxy是twtter开源的一个redis和memcache代理服务器,这里我们使用Twemproxy代理来代理SSDB集群来实现数据的分布式存储,即shared。
1 ## 安装automake、libtool 、xz工具 2 $ yum install automake libtool xz -y 3 ## 安装autoconf 4 $ wget http://down1.chinaunix.net/distfiles/autoconf-2.69.tar.xz 5 $ xz -d autoconf-2.69.tar.xz 6 $ tar xf autoconf-2.69.tar -C /opt 7 $ cd /opt/autoconf-2.69 8 $ ./configure 9 $ make && make install 10 ## 安装Twemproxy 11 $ git clone https://github.com/twitter/twemproxy.git 12 $ cd twemproxy/ 13 $ autoreconf -fvi 14 $ ./configure 15 $ make && make install 16 ## 将Twemproxy的配置文件放置在/etc/下、 17 $ mkdir /etc/nutcracker 18 $ cp conf/nutcracker.yml /etc/nutcracker/nutcracker.yml
## 修改配置文件 $ vim /etc/nutcracker/nutcracker.yml beta: listen: 127.0.0.1:22122 # 监听地址和端口 hash: fnv1a_64 # 散列算法 hash_tag: "{}" # 假设ssdb中一个对象有多个key属性,如kora这个人的姓名name:kora:,kora的年龄age:kora:,kora的住址 loc:kora:, # 为了保证这kora这三个属性能被路由到后端的同一个分片上,我们就需要指定hash_tag: " {::}",这样就避免读取数据的时候跨分片检索 distribution: ketama # 分片的算法,有ketama(一致性hash)、module(取模)、random(随机)三种算法 auto_eject_hosts: false # 是否在节点无法响应时自动从服务器列表中剔除,重新响应时自动加入服务器列表中 timeout: 400 redis: true # 后端代理的是否为redis servers: # 分片服务器列表 - 192.168.10.101:8888:1 server1 - 192.168.10.102:8888:1 server2
1 ## 启动 2 $ nutcracker -d -c/etc/nutcracker/nutcracker.yml -p /var/run/redisproxy.pid -o /var/log/redisproxy.log& 3 ## 验证22122端口是否被监听 4 $ netstat -alnut |grep 22122 5 tcp 0 0 127.0.0.1:22122 0.0.0.0:* LISTEN
社区提供多个Python Client,从社区项目活跃度及发布版本的数量角度考虑,选择pyssdb 0.1.2作为访问SSDB的driver。
安装及使用参见:https://github.com/ifduyue/pyssdb
压测详情参见: http://www.wjxfpf.com/2015/10/601347.html
参考文档:
http://www.ideawu.net/blog/archives/765.html?cp=1#comments
http://quenlang.blog.51cto.com/4813803/1635778
标签:从服务器 and ldb sudo config 网络 lis beta als
原文地址:http://www.cnblogs.com/gaozhengwei/p/7101239.html