ssdbrocks手册.docx

上传人:b****2 文档编号:1991783 上传时间:2023-05-02 格式:DOCX 页数:25 大小:25.81KB
下载 相关 举报
ssdbrocks手册.docx_第1页
第1页 / 共25页
ssdbrocks手册.docx_第2页
第2页 / 共25页
ssdbrocks手册.docx_第3页
第3页 / 共25页
ssdbrocks手册.docx_第4页
第4页 / 共25页
ssdbrocks手册.docx_第5页
第5页 / 共25页
ssdbrocks手册.docx_第6页
第6页 / 共25页
ssdbrocks手册.docx_第7页
第7页 / 共25页
ssdbrocks手册.docx_第8页
第8页 / 共25页
ssdbrocks手册.docx_第9页
第9页 / 共25页
ssdbrocks手册.docx_第10页
第10页 / 共25页
ssdbrocks手册.docx_第11页
第11页 / 共25页
ssdbrocks手册.docx_第12页
第12页 / 共25页
ssdbrocks手册.docx_第13页
第13页 / 共25页
ssdbrocks手册.docx_第14页
第14页 / 共25页
ssdbrocks手册.docx_第15页
第15页 / 共25页
ssdbrocks手册.docx_第16页
第16页 / 共25页
ssdbrocks手册.docx_第17页
第17页 / 共25页
ssdbrocks手册.docx_第18页
第18页 / 共25页
ssdbrocks手册.docx_第19页
第19页 / 共25页
ssdbrocks手册.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

ssdbrocks手册.docx

《ssdbrocks手册.docx》由会员分享,可在线阅读,更多相关《ssdbrocks手册.docx(25页珍藏版)》请在冰点文库上搜索。

ssdbrocks手册.docx

ssdbrocks手册

ssdb-rocks说明手册

1、简介

Leveldb是一个google实现的非常高效的kv数据库,基于文件存储系统,所以它支撑量大的数据而不因为内存的限制受取约束。

LevelDB只是一个C/C++的编程语言库,所以,PHP,Python等编程语言无法直接使用LevelDB,必须 将LevelDB封装成一个网络服务器。

而SSDB就是一个LevelDB的服务器(LevelDBServer),以LevelDB作为存储引擎,支持PHP/Java/Python/C/C++等客户端。

RocksDB实际上是在LevelDB之上做的改进,各方面都比levelDb强,它是Facebook开源的存储引擎。

而rocksdb本身只是一个数据库存储引擎,没有client-server支持。

因此ssdb-rocks诞生了。

ssdb-rocks为rocksdb封装了网络支持,支持C++,PHP,Java,Go,Python等客户端API。

2、安装说明

2、1RocksDB需要的依赖

yuminstallzlibzlib-develbzip2bzip2-develgflagsgflags-develsnappysnappy-devel

2、2RocksDB需要的gcc47-c++

下载rpm包地址:

http:

//people.centos.org/tru/devtools-1.1/6/x86_64/RPMS/

scl-utils-20120927-2.el6_4.6.centos.x86_64.rpm

devtoolset-1.1-runtime-1-13.el6.noarch.rpm

devtoolset-1.1-gcc-4.7.2-5.el6.x86_64.rpm

devtoolset-1.1-libstdc++-devel-4.7.2-5.el6.x86_64.rpm

devtoolset-1.1-gcc-c++-4.7.2-5.el6.x86_64.rpm

安装

rpm-ivhscl-utils-20120927-2.el6_4.6.centos.x86_64.rpmdevtoolset-1.1-runtime-1-13.el6.noarch.rpmdevtoolset-1.1-gcc-4.7.2-5.el6.x86_64.rpmdevtoolset-1.1-libstdc++-devel-4.7.2-5.el6.x86_64.rpmdevtoolset-1.1-gcc-c++-4.7.2-5.el6.x86_64.rpm

vim~/.bashrc

加入

exportCC=/opt/centos/devtoolset-1.1/root/usr/bin/gcc

exportCPP=/opt/centos/devtoolset-1.1/root/usr/bin/cpp

exportCXX=/opt/centos/devtoolset-1.1/root/usr/bin/c++

执行source~/.bashrc

2、3安装

gitclone

make&&makeinstall

3、使用说明

3、1启动ssdb-rocks服务器

/usr/local/ssdb/ssdb-server-d/usr/local/ssdb/ssdb.conf

3、2停止ssdb-rocks服务器

