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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM