SSDB分布式部署

本文档主要介绍用于线上环境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

SSDB 是基于底层存储引擎 LevelDB 实现的NOSQL 数据库,接口支持类似于 Redis,完全兼容 Redis 的协议,支持 list, has, zset 等数据结构。与 Redis 相比较,SSDB 利用持久化设备存储,避免了纯内存数据库的容量问题,与 LevelDB 的关系是 SSDB 利用了 LevelDB 的高性能存储实现,为其实现了网络和多数据结构支持,除此之外,支持多节点的主备、主主模式。

安装SSDB

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

启动SSDB

 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

SSDB开机启动

 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

部署Twemproxy

wemproxy是twtter开源的一个redis和memcache代理服务器,这里我们使用Twemproxy代理来代理SSDB集群来实现数据的分布式存储,即shared。

安装Twemproxy

 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

配置Twemproxy

## 修改配置文件
$ 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

启动Twemproxy

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

SSDB Python Client

社区提供多个Python Client,从社区项目活跃度及发布版本的数量角度考虑,选择pyssdb 0.1.2作为访问SSDB的driver。

安装及使用参见:https://github.com/ifduyue/pyssdb

SSDB性能压测

压测详情参见: http://www.wjxfpf.com/2015/10/601347.html

参考文档:

http://ssdb.io/zh_cn/

http://www.wzxue.com/ssdb/

http://www.ideawu.net/blog/archives/765.html?cp=1#comments

http://quenlang.blog.51cto.com/4813803/1635778

时间: 2024-08-06 16:02:23

SSDB分布式部署的相关文章

Zabbix基于Proxy分布式部署实现Web监控

前言 在日常运维工作中,难免会遇到这样或那样的故障,如何能在第一时间发现故障,并及时定位故障原因,保证业务不受影响,我想这应该是做好一个运维必须要掌握的技能.但人力不可能实时掌控系统的变化,于是监控系统应运而生,监控便是运维的眼睛,把监控和性能管理做好后,运维就是一件很轻松的事情.目前比较流行的开源监控工具有Cacti.Nagios(Icinga).Zabbix等.本文带来的是Zabbix基于Proxy分布式部署实现Web监控. Zabbix 简介 Zabbix是一个基于Web界面提供分布式系统

Apache/nginx转发设置-分布式部署(转)

转自http://blog.csdn.net/fujianianhua/article/details/8062234 Apache转发设置 1.  Weblogic安装 Weblogic8和Weblogic10默认安装,选择完全安装即可,如果是Weblogic9则选择自定义安装,勾选WebService plugin 2.apache服务器安装 安装说明详见文档<Apache服务器搭建说明.doc> 版本对应关系: Weblogic版本   Apache版本 weblogic8     Ap

【G】开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的

G.系列导航 [G]开源的分布式部署解决方案 - 预告篇 [G]开源的分布式部署解决方案(一) - 开篇 [G]开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的 分析目前项目结构 眼前出现这么一坨坨的文件夹,相信很多人已经看不下去了.是的,首先就是要把它给做掉. 按照这个项目文件夹的命名意图,大概可以划分如下: 1.Business:业务代码 2.Data:数据访问 3.Helpers:辅助类(通用类库之类的) 4.Models:各种模型(包括视图模型) 5.theme:皮肤

Hadoop2经典分布式部署模式

Hadoop2经典分布式部署模式 基于QJN的HA模式的分布式部署,不含Federation模块的实践是一个经典的Hadoop2的高可用的分布式部署模式. 1.准备测试环境 准备4台PC服务器做Hadoop2部署 ip hostname namenode fc datanode rm nodemanage QJN 10.71.84.237 hadoop201 Y Y Y Y Y Y 10.71.84.223 hadoop202 Y Y Y Y Y Y 10.71.84.222 hadoop203

Apache Spark探秘:三种分布式部署方式比较

目前Apache Spark支持三种分布式部署方式,分别是standalone.spark on mesos和 spark on YARN,其中,第一种类似于MapReduce 1.0所采用的模式,内部实现了容错性和资源管理,后两种则是未来发展的趋势,部分容错性和资源管理交由统一的资源管理系统完成:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架,比如MapReduce,公用一个集群资源,最大的好处是降低运维成本和提高资源利用率(资源按需分配).本文将介绍这三种部署方式,并比

EF之MSSQL分布式部署一:EFContext自定义数据库链接

不废话,上代码: 来源:http://bbs.csdn.net/topics/390823046 原文地址:EF之MSSQL分布式部署一:EFContext自定义数据库链接 /// <summary> /// 得到Entity的连接字符串 /// </summary> /// <param name="edmxFullName">Edmx的包括命名空间的全名称</param> /// <param name="server

分布式部署网站---文件系统的存储--ftp上传图片到指定文件服务器

问:通常一个网站程序发布在一个iis服务器上,但是如果要分布式部署网站.文件系统该如何存储呢? 答:通常的就是给网站文件系统一个子域名.比如 https://images.web.com. 网站程序内部通过代码调用ftp服务器-每次用户上传文件直接上传到相应imags域名对应的目录. 问:如果网站的图片,文件部署在子域名 网站该如何调用呢? 答:在视图模板里面 直接读取配置的images 域名  程序如下... public class AppConfig { /// <summary> //

【G】开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析

G.系列导航 [G]开源的分布式部署解决方案 - 预告篇 [G]开源的分布式部署解决方案(一) - 开篇 [G]开源的分布式部署解决方案(二) - 好项目是从烂项目基础上重构出来的 [G]开源的分布式部署解决方案(三) - 一期规划定稿与初步剖析 抱歉 首先我先说声抱歉,因为上一篇结尾预告第三篇本该是“部署项目管理”,那为什么变成本篇呢? 请容我解释一下,在预告篇到现在为止,经常会有人问我这个项目到底是干什么的.或许之前写的比较粗糙.那我相信目前定稿后的功能概览图应该会给大家一个比较清晰的认识.

windows下hadoop的集群分布式部署

下面我们进行说明一下hadoop集群的搭建配置. 本文假设读者具有hadoop单机配置的基础,相同的部分不在重述. 以三台测试机为例搭建一个小集群,三台机器的ip分别为 192.168.200.1;192.168.200.2;192.168.200.3 cygwin,jdk的安装同windows下hadoop的单机伪分布式部署(1),这里略过. 1.配置 hosts 在三台机子的hosts文件中加入如下记录: 192.168.200.1 hadoop1  #master namenode 192