kill`cat/usr/local/ssdb/var/ssdb.pid`

3、3启动ssdb-rocks客户端

/usr/local/ssdb/ssdb-cli-h127.0.0.1-p8888

4、配置文件详解

SSDB的配置文件使用一个TAB来表示一级缩进,不要使用空格来缩进,无论你用2个,3个,4个,或者无数个空格都不行!

一定要记得修改你的Linux内核参数,关于maxopenfiles(最大文件描述符数)的内容,否则,你会在log.txt看到Toomanyopenfiles类似的错误,或者在客户端看到Connectionresetbypeer错误。

4.1监听网络端口

server:

ip:

0.0.0.0

port:

8888

默认的配置文件监听127.0.0.1本地回路网络,所以无法从其它机器上连接此SSDB服务器.如果你希望从其它机器上连接SSDB服务器,必须把127.0.0.1改为0.0.0.0.同时,利用配置文件的deny,allow指令限制可信的来源IP访问.

如果不做网络限制便监听0.0.0.0IP可能导致被任意机器访问到你的数据,这很可能是一个安全问题!

你可以结合操作系统的iptables来限制网络访问.

4.2日志配置

日志解读

一般,建议你将logger.level设置为debug级别.

请求处理

2014-06-1811:

01:

40.335[DEBUG]serv.cpp(395):

w:

0.393,p:

5.356,req:

seta1,resp:

ok1

w:

0.393请求的排队时间,毫秒

p:

5.356请求的处理时间,毫秒

req:

...请求内容

resp:

...响应内容

找出慢请求

找出慢请求的命令是:

tail-flog.txt|grepresp|grep'[wp]:

[1-9][0-9]\{0,\}\.'

#或者

catlog.txt|grepresp|grep'[wp]:

[1-9][0-9]\{0,\}\.'

这些命令用于找出排队时间,或者处理时间大于等于1毫秒的请求.

找出大于10毫秒的请求:

catlog.txt|grepresp|grep'[wp]:

[1-9][0-9]\{1,\}\.'

找出大于100毫秒的请求:

catlog.txt|grepresp|grep'[wp]:

[1-9][0-9]\{2,\}\.'

SSDB在工作中

ssdb-server会每隔5分钟输出这样的一条log

2014-06-1811:

18:

03.600[INFO]ssdb-server.cpp(215):

ssdbworking,links:

0

2014-06-1811:

23:

03.631[INFO]ssdb-server.cpp(215):

ssdbworking,links:

0

links:

0当前的连接数

日志级别

支持的日志级别有:

debug,warn,error,fatal.

一般,建议你将logger.level设置为debug级别.

输出日志到终端屏幕

编辑ssdb.conf,将

logger:

output:

log.txt

修改为

logger:

output:

stdout

4.3内存占用

一个ssdb-server实例占用的内存最高达到(MB):

cache_size+write_buffer_size*66+32

你可以调整配置参数,限制ssdb-server的内存占用.

4.4同步和复制

同步和复制的配置与监控

配置主-从

#server1

replication:

slaveof:

#server2

replication:

slaveof:

id:

svc_1

#sync|mirror,defaultissync

type:

sync

ip:

127.0.0.1

port:

8888

主-主

#server1

replication:

slaveof:

id:

svc_2

#sync|mirror,defaultissync

type:

mirror

ip:

127.0.0.1

port:

8889

#server2

replication:

slaveof:

id:

svc_1

#sync|mirror,defaultissync

type:

mirror

ip:

127.0.0.1

port:

8888

多主

在一组一共包含n个实例的SSDB实例群中,每一个实例必须slaveof其余的n-1个实例.

replication:

slaveof:

id:

svc_1

#sync|mirror,defaultissync

type:

mirror

ip:

127.0.0.1

port:

8888

slaveof:

id:

svc_2

#sync|mirror,defaultissync

type:

mirror

ip:

127.0.0.1

port:

8889

#...moreslaveof

监控同步状态

info命令返回的信息

ssdb127.0.0.1:

8899>info

binlogs

capacity:

10000000

min_seq:

1

max_seq:

74

replication

client127.0.0.1:

55479

type:

sync

status:

SYNC

last_seq:

73

replication

slaveof127.0.0.1:

8888

id:

svc_2

type:

sync

status:

SYNC

last_seq:

73

copy_count:

0

sync_count:

44

binlogs

当前实例的写操作状态.

capacity:

binlog队列的最大长度

min_seq:

当前队列中的最小binlog序号

max_seq:

当前队列中的最大binlog序号

replication

可以有多条replication记录.每一条表示一个连接进来的slave(client),或者一个当前服务器所连接的master(slaveof).

slaveof|clientip:

port,远端master/slave的ip:

port.

type:

类型,sync|mirror.

status:

当前同步状态,DISCONNECTED|INIT|OUT_OF_SYNC|COPY|SYNC.

last_seq:

上一条发送或者收到的binlog的序号.

slaveof.id:

master的id(这是从slave's角度来看的,你永远不需要在master上配置它自己的id).

slaveof.copy_count:

在全量同步时,已经复制的key的数量.

slaveof.sync_count:

发送或者收到的binlog的数量.

关于status:

DISCONNECTED:

与master断开了连接,一般是网络中断.

INIT:

初始化状态.

OUT_OF_SYNC:

由于短时间内在master有大量写操作,导致binlog队列淘汰,slave丢失同步点,只好重新复制全部的数据.

COPY:

正在复制基准数据的过程中,新的写操作可能无法及时地同步.

SYNC:

同步状态是健康的.

判断同步状态

binlogs.max_seq是指当前实例上的最新一次的写(写/更新/删除)操作的序号,replication.client.last_seq是指已发送给slave的最新一条binlog的序号.

所以,如果你想判断主从同步是否已经同步到位(实时更新),那么就判断binlogs.max_seq和replication.client.last_seq是否相等.

4.5启动从服务与连接

/usr/local/ssdb/ssdb-server-d/usr/local/ssdb/ssdb_slave.conf

/usr/local/ssdb/ssdb-cli-h127.0.0.1-p8889

5、集群配置

Twemproxy是一个Redis/Memcached代理中间件,可以实现诸如分片逻辑、HashTag、减少连接数等功能。

尤其在有大量应用服务器的场景下Twemproxy的角色就凸显了,能有效减少连接数。

5、1安装twemproxy

gitclone

cdtwemproxy

autoreconf-fvi

./configure--enable-debug=log

make

makeinstall

src/nutcracker-h

mkdir-p/usr/local/nutcracker/bin

mkdir-p/usr/local/nutcracker/conf

cpsrc/nutcracker/usr/local/nutcracker/bin

cpconf/*/usr/local/nutcracker/conf

 

5、2配置文件详解

gamma:

listen:

192.168.10.59:

22123

hash:

crc32a

distribution:

ketama

timeout:

400

backlog:

1024

preconnect:

true

redis:

true

auto_eject_hosts:

true

server_retry_timeout:

2000

server_failure_limit:

3

servers:

-192.168.10.58:

8888:

1

-192.168.10.59:

8888:

1

 

详细的配置信息如下:

●listen

twemproxy监听的端口。

可以以ip:

port或name:

port的形式来书写。

●hash

可以选择的key值的hash算法:

>one_at_a_time

>md5

>crc16

>crc32(crc32implementationcompatiblewithlibmemcached)

>crc32a(correctcrc32implementationasperthespec)

>fnv1_64

>fnv1a_64

>fnv1_32

>fnv1a_32

>hsieh

>murmur

>jenkins

如果没选择,默认是fnv1a_64。

●hash_tag

hash_tag允许根据key的一个部分来计算key的hash值。

hash_tag由两个字符组成,一个是hash_tag的开始,另外一个是hash_tag的结束,在hash_tag的开始和结束之间,是将用于计算key的hash值的部分,计算的结果会用于选择服务器。

例如:

如果hash_tag被定义为”{}”,那么key值为"user:

{user1}:

ids"和"user:

{user1}:

tweets"的hash值都是基于”user1”,最终会被映射到相同的服务器。

而"user:

user1:

ids"将会使用整个key来计算hash,可能会被映射到不同的服务器。

●distribution

存在ketama、modula和random3种可选的配置。

其含义如下:

ketama

ketama一致性hash算法,会根据服务器构造出一个hashring,并为ring上的节点分配hash范围。

ketama的优势在于单个节点添加、删除之后,会最大程度上保持整个群集中缓存的key值可以被重用。

modula

modula非常简单,就是根据key值的hash值取模,根据取模的结果选择对应的服务器。

random

random是无论key值的hash是什么,都随机的选择一个服务器作为key值操作的目标。

●timeout

单位是毫秒,是连接到server的超时值。

默认是永久等待。

●backlog

监听TCP的backlog(连接等待队列)的长度,默认是512。

●preconnect

是一个boolean值,指示twemproxy是否应该预连接pool中的server。

默认是false。

●redis

是一个boolean值,用来识别到服务器的通讯协议是redis还是memcached。

默认是false。

●server_connections

每个server可以被打开的连接数。

默认,每个服务器开一个连接。

●auto_eject_hosts

是一个boolean值,用于控制twemproxy是否应该根据server的连接状态重建群集。

这个连接状态是由server_failure_limit阀值来控制。

默认是false。

●server_retry_timeout

单位是毫秒,控制服务器连接的时间间隔,在auto_eject_host被设置为true的时候产生作用。

默认是30000毫秒。

●server_failure_limit

控制连接服务器的次数,在auto_eject_host被设置为true的时候产生作用。

默认是2。

●servers

一个pool中的服务器的地址、端口和权重的列表,包括一个可选的服务器的名字,如果提供服务器的名字,将会使用它决定server的次序,从而提供对应的一致性hash的hashring。

否则,将使用server被定义的次序。

5、3启动nutcracker

测试配置文件

/usr/local/nutcracker/bin/nutcracker-t-c/usr/local/nutcracker/conf/nutcracker.yml

后台启动

 /usr/local/nutcracker/bin/nutcracker-d-c/usr/local/nutcracker/conf/nutcracker.yml

6、高可用配置

Keepalived是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生。

6、1安装keepalived

安装openssl 

yum-yinstallopenssl* 

安装popt 

yum-yinstallpopt* 

安装ipvsadm 

yum-yinstallipvsadm

安装libnl-dev 

yum-yinstalllibnl-dev* 

wgethttp:

//www.keepalived.org/software/keepalived-1.2.16.tar.gz

tar-zxvfkeepalived-1.2.16.tar.gz

cdkeepalived-1.2.16

./configure--prefix=/usr/local/keepalived 

make 

makeinstall

6、2开机启动设置

cp/usr/local/keepalived/etc/rc.d/init.d/keepalived/etc/rc.d/init.d/

cp/usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig/

mkdir/etc/keepalived

cp/usr/local/keepalived/etc/keepalived/keepalived.conf/etc/keepalived/

cp/usr/local/keepalived/sbin/keepalived/usr/sbin/

chkconfigkeepalivedon

servicekeepalivedstart|stop

/usr/local/keepalived/sbin/keepalived-f/etc/keepalived/keepalived.conf 

6、3配置文件详解

global_defs{

notification_email{#指定keepalived在发生切换时需要发送email到的对象,一行一个

sysadmin@fire.loc

}

notification_email_fromAlexandre.Cassen@firewall.loc#指定发件人

smtp_serverlocalhost#指定smtp服务器地址

smtp_connect_timeout30#指定smtp连接超时时间

router_idLVS_DEVEL#运行keepalived机器的一个标识

}

vrrp_sync_groupVG_1{#监控多个网段的实例

group{

inside_network#实例名

outside_network

}

notify_master/path/xx.sh#指定当切换到master时,执行的脚本

netify_backup/path/xx.sh#指定当切换到backup时,执行的脚本

notify_fault"path/xx.shVG_1"#故障时执行的脚本

notify/path/xx.sh

smtp_alert#使用global_defs中提供的邮件地址和smtp服务器发送邮件通知

}

vrrp_instanceinside_network{

stateBACKUP#指定那个为master,那个为backup,如果设置了nopreempt这个值不起作用,主备考priority决

interfaceeth0#设置实例绑定的网卡

dont_track_primary#忽略vrrp的interface错误(默认不设置)

track_interface{#设置额外的监控,里面那个网卡出现问题都会切换

eth0

eth1

}

mcast_src_ip#发送多播包的地址,如果不设置默认使用绑定网卡的primaryip

garp_master_delay#在切换到master状态后,延迟进行gratuitousARP请求

virtual_router_id50#VPID标记

priority99#优先级,高优先级竞选为master

advert_int1#检查间隔,默认1秒

nopreempt#设置为不抢占注:

这个配置只能设置在backup主机上,而且这个主机优先级要比另外一台高

preempt_delay#抢占延时,默认5分钟

debug#debug级别

authentication{#设置认证

auth_typePASS#认证方式

auth_pass111111#认证密码

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2