Seaweed-FS综合使用测试

参考信息

https://github.com/chrislusf/seaweedfs/

https://bintray.com/chrislusf/seaweedfs/seaweedfs#

https://www.mercurial-scm.org/downloads

http://www.golangtc.com/download

http://ju.outofmemory.cn/entry/202009

http://studygolang.com/articles/2398

使用Go语言编写

Weed fs 是一个简单/高可用 密集型小文件存储的集群文件系统

Weed-FS is a simple and highly scalable distributed file system. There are two objectives:

官方说

to store billions of files! 可以存储亿级的小文件

to serve the files fast! 存取文件快速

Instead of supporting full POSIX file system semantics, Weed-FS choose to implement only a key~file mapping. Similar to the word “NoSQL”, you can call it as “NoFS”.

完整的符合POSIX文件系统规范 和nosql一样 使用key-file的结构。

一,架构设计

1,架构拓扑

DataCenter相当于数据中心

Rack相当于机柜

DataNode相当于服务器

测试topo如下(注意由于副本设置原因110,1个数据中心至少要有2个rack):

2,模拟现有环境测试:

数据中心1:dc1        Rack:dc1rack1         DataNode:dc1node1、dc1node2、dc1node3、dc1node4

数据中心2:dc2        Rack:dc2rack1         DataNode:dc2node1、dc2node2、dc2node3

weed master:dc1node1、dc1node2、dc2node1

weed volume:dc1node3、dc1node4、dc2node2、dc2node3

weed filter:dc1node1、dc1node2(目录支持,mout不支持)

3,备份策略用100:replicate once on a different data center

其他备份策略如下:

000 no replication, just one copy

001 replicate once on the same rack

010 replicate once on a different rack in the same data center

100 replicate once on a different data center

200 replicate twice on two other different data center

110 replicate once on a different rack, and once on a different data center

4,hosts文件:

192.168.88.213    dc1node1

192.168.88.214    dc1node2

192.168.88.215    dc1node3

192.168.88.216    dc1node4

192.168.188.58    dc2node1

192.168.188.133   dc2node2

192.168.188.172   dc2node3

二,部署设置

1,安装weed

1),Go(Golang)

wget http://www.golangtc.com/static/go/go1.6/go1.6.linux-amd64.tar.gz

tar zxvf go1.6.linux-amd64.tar.gz -C /usr/local

在/etc/profile设置goroot

export GOROOT=/usr/local/go

export PATH=$PATH:$GOROOT/bin:/usr/local/seaweedfs/sbin

source /etc/profice

2),Mercurial(版本控制)

wget http://mercurial.selenic.com/release/centos6/RPMS/x86_64/mercurial-3.4.2-0.x86_64.rpm

rpm -ivh mercurial-3.4.2-0.x86_64.rpm

3),Seaweed-FS

推荐二进制包,go install需要翻墙

https://bintray.com/chrislusf/seaweedfs/seaweedfs

weed_0.70beta_linux_amd64.tar.gz

tar zxvf weed_0.70beta_linux_amd64.tar.gz -C /usr/local/

cd /usr/local

mv weed_0.70beta_linux_amd64/ seaweedfs

mkdir seaweedfs/sbin

mv seaweedfs/weed  seaweedfs/sbin

2,部署weed

1),启动weed master

分别在dc1node1、dc1node1、dc2node1上执行

weed master   -mdir="/data/dc1node1" -ip="192.168.88.213" -ip.bind="192.168.88.213" -port=9333 -peers="dc1node1:9333,dc1node2:9333,dc2node1:9333"  -defaultReplication="110" &

weed master   -mdir="/data/dc1node2" -ip="192.168.88.214" -ip.bind="192.168.88.214" -port=9333 -peers="dc1node1:9333,dc1node2:9333,dc2node1:9333"  -defaultReplication="110" &

weed master   -mdir="/data/dc2node1" -ip="192.168.188.58" -ip.bind="192.168.188.58" -port=9333 -peers="dc1node1:9333,dc1node2:9333,dc2node1:9333"  -defaultReplication="110" &

使用介绍:

weed help master

Usage: weed master -port=9333

start a master server to provide volume=>location mapping service

and sequence number of file ids

Default Parameters:

-conf="/etc/weedfs/weedfs.conf": Deprecating! xml configuration file

-defaultReplication="000": Default replication type if not specified.

-garbageThreshold="0.3": threshold to vacuum and reclaim spaces

-idleTimeout=10: connection idle seconds

-ip="localhost": master <ip>|<server> address

-ip.bind="0.0.0.0": ip address to bind to

-maxCpu=0: maximum number of CPUs. 0 means all available CPUs

-mdir="/tmp": data directory to store meta data

-peers="": other master nodes in comma separated ip:port list, example: 127.0.0.1:9093,127.0.0.1:9094

-port=9333: http listen port

-pulseSeconds=5: number of seconds between heartbeats

-secure.secret="": secret to encrypt Json Web Token(JWT)

-volumeSizeLimitMB=30000: Master stops directing writes to oversized volumes.

-whiteList="": comma separated Ip addresses having write permission. No limit if empty.

启动日志:

[[email protected] ~]# weed master   -mdir="/data/dc1node1" -ip="192.168.88.213" -ip.bind="192.168.88.213" -port=9333 -peers="dc1node1:9333,dc1node2:9333,dc2node1:9333"  -defaultReplication="110" &

[1] 7186

[[email protected] ~]# I0314 14:13:59 07186 file_util.go:20] Folder /data/dc1node1 Permission: -rwxr-xr-x

I0314 14:13:59 07186 topology.go:86] Using default configurations.

I0314 14:13:59 07186 master_server.go:59] Volume Size Limit is 30000 MB

I0314 14:13:59 07186 master.go:69] Start Seaweed Master 0.70 beta at 192.168.88.213:9333

I0314 14:13:59 07186 raft_server.go:74] Joining cluster: dc1node1:9333,dc1node2:9333,dc2node1:9333

I0314 14:13:59 07186 raft_server.go:134] Attempting to connect to: http://dc1node1:9333/cluster/join

I0314 14:13:59 07186 raft_server_handlers.go:16] Processing incoming join. Current Leader  Self 192.168.88.213:9333 Peers map[]

I0314 14:13:59 07186 raft_server_handlers.go:20] Command:{"name":"192.168.88.213:9333","connectionString":"http://192.168.88.213:9333"}

I0314 14:13:59 07186 raft_server_handlers.go:27] join command from Name 192.168.88.213:9333 Connection http://192.168.88.213:9333

I0314 14:13:59 07186 raft_server.go:179] Post returned status:  200

I0314 14:13:59 07186 master_server.go:93] [ 192.168.88.213:9333 ] I am the leader!

I0314 14:14:24 07186 raft_server_handlers.go:16] Processing incoming join. Current Leader 192.168.88.213:9333 Self 192.168.88.213:9333 Peers map[]

I0314 14:14:24 07186 raft_server_handlers.go:20] Command:{"name":"192.168.88.214:9333","connectionString":"http://192.168.88.214:9333"}

I0314 14:14:24 07186 raft_server_handlers.go:27] join command from Name 192.168.88.214:9333 Connection http://192.168.88.214:9333

I0314 14:14:52 07186 raft_server_handlers.go:16] Processing incoming join. Current Leader 192.168.88.213:9333 Self 192.168.88.213:9333 Peers map[192.168.88.214:9333:0xc20822dc00]

I0314 14:14:52 07186 raft_server_handlers.go:20] Command:{"name":"192.168.188.58:9333","connectionString":"http://192.168.188.58:9333"}

I0314 14:14:52 07186 raft_server_handlers.go:27] join command from Name 192.168.188.58:9333 Connection http://192.168.188.58:9333

[[email protected] ~]# weed master   -mdir="/data/dc1node2" -ip="192.168.88.214" -ip.bind="192.168.88.214" -port=9333 -peers="dc1node1:9333,dc1node2:9333,dc2node1:9333"  -defaultReplication="110" &

[1] 47745

[[email protected] ~]# I0314 14:14:23 47745 file_util.go:20] Folder /data/dc1node2 Permission: -rwxr-xr-x

I0314 14:14:23 47745 topology.go:86] Using default configurations.

I0314 14:14:23 47745 master_server.go:59] Volume Size Limit is 30000 MB

I0314 14:14:23 47745 master.go:69] Start Seaweed Master 0.70 beta at 192.168.88.214:9333

I0314 14:14:23 47745 raft_server.go:74] Joining cluster: dc1node1:9333,dc1node2:9333,dc2node1:9333

I0314 14:14:23 47745 raft_server.go:134] Attempting to connect to: http://dc1node1:9333/cluster/join

I0314 14:14:23 47745 raft_server.go:179] Post returned status:  200

[[email protected] ~]#weed master   -mdir="/data/dc2node1" -ip="192.168.188.58" -ip.bind="192.168.188.58" -port=9333 -peers="dc1node1:9333,dc1node2:9333,dc2node1:9333"  -defaultReplication="110" &

[1] 4490

[[email protected] ~]# I0314 14:14:50 04490 file_util.go:20] Folder /data/dc2node1 Permission: -rwxr-xr-x

I0314 14:14:50 04490 topology.go:86] Using default configurations.

I0314 14:14:50 04490 master_server.go:59] Volume Size Limit is 30000 MB

I0314 14:14:50 04490 master.go:69] Start Seaweed Master 0.70 beta at 192.168.188.58:9333

I0314 14:14:50 04490 raft_server.go:74] Joining cluster: dc1node1:9333,dc1node2:9333,dc2node1:9333

I0314 14:14:51 04490 raft_server.go:134] Attempting to connect to: http://dc1node1:9333/cluster/join

I0314 14:14:52 04490 raft_server.go:179] Post returned status:  200

2),启动volume

分别在dc1node3、dc1node4、dc2node2、dc2node3上执行

weed volume -dataCenter="m5dc"  -rack="m5rack1"  -ip="192.168.88.215" -ip.bind="192.168.88.215" -max="10" -dir="/data/dc1node3"  -mserver="dc1node1:9333" -port=8081 &

weed volume -dataCenter="m5dc"  -rack="m5rack1"  -ip="192.168.88.216" -ip.bind="192.168.88.216" -max="10" -dir="/data/dc1node4"  -mserver="dc1node1:9333" -port=8081 &

weed volume -dataCenter="shddc"  -rack="shdrack1" -ip="192.168.188.133" -ip.bind="192.168.188.133" -max="10" -dir="/data/dc2node2" -mserver="dc2node1:9333" -port=8081 &

weed volume -dataCenter="shddc"  -rack="shdrack1" -ip="192.168.188.172" -ip.bind="192.168.188.172" -max="10" -dir="/data/dc2node3" -mserver="dc2node1:9333" -port=8081 &

启动日志:

[[email protected] ~] # weed volume -dataCenter="m5dc"  -rack="m5rack1"  -ip="192.168.88.215" -ip.bind="192.168.88.215" -max="10" -dir="/data/dc1node3"  -mserver="dc1node1:9333" -port=8081 &

[1] 21117

[[email protected] ~]# I0314 14:12:12 21117 file_util.go:20] Folder /data/dc1node3 Permission: -rwxr-xr-x

I0314 14:12:12 21117 store.go:225] Store started on dir: /data/dc1node3 with 0 volumes max 10

I0314 14:12:12 21117 volume.go:136] Start Seaweed volume server 0.70 beta at 192.168.88.215:8081

I0314 14:12:12 21117 volume_server.go:70] Volume server bootstraps with master dc1node1:9333

[[email protected] ~] # weed volume -dataCenter="m5dc"  -rack="m5rack1"  -ip="192.168.88.216" -ip.bind="192.168.88.216" -max="10" -dir="/data/dc1node4"  -mserver="dc1node1:9333" -port=8081 &

[1] 6284

[[email protected] ~]# I0314 14:19:50 06284 file_util.go:20] Folder /data/dc1node4 Permission: -rwxr-xr-x

I0314 14:19:50 06284 store.go:225] Store started on dir: /data/dc1node4 with 0 volumes max 10

I0314 14:19:50 06284 volume.go:136] Start Seaweed volume server 0.70 beta at 192.168.88.216:8081

I0314 14:19:50 06284 volume_server.go:70] Volume server bootstraps with master dc1node1:9333

[[email protected]] #  weed volume -dataCenter="shddc"  -rack="shdrack1" -ip="192.168.188.133" -ip.bind="192.168.188.133" -max="10" -dir="/data/dc2node2" -mserver="dc2node1:9333" -port=8081 &

[1] 15590

[[email protected] ~]# I0314 14:20:05 15590 file_util.go:20] Folder /data/dc2node2 Permission: -rwxr-xr-x

I0314 14:20:05 15590 store.go:225] Store started on dir: /data/dc2node2 with 0 volumes max 10

I0314 14:20:05 15590 volume.go:136] Start Seaweed volume server 0.70 beta at 192.168.188.133:8081

I0314 14:20:05 15590 volume_server.go:70] Volume server bootstraps with master dc2node1:9333

[[email protected] ~] # weed volume -dataCenter="shddc"  -rack="shdrack1" -ip="192.168.188.172" -ip.bind="192.168.188.172" -max="10" -dir="/data/dc2node3" -mserver="dc2node1:9333" -port=8081 &

[1] 33466

[[email protected] ~]# I0314 14:20:26 33466 file_util.go:20] Folder /data/dc2node3 Permission: -rwxr-xr-x

I0314 14:20:26 33466 store.go:225] Store started on dir: /data/dc2node3 with 0 volumes max 10

I0314 14:20:26 33466 volume.go:136] Start Seaweed volume server 0.70 beta at 192.168.188.172:8081

I0314 14:20:26 33466 volume_server.go:70] Volume server bootstraps with master dc2node1:9333

[[email protected] ~]#

I0314 14:19:29 07186 node.go:208] topo adds child m5dc

I0314 14:19:29 07186 node.go:208] topo:m5dc adds child m5rack1

I0314 14:19:29 07186 node.go:208] topo:m5dc:m5rack1 adds child 192.168.88.215:8081

I0314 14:19:50 07186 node.go:208] topo:m5dc:m5rack1 adds child 192.168.88.216:8081

I0314 14:20:06 07186 node.go:208] topo adds child shddc

I0314 14:20:06 07186 node.go:208] topo:shddc adds child shdrack1

I0314 14:20:06 07186 node.go:208] topo:shddc:shdrack1 adds child 192.168.188.133:8081

I0314 14:20:27 07186 node.go:208] topo:shddc:shdrack1 adds child 192.168.188.172:8081

使用介绍:

weed help volume

Usage: weed volume -port=8080 -dir=/tmp -max=5 -ip=server_name -mserver=localhost:9333

start a volume server to provide storage spaces

Default Parameters:

-dataCenter="": current volume server‘s data center name

-dir="/tmp": directories to store data files. dir[,dir]...

-idleTimeout=10: connection idle seconds

-images.fix.orientation=true: Adjust jpg orientation when uploading.

-index="memory": Choose [memory|leveldb|boltdb] mode for memory~performance balance.

-ip="": ip or server name

-ip.bind="0.0.0.0": ip address to bind to

-max="7": maximum numbers of volumes, count[,count]...

-maxCpu=0: maximum number of CPUs. 0 means all available CPUs

-mserver="localhost:9333": master server location

-port=8080: http listen port

-port.public=0: port opened to public

-publicUrl="": Publicly accessible address

-pulseSeconds=5: number of seconds between heartbeats, must be smaller than or equal to the master‘s setting

-rack="": current volume server‘s rack name

-whiteList="": comma separated Ip addresses having write permission. No limit if empty.

3,安装后结构UI

http://node1:93333

三,基本操作:存储、获取和删除文件

1,http rest api接口

1),存储文件

[[email protected] ~]# curl -F [email protected] http://dc1node1:9333/submit

I0314 15:14:05 33466 store.go:192] In dir /data/dc2node3 adds volume:1 collection: replicaPlacement:110 ttl:

I0314 15:14:05 33466 volume.go:110] loading index file /data/dc2node3/1.idx readonly false

I0314 15:14:05 33466 store.go:192] In dir /data/dc2node3 adds volume:3 collection: replicaPlacement:110 ttl:

I0314 15:14:05 33466 volume.go:110] loading index file /data/dc2node3/3.idx readonly false

{"fid":"3,01255df9c4","fileName":"helloseaweedfs","fileUrl":"192.168.88.213:8081/3,01255df9c4","size":17}

我们看到master给我们返回了一行json数据,其中:

fid是一个逗号分隔的字符串,按照repository中文档的说明,这个字符串应该由volume id, key uint64和cookie code构成。其中逗号前面的1就是volume id, 01488c536a则是key和cookie组成的串。fid是文件sysinfo.sh在集群中的唯一ID。后续查看、获取以及删除该文件数据都需要使 用这个fid。

这里看到文件保存在dc1node1v这个volume节点上,文件路径 http://192.168.88.213:8081/3,01255df9c4 ,副本策略110(不同rack一次,不同datacenter一次),数据保留在volume id 3上。

可以根据下面的日志发现数据存储在m5rack1的dc1node1v节点上、m5rack2的dc1node4节点上、shdrack1的dc2node3节点上。

存储文件时leader master上的日志:

I0314 15:14:06 07186 volume_growth.go:204] Created Volume 1 on topo:shddc:shdrack2:192.168.188.58:8081

I0314 15:14:06 07186 volume_growth.go:204] Created Volume 1 on topo:shddc:shdrack1:192.168.188.172:8081

I0314 15:14:06 07186 volume_growth.go:204] Created Volume 1 on topo:m5dc:m5rack2:192.168.88.214:8081

I0314 15:14:06 07186 volume_growth.go:204] Created Volume 2 on topo:m5dc:m5rack2:192.168.88.213:8081

I0314 15:14:06 07186 volume_growth.go:204] Created Volume 2 on topo:m5dc:m5rack1:192.168.88.215:8081

I0314 15:14:06 07186 volume_growth.go:204] Created Volume 2 on topo:shddc:shdrack1:192.168.188.133:8081

I0314 15:14:06 07186 volume_growth.go:204] Created Volume 3 on topo:m5dc:m5rack2:192.168.88.213:8081

I0314 15:14:06 07186 volume_growth.go:204] Created Volume 3 on topo:m5dc:m5rack1:192.168.88.216:8081

I0314 15:14:06 07186 volume_growth.go:204] Created Volume 3 on topo:shddc:shdrack1:192.168.188.172:8081

2),获取文件

上面提交了一个文件,这里查看,由上知道文件被放在3个节点中,故这三个节点中。

[[email protected] ~]# curl http://dc1node1:8081/3,01255df9c4

hello seaweedfs!

[[email protected] ~]# curl http://dc1node4:8081/3,01255df9c4

hello seaweedfs!

[[email protected] ~]# curl http://dc2node3:8081/3,01255df9c4

hello seaweedfs!

在没有副本的节点上查看文件会重定向到正确的fileUrl

[[email protected] ~]# curl http://dc2node1:8081/3,01255df9c4

<a href="http://192.168.88.213:8081/3,01255df9c4">Moved Permanently</a>.

另外访问leader master监控端口,会以轮询的方式重定向到所有副本的fileUrl

[[email protected] ~]# curl http://dc1node1:9333/3,01255df9c4

<a href="http://192.168.188.172:8081/3,01255df9c4">Moved Permanently</a>.

[[email protected] ~] # curl http://dc1node1:9333/3,01255df9c4

<a href="http://192.168.88.213:8081/3,01255df9c4">Moved Permanently</a>.

[[email protected] ~] # curl http://dc1node1:9333/3,01255df9c4

<a href="http://192.168.88.216:8081/3,01255df9c4">Moved Permanently</a>.

3),删除文件

[[email protected] ~]# curl -X DELETE  http://dc1node1:8081/3,01255df9c4

{"size":17}

删除后就查不到文件了

[[email protected] ~] # curl http://dc1node1:8081/3,01255df9c4

[[email protected] ~] # curl http://dc1node4:8081/3,01255df9c4

[[email protected] ~] # curl http://dc2node3:8081/3,01255df9c4

I0314 16:01:22 33466 volume_server_handlers_read.go:53] read error: File Entry Not Found. Needle 67 Memory 0 /3,01255df9c4(报错待查)

但是访问leader master后重定向链接还在

[[email protected] ~]# curl http://dc1node1:9333/3,01255df9c4

<a href="http://192.168.188.172:8081/3,01255df9c4">Moved Permanently</a>.

[[email protected] ~] # curl http://dc1node1:9333/3,01255df9c4

<a href="http://192.168.88.213:8081/3,01255df9c4">Moved Permanently</a>.

[[email protected] ~] # curl http://dc1node1:9333/3,01255df9c4

<a href="http://192.168.88.216:8081/3,01255df9c4">Moved Permanently</a>.

4),卷收缩大小

删除后收缩后卷大小才会真正的变小

[[email protected] ~] # curl "http://dc1node1:9333/vol/vacuum"

I0314 16:07:42 33466 volume.go:110] loading index file /data/dc2node3/3.idx readonly false

{"Topology":{"DataCenters":[{"Free":29,"Id":"m5dc","Max":34,"Racks":[{"DataNodes":[{"Free":9,"Max":10,"PublicUrl":"192.168.88.215:8081","Url":"192.168.88.215:8081","Volumes":1},{"Free":9,"Max":10,"PublicUrl":"192.168.88.216:8081","Url":"192.168.88.216:8081","Volumes":1}],"Free":18,"Id":"m5rack1","Max":20},{"DataNodes":[{"Free":5,"Max":7,"PublicUrl":"192.168.88.213:8081","Url":"192.168.88.213:8081","Volumes":2},{"Free":6,"Max":7,"PublicUrl":"192.168.88.214:8081","Url":"192.168.88.214:8081","Volumes":1}],"Free":11,"Id":"m5rack2","Max":14}]},{"Free":23,"Id":"shddc","Max":27,"Racks":[{"DataNodes":[{"Free":9,"Max":10,"PublicUrl":"192.168.188.133:8081","Url":"192.168.188.133:8081","Volumes":1},{"Free":8,"Max":10,"PublicUrl":"192.168.188.172:8081","Url":"192.168.188.172:8081","Volumes":2}],"Free":17,"Id":"shdrack1","Max":20},{"DataNodes":[{"Free":6,"Max":7,"PublicUrl":"192.168.188.58:8081","Url":"192.168.188.58:8081","Volumes":1}],"Free":6,"Id":"shdrack2","Max":7}]}],"Free":52,"Max":61,"layouts":[{"collection":"benchmark","replication":"110","ttl":"","writables":null},{"collection":"","replication":"110","ttl":"","writables":[1,2,3]}]},"Version":"0.70 beta"}

收缩前

[[email protected] dc1node1v]# ls -lh

total 12K

-rw-r--r-- 1 root root   8 Mar 14 15:14 2.dat

-rw-r--r-- 1 root root   0 Mar 14 15:14 2.idx

-rw-r--r-- 1 root root 120 Mar 14 15:59 3.dat

-rw-r--r-- 1 root root  32 Mar 14 15:59 3.idx

收缩后

[[email protected] dc1node1v]# ls -lh

total 8.0K

-rw-r--r-- 1 root root 8 Mar 14 15:14 2.dat

-rw-r--r-- 1 root root 0 Mar 14 15:14 2.idx

-rw-r--r-- 1 root root 8 Mar 14 16:07 3.dat

-rw-r--r-- 1 root root 0 Mar 14 16:07 3.idx

2,目录访问

1),部署filer服务(多filer服务需要redis服务支持)

[[email protected] ~] # weed filer -defaultReplicaPlacement="110" -dir="/data/dc1node1filer/" -redis.server="192.168.88.213:6379" -master="dc1node1:9333" -port=8888

I0315 11:53:30 39690 file_util.go:20] Folder /data/dc1node1filer/ Permission: -rwxr-xr-x

I0315 11:53:30 39690 filer.go:88] Start Seaweed Filer 0.70 beta at port 8888

[[email protected] ~] weed filer -defaultReplicaPlacement="110" -dir="/data/dc1node2filer/" -redis.server="192.168.88.213:6379" -master="dc1node1:9333" -port=8888

I0315 11:53:11 48413 file_util.go:20] Folder /data/dc1node2filer/ Permission: -rwxr-xr-x

I0315 11:53:11 48413 filer.go:88] Start Seaweed Filer 0.70 beta at port 8888

2),上传图片到指定目录

[[email protected] ~] curl -F "[email protected]" "http://dc1node1:8888/test/"

{"name":"car.jpg","size":13853}

3),浏览器访问

访问2个filer server的url都能获取正确的图片

http://dc1node1:8888/test/car.jpg

http://dc1node2:8888/test/car.jpg

4),删除文件

[[email protected] ~] # curl -X DELETE http://dc1node1:8888/test/car.jpg

{"error":"Invalid fileId "}

提示error,但实际上文件已经被删除了!这块可能是个小bug。另外filer服务器虽然是集群,但是redis还是单点,要是想全部集群环境还得部署redis集群。

现在 访问下面2个url链接都是空了:

http://dc1node1:8888/test/car.jpg

http://dc1node2:8888/test/car.jpg

3,mount

只能是linux客户端,需要filer支持,FUSE

1),安装fuse

yum -y install fuse

2),启动服务时指定filer为true,这里只是测试单独用一个小架构

weed server -filer=true 会自动启动9333、8888、

在dc2node2节点上启动weed server

[[email protected] ~]# weed server -filer=true

I0315 15:35:34 28793 file_util.go:20] Folder /tmp Permission: -rwxrwxrwx

I0315 15:35:34 28793 file_util.go:20] Folder /tmp/filer Permission: -rwx------

I0315 15:35:34 28793 file_util.go:20] Folder /tmp Permission: -rwxrwxrwx

I0315 15:35:34 28793 topology.go:86] Using default configurations.

I0315 15:35:34 28793 master_server.go:59] Volume Size Limit is 30000 MB

I0315 15:35:34 28793 server.go:203] Start Seaweed Master 0.70 beta at localhost:9333

I0315 15:35:34 28793 server.go:176] Start Seaweed Filer 0.70 beta at port 8888

I0315 15:35:34 28793 raft_server.go:103] Old conf,log,snapshot should have been removed.

I0315 15:35:34 28793 store.go:225] Store started on dir: /tmp with 0 volumes max 7

I0315 15:35:34 28793 server.go:257] Start Seaweed volume server 0.70 beta at localhost:8080

I0315 15:35:34 28793 volume_server.go:70] Volume server bootstraps with master localhost:9333

I0315 15:36:04 28793 master_server.go:89] [ localhost:9333 ] localhost:9333 becomes leader.

I0315 15:36:04 28793 node.go:208] topo adds child DefaultDataCenter

I0315 15:36:04 28793 node.go:208] topo:DefaultDataCenter adds child DefaultRack

I0315 15:36:04 28793 node.go:208] topo:DefaultDataCenter:DefaultRack adds child localhost:8080

I0315 15:36:04 28793 volume_server.go:82] Volume Server Connected with master at localhost:9333

3),挂载使用

在dc2node3节点上weed mount

[[email protected] ~] #  weed mount -filer="dc2node2:8888" -dir="/data/seaweedclient/"  -debug=true

This is SeaweedFS version 0.70 beta linux amd64

[[email protected] ~] # ll /data

d????????? ? ?             ?                  ?            ? seaweedclient

测试目前weed mount还不能使用,作者说是半成品。

详细见这个

4),用法备注

weed help mount

Usage: weed mount -filer=localhost:8888 -dir=/some/dir

mount weed filer to userspace.

Pre-requisites:

1) have SeaweedFS master and volume servers running

2) have a "weed filer" running

These 2 requirements can be achieved with one command "weed server -filer=true"

This uses bazil.org/fuse, whichenables writing FUSE file systems on

Linux, and OS X.

On OS X, it requires OSXFUSE (http://osxfuse.github.com/).

Default Parameters:

-debug=false: verbose debug information

-dir=".": mount weed filer to this directory

-filer="localhost:8888": weed filer location

4,各种语言客户端

https://github.com/chrislusf/seaweedfs/wiki/Client-Libraries

四,文件一致性

1,扩展节点

m5dc扩展1个rack为m5rack2,这个rack包含dc1node1v和dc1node2v两个节点

weed volume -dataCenter="m5dc"  -rack="m5rack2"  -ip="192.168.88.213" -ip.bind="192.168.88.213"  -dir="/data/dc1node1v"  -mserver="dc1node1:9333" -port=8081 &

weed volume -dataCenter="m5dc"  -rack="m5rack2"  -ip="192.168.88.214" -ip.bind="192.168.88.214"  -dir="/data/dc1node2v"  -mserver="dc1node1:9333" -port=8081 &

shddc扩容1个rack为shdrack2,这个rack包含dc2node1v节点

weed volume -dataCenter="shddc"  -rack="shdrack2" -ip="192.168.188.58" -ip.bind="192.168.188.58"  -dir="/data/dc2node1v" -mserver="dc2node1:9333" -port=8081 &

扩容后topo日志

[[email protected] ~]#

I0314 15:09:34 07186 node.go:208] topo:m5dc adds child m5rack2

I0314 15:09:34 07186 node.go:208] topo:m5dc:m5rack2 adds child 192.168.88.213:8081

I0314 15:10:08 07186 node.go:208] topo:m5dc:m5rack2 adds child 192.168.88.214:8081

I0314 15:11:13 07186 node.go:208] topo:shddc adds child shdrack2

I0314 15:11:13 07186 node.go:208] topo:shddc:shdrack2 adds child 192.168.188.58:8081

2,缩减节点

缩减volume节点前要注意数据备份和,简单办法就是复杂在保存在此卷上的数据到相应其他卷上,这个是根据副本策略来弄的。

缩减master节点,topo架构图会自动改变,会自动选择leader master,例如kill掉 dc1node1上地master服务后,dc2node1变成了leader master。

五,压力测试:

1,ab压力测试

并发100,请求100万次

ab -k -c 100 -n 1000000 http://dc1node1:9333/dir/assign

This is ApacheBench, Version 2.3 <$Revision: 655654 $>

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking dc1node1 (be patient)

Completed 100000 requests

Completed 200000 requests

Completed 300000 requests

Completed 400000 requests

Completed 500000 requests

Completed 600000 requests

Completed 700000 requests

Completed 800000 requests

Completed 900000 requests

Completed 1000000 requests

Finished 1000000 requests

Server Software:

Server Hostname:        dc1node1

Server Port:            9333

Document Path:          /dir/assign

Document Length:        94 bytes

Concurrency Level:      100

Time taken for tests:   9.253 seconds

Complete requests:      1000000

Failed requests:        0

Write errors:           0

Keep-Alive requests:    1000000

Total transferred:      226000226 bytes

HTML transferred:       94000094 bytes

Requests per second:    108078.33 [#/sec] (mean)

Time per request:       0.925 [ms] (mean)

Time per request:       0.009 [ms] (mean, across all concurrent requests)

Transfer rate:          23853.25 [Kbytes/sec] received

Connection Times (ms)

min  mean[+/-sd] median   max

Connect:        0    0   0.0      0       2

Processing:     0    1   0.8      1      41

Waiting:        0    1   0.8      1      41

Total:          0    1   0.8      1      41

Percentage of the requests served within a certain time (ms)

50%      1

66%      1

75%      1

80%      1

90%      2

95%      2

98%      3

99%      3

100%     41 (longest request)

2, Benchmark

1),先建5个名为benchmark的集合用于测试

http://dc1node1:9333/vol/grow?collection=benchmark&count=5

或者用CURL发送POST请求

curl -d "collection=benchmark&count=5" "http://192.168.88.213:9333/vol/grow"

2),并发100,先写100万个1KB文件,后随机读取测试

[[email protected] ~]#weed benchmark -c=100 -collection="benchmark" -size=1024 -n=1048576 -server="dc1node1:9333"

This is SeaweedFS version 0.70 beta linux amd64

------------ Writing Benchmark ----------

Completed 24778 of 1048576 requests, 2.4% 24776.5/s 24.9MB/s

Completed 52375 of 1048576 requests, 5.0% 27596.9/s 27.8MB/s

Completed 79137 of 1048576 requests, 7.5% 26762.1/s 26.9MB/s

......

Completed 982295 of 1048576 requests, 93.7% 25366.1/s 25.5MB/s

Completed 1007837 of 1048576 requests, 96.1% 25541.8/s 25.7MB/s

Completed 1032815 of 1048576 requests, 98.5% 24977.9/s 25.1MB/s

Concurrency Level:      100

Time taken for tests:   41.583 seconds

Complete requests:      1048576

Failed requests:        0

Total transferred:      1106787642 bytes

Requests per second:    25216.18 [#/sec]

Transfer rate:          25992.24 [Kbytes/sec]

Connection Times (ms)

min      avg        max      std

Total:        0.8      3.9       322.7      7.4

Percentage of the requests served within a certain time (ms)

50%      2.7 ms

66%      3.8 ms

75%      4.7 ms

80%      5.2 ms

90%      7.0 ms

95%      8.9 ms

98%     11.7 ms

99%     13.7 ms

100%    322.7 ms

------------ Randomly Reading Benchmark ----------

Completed 43852 of 1048576 requests, 4.2% 42917.7/s 43.2MB/s

Completed 120598 of 1048576 requests, 11.5% 78448.1/s 79.0MB/s

Completed 204812 of 1048576 requests, 19.5% 84215.0/s 84.8MB/s

......

Completed 862028 of 1048576 requests, 82.2% 83751.6/s 84.3MB/s

Completed 945524 of 1048576 requests, 90.2% 82230.2/s 82.8MB/s

Completed 1027398 of 1048576 requests, 98.0% 83154.3/s 83.7MB/s

Concurrency Level:      100

Time taken for tests:   13.244 seconds

Complete requests:      1048576

Failed requests:        0

Total transferred:      1106784752 bytes

Requests per second:    79172.39 [#/sec]

Transfer rate:          81608.81 [Kbytes/sec]

Connection Times (ms)

min      avg        max      std

Total:        0.0      1.2       206.7      3.2

Percentage of the requests served within a certain time (ms)

50%      1.0 ms

95%      1.1 ms

98%      1.5 ms

99%      7.1 ms

100%    206.7 ms

并发100,大小100K,1万个文件先写后随机读测试

[[email protected] ~]# weed benchmark -c=100 -collection="benchmark" -size=102400 -n=10000 -server="dc1node1:9333"

This is SeaweedFS version 0.70 beta linux amd64

------------ Writing Benchmark ----------

Completed 977 of 10000 requests, 9.8% 976.9/s 95.4MB/s

Completed 2110 of 10000 requests, 21.1% 1133.0/s 110.7MB/s

Completed 3249 of 10000 requests, 32.5% 1139.0/s 111.3MB/s

Completed 4381 of 10000 requests, 43.8% 1132.0/s 110.6MB/s

Completed 5512 of 10000 requests, 55.1% 1131.0/s 110.5MB/s

Completed 6649 of 10000 requests, 66.5% 1137.0/s 111.1MB/s

Completed 7781 of 10000 requests, 77.8% 1132.0/s 110.6MB/s

Completed 8914 of 10000 requests, 89.1% 1133.0/s 110.7MB/s

Concurrency Level:      100

Time taken for tests:   8.969 seconds

Complete requests:      10000

Failed requests:        0

Total transferred:      1024315888 bytes

Requests per second:    1114.97 [#/sec]

Transfer rate:          111531.63 [Kbytes/sec]

Connection Times (ms)

min      avg        max      std

Total:        5.4      89.2       988.1      59.1

Percentage of the requests served within a certain time (ms)

50%     75.5 ms

66%     86.4 ms

75%     95.2 ms

80%    101.8 ms

90%    124.7 ms

95%    165.0 ms

98%    283.4 ms

99%    346.4 ms

100%    988.1 ms

------------ Randomly Reading Benchmark ----------

Completed 1173 of 10000 requests, 11.7% 1172.9/s 114.6MB/s

Completed 2404 of 10000 requests, 24.0% 1231.0/s 120.3MB/s

Completed 3646 of 10000 requests, 36.5% 1242.0/s 121.3MB/s

Completed 4880 of 10000 requests, 48.8% 1234.0/s 120.5MB/s

Completed 6121 of 10000 requests, 61.2% 1241.0/s 121.2MB/s

Completed 7334 of 10000 requests, 73.3% 1213.0/s 118.5MB/s

Completed 8589 of 10000 requests, 85.9% 1255.0/s 122.6MB/s

Completed 9798 of 10000 requests, 98.0% 1209.0/s 118.1MB/s

Completed 9999 of 10000 requests, 100.0% 201.0/s 19.6MB/s

Completed 9999 of 10000 requests, 100.0% 0.0/s 0.0MB/s

Concurrency Level:      100

Time taken for tests:   10.929 seconds

Complete requests:      10000

Failed requests:        0

Total transferred:      1024312373 bytes

Requests per second:    914.98 [#/sec]

Transfer rate:          91525.86 [Kbytes/sec]

Connection Times (ms)

min      avg        max      std

Total:        0.3      81.5       4938.9      120.6

Percentage of the requests served within a certain time (ms)

50%     52.1 ms

66%     62.4 ms

75%     70.0 ms

80%     77.2 ms

90%    231.5 ms

95%    285.5 ms

98%    328.1 ms

99%    662.2 ms

100%    4938.9 ms

并发100,大小1M,1万个文件先写后随机读测试

[[email protected] ~]# weed benchmark -c=100 -collection="benchmark" -size=1024000 -n=10000 -server="dc1node1:9333"

# weed benchmark -c=100 -collection="benchmark" -size=1024000 -n=10000 -server="dc1node1:9333"

This is SeaweedFS version 0.70 beta linux amd64

------------ Writing Benchmark ----------

Completed 14 of 10000 requests, 0.1% 13.3/s 13.0MB/s

Completed 68 of 10000 requests, 0.7% 57.1/s 55.7MB/s

Completed 138 of 10000 requests, 1.4% 70.0/s 68.4MB/s

Completed 224 of 10000 requests, 2.2% 86.0/s 84.0MB/s

......

Completed 9683 of 10000 requests, 96.8% 88.0/s 85.9MB/s

Completed 9764 of 10000 requests, 97.6% 81.0/s 79.1MB/s

Completed 9838 of 10000 requests, 98.4% 74.0/s 72.3MB/s

Completed 9925 of 10000 requests, 99.2% 87.0/s 85.0MB/s

Concurrency Level:      100

Time taken for tests:   123.407 seconds

Complete requests:      9999

Failed requests:        1

Total transferred:      10239290379 bytes

Requests per second:    81.02 [#/sec]

Transfer rate:          81027.21 [Kbytes/sec]

Connection Times (ms)

min      avg        max      std

Total:        43.1      1231.1       5021.1      560.4

Percentage of the requests served within a certain time (ms)

50%    1133.7 ms

66%    1336.6 ms

75%    1498.0 ms

80%    1605.5 ms

90%    1936.5 ms

95%    2332.0 ms

98%    2717.0 ms

99%    3042.2 ms

100%    5021.1 ms

------------ Randomly Reading Benchmark ----------

Completed 97 of 10000 requests, 1.0% 97.0/s 94.7MB/s

Completed 263 of 10000 requests, 2.6% 166.0/s 162.1MB/s

Completed 422 of 10000 requests, 4.2% 159.0/s 155.3MB/s

......

Completed 9647 of 10000 requests, 96.5% 138.0/s 134.8MB/s

Completed 9784 of 10000 requests, 97.8% 137.0/s 133.8MB/s

Completed 9934 of 10000 requests, 99.3% 150.0/s 146.5MB/s

Concurrency Level:      100

Time taken for tests:   69.699 seconds

Complete requests:      10000

Failed requests:        0

Total transferred:      10240314363 bytes

Requests per second:    143.47 [#/sec]

Transfer rate:          143477.86 [Kbytes/sec]

Connection Times (ms)

min      avg        max      std

Total:        1.4      690.4       7590.4      566.1

Percentage of the requests served within a certain time (ms)

50%    612.8 ms

66%    788.6 ms

75%    898.6 ms

80%    1018.5 ms

90%    1329.5 ms

95%    1646.9 ms

98%    2190.4 ms

99%    2601.4 ms

100%    7590.4 ms

非集群里客户端测试结果:

#weed  benchmark -c=100 -n=100000 -size=102400 -server="192.168.188.58:9333"

This is SeaweedFS version 0.70 beta linux amd64

------------ Writing Benchmark ----------

Completed 1087 of 100000 requests, 1.1% 1085.6/s 106.1MB/s

Completed 2230 of 100000 requests, 2.2% 1143.0/s 111.7MB/s

Completed 3380 of 100000 requests, 3.4% 1150.0/s 112.3MB/s

Completed 4523 of 100000 requests, 4.5% 1143.0/s 111.7MB/s

Completed 5678 of 100000 requests, 5.7% 1155.0/s 112.8MB/s

Completed 6818 of 100000 requests, 6.8% 1140.0/s 111.4MB/s

Completed 7953 of 100000 requests, 8.0% 1135.0/s 110.9MB/s

Completed 9111 of 100000 requests, 9.1% 1157.9/s 113.1MB/s

Completed 10262 of 100000 requests, 10.3% 1150.1/s 112.3MB/s

Completed 11405 of 100000 requests, 11.4% 1144.0/s 111.8MB/s

Completed 12557 of 100000 requests, 12.6% 1152.0/s 112.5MB/s

Completed 13703 of 100000 requests, 13.7% 1146.0/s 111.9MB/s

Completed 14846 of 100000 requests, 14.8% 1137.6/s 111.1MB/s

Completed 15998 of 100000 requests, 16.0% 1157.4/s 113.1MB/s

Completed 17146 of 100000 requests, 17.1% 1148.0/s 112.1MB/s

Completed 18283 of 100000 requests, 18.3% 1137.0/s 111.1MB/s

Completed 19437 of 100000 requests, 19.4% 1154.0/s 112.7MB/s

Completed 20580 of 100000 requests, 20.6% 1143.0/s 111.7MB/s

Completed 21728 of 100000 requests, 21.7% 1147.8/s 112.1MB/s

Completed 22875 of 100000 requests, 22.9% 1147.2/s 112.1MB/s

Completed 23968 of 100000 requests, 24.0% 1093.0/s 106.8MB/s

Completed 24909 of 100000 requests, 24.9% 940.1/s 91.8MB/s

Completed 26051 of 100000 requests, 26.1% 1143.1/s 111.7MB/s

Completed 27213 of 100000 requests, 27.2% 1162.0/s 113.5MB/s

Completed 28339 of 100000 requests, 28.3% 1126.0/s 110.0MB/s

Completed 28920 of 100000 requests, 28.9% 581.0/s 56.8MB/s

Completed 29662 of 100000 requests, 29.7% 742.0/s 72.5MB/s

Completed 30386 of 100000 requests, 30.4% 724.0/s 70.7MB/s

Completed 31195 of 100000 requests, 31.2% 809.0/s 79.0MB/s

Completed 31651 of 100000 requests, 31.7% 456.0/s 44.5MB/s

Completed 32792 of 100000 requests, 32.8% 1141.0/s 111.5MB/s

Completed 33857 of 100000 requests, 33.9% 1065.0/s 104.0MB/s

Completed 34807 of 100000 requests, 34.8% 950.0/s 92.8MB/s

Completed 35429 of 100000 requests, 35.4% 622.0/s 60.8MB/s

Completed 36585 of 100000 requests, 36.6% 1156.0/s 112.9MB/s

Completed 37164 of 100000 requests, 37.2% 579.0/s 56.6MB/s

Completed 37992 of 100000 requests, 38.0% 828.0/s 80.9MB/s

Completed 39086 of 100000 requests, 39.1% 1094.0/s 106.9MB/s

Completed 40126 of 100000 requests, 40.1% 1038.5/s 101.4MB/s

Completed 41256 of 100000 requests, 41.3% 1131.6/s 110.5MB/s

Completed 42381 of 100000 requests, 42.4% 1125.0/s 109.9MB/s

Completed 43533 of 100000 requests, 43.5% 1152.0/s 112.5MB/s

Completed 44616 of 100000 requests, 44.6% 1083.0/s 105.8MB/s

Completed 45769 of 100000 requests, 45.8% 1153.0/s 112.6MB/s

Completed 46916 of 100000 requests, 46.9% 1147.0/s 112.0MB/s

Completed 48066 of 100000 requests, 48.1% 1144.9/s 111.8MB/s

Completed 48904 of 100000 requests, 48.9% 840.0/s 82.1MB/s

Completed 49566 of 100000 requests, 49.6% 663.3/s 64.8MB/s

Completed 50711 of 100000 requests, 50.7% 1142.5/s 111.6MB/s

Completed 51801 of 100000 requests, 51.8% 1091.8/s 106.7MB/s

Completed 52774 of 100000 requests, 52.8% 973.5/s 95.1MB/s

Completed 53915 of 100000 requests, 53.9% 1141.0/s 111.5MB/s

Completed 55057 of 100000 requests, 55.1% 1142.0/s 111.6MB/s

Completed 56199 of 100000 requests, 56.2% 1142.0/s 111.6MB/s

Completed 57353 of 100000 requests, 57.4% 1154.0/s 112.7MB/s

Completed 58279 of 100000 requests, 58.3% 925.4/s 90.4MB/s

Completed 59426 of 100000 requests, 59.4% 1147.7/s 112.1MB/s

Completed 60488 of 100000 requests, 60.5% 1062.0/s 103.7MB/s

Completed 61629 of 100000 requests, 61.6% 1141.0/s 111.5MB/s

Completed 62786 of 100000 requests, 62.8% 1157.0/s 113.0MB/s

Completed 63924 of 100000 requests, 63.9% 1138.0/s 111.2MB/s

Completed 65074 of 100000 requests, 65.1% 1150.0/s 112.3MB/s

Completed 66181 of 100000 requests, 66.2% 1107.0/s 108.1MB/s

Completed 67013 of 100000 requests, 67.0% 832.0/s 81.3MB/s

Completed 68065 of 100000 requests, 68.1% 1052.0/s 102.8MB/s

Completed 68966 of 100000 requests, 69.0% 901.0/s 88.0MB/s

Completed 70025 of 100000 requests, 70.0% 1056.8/s 103.2MB/s

Completed 70462 of 100000 requests, 70.5% 437.9/s 42.8MB/s

Completed 71520 of 100000 requests, 71.5% 1058.0/s 103.4MB/s

Completed 72341 of 100000 requests, 72.3% 821.0/s 80.2MB/s

Completed 73535 of 100000 requests, 73.5% 1193.5/s 116.6MB/s

Completed 74681 of 100000 requests, 74.7% 1146.5/s 112.0MB/s

Completed 75800 of 100000 requests, 75.8% 1119.0/s 109.3MB/s

Completed 76971 of 100000 requests, 77.0% 1171.0/s 114.4MB/s

Completed 78083 of 100000 requests, 78.1% 1112.0/s 108.6MB/s

Completed 79221 of 100000 requests, 79.2% 1138.0/s 111.2MB/s

Completed 80367 of 100000 requests, 80.4% 1146.0/s 111.9MB/s

Completed 81513 of 100000 requests, 81.5% 1144.7/s 111.8MB/s

Completed 82660 of 100000 requests, 82.7% 1148.3/s 112.2MB/s

Completed 83811 of 100000 requests, 83.8% 1151.0/s 112.4MB/s

Completed 84963 of 100000 requests, 85.0% 1152.0/s 112.5MB/s

Completed 86107 of 100000 requests, 86.1% 1144.0/s 111.8MB/s

Completed 87267 of 100000 requests, 87.3% 1156.0/s 112.9MB/s

Completed 88407 of 100000 requests, 88.4% 1144.0/s 111.8MB/s

Completed 89542 of 100000 requests, 89.5% 1135.0/s 110.9MB/s

Completed 90696 of 100000 requests, 90.7% 1154.0/s 112.7MB/s

Completed 91747 of 100000 requests, 91.7% 1051.0/s 102.7MB/s

Completed 92870 of 100000 requests, 92.9% 1122.9/s 109.7MB/s

Completed 94005 of 100000 requests, 94.0% 1135.1/s 110.9MB/s

Completed 95121 of 100000 requests, 95.1% 1116.0/s 109.0MB/s

Completed 96237 of 100000 requests, 96.2% 1116.0/s 109.0MB/s

Completed 97359 of 100000 requests, 97.4% 1122.0/s 109.6MB/s

Completed 98521 of 100000 requests, 98.5% 1162.0/s 113.5MB/s

Completed 99662 of 100000 requests, 99.7% 1140.9/s 111.5MB/s

Concurrency Level:      100

Time taken for tests:   94.407 seconds

Complete requests:      100000

Failed requests:        0

Total transferred:      10243144846 bytes

Requests per second:    1059.24 [#/sec]

Transfer rate:          105956.66 [Kbytes/sec]

Connection Times (ms)

min      avg        max      std

Total:        3.9      94.2       1142.2      75.1

Percentage of the requests served within a certain time (ms)

50%     75.0 ms

66%     87.6 ms

75%     97.1 ms

80%    105.5 ms

90%    145.0 ms

95%    224.9 ms

98%    345.6 ms

99%    450.7 ms

100%    1142.2 ms

------------ Randomly Reading Benchmark ----------

Completed 1034 of 100000 requests, 1.0% 1031.9/s 100.8MB/s

Completed 2155 of 100000 requests, 2.2% 1118.6/s 109.3MB/s

Completed 3300 of 100000 requests, 3.3% 1147.5/s 112.1MB/s

Completed 4434 of 100000 requests, 4.4% 1134.0/s 110.8MB/s

Completed 5571 of 100000 requests, 5.6% 1137.0/s 111.1MB/s

Completed 6705 of 100000 requests, 6.7% 1128.1/s 110.2MB/s

Completed 7833 of 100000 requests, 7.8% 1133.9/s 110.8MB/s

Completed 8952 of 100000 requests, 9.0% 1118.1/s 109.2MB/s

Completed 10052 of 100000 requests, 10.1% 1097.3/s 107.2MB/s

Completed 11180 of 100000 requests, 11.2% 1132.8/s 110.7MB/s

Completed 12318 of 100000 requests, 12.3% 1136.8/s 111.1MB/s

Completed 13419 of 100000 requests, 13.4% 1092.1/s 106.7MB/s

Completed 14527 of 100000 requests, 14.5% 1117.1/s 109.1MB/s

Completed 15659 of 100000 requests, 15.7% 1132.0/s 110.6MB/s

Completed 16763 of 100000 requests, 16.8% 1105.1/s 108.0MB/s

Completed 17909 of 100000 requests, 17.9% 1144.9/s 111.8MB/s

Completed 19031 of 100000 requests, 19.0% 1122.0/s 109.6MB/s

Completed 20179 of 100000 requests, 20.2% 1139.8/s 111.3MB/s

Completed 21290 of 100000 requests, 21.3% 1118.7/s 109.3MB/s

Completed 22438 of 100000 requests, 22.4% 1149.5/s 112.3MB/s

Completed 23558 of 100000 requests, 23.6% 1114.2/s 108.8MB/s

Completed 24665 of 100000 requests, 24.7% 1111.5/s 108.6MB/s

Completed 25789 of 100000 requests, 25.8% 1125.3/s 109.9MB/s

Completed 26888 of 100000 requests, 26.9% 1099.0/s 107.4MB/s

Completed 28015 of 100000 requests, 28.0% 1122.8/s 109.7MB/s

Completed 29122 of 100000 requests, 29.1% 1102.1/s 107.7MB/s

Completed 30256 of 100000 requests, 30.3% 1142.3/s 111.6MB/s

Completed 31383 of 100000 requests, 31.4% 1126.8/s 110.1MB/s

Completed 32504 of 100000 requests, 32.5% 1122.3/s 109.6MB/s

Completed 33628 of 100000 requests, 33.6% 1122.9/s 109.7MB/s

Failed to read http://192.168.88.215:8081/30,b738c9ca2a error:Get http://192.168.88.215:8081/30,b738c9ca2a: read tcp 192.168.88.215:8081: connection reset by peer

Completed 34733 of 100000 requests, 34.7% 1106.1/s 108.1MB/s

Completed 35884 of 100000 requests, 35.9% 1142.7/s 111.6MB/s

Completed 37001 of 100000 requests, 37.0% 1125.1/s 109.9MB/s

Completed 38120 of 100000 requests, 38.1% 1119.0/s 109.3MB/s

Completed 39239 of 100000 requests, 39.2% 1117.7/s 109.2MB/s

Completed 40362 of 100000 requests, 40.4% 1123.2/s 109.7MB/s

Completed 41489 of 100000 requests, 41.5% 1128.1/s 110.2MB/s

Completed 42620 of 100000 requests, 42.6% 1129.9/s 110.4MB/s

Completed 43732 of 100000 requests, 43.7% 1112.0/s 108.6MB/s

Completed 44865 of 100000 requests, 44.9% 1133.0/s 110.7MB/s

Completed 45975 of 100000 requests, 46.0% 1108.7/s 108.3MB/s

Completed 47109 of 100000 requests, 47.1% 1132.9/s 110.7MB/s

Completed 48231 of 100000 requests, 48.2% 1124.3/s 109.8MB/s

Completed 49382 of 100000 requests, 49.4% 1151.2/s 112.5MB/s

Completed 50506 of 100000 requests, 50.5% 1125.0/s 109.9MB/s

Completed 51634 of 100000 requests, 51.6% 1128.1/s 110.2MB/s

Completed 52760 of 100000 requests, 52.8% 1124.8/s 109.9MB/s

Completed 53895 of 100000 requests, 53.9% 1134.9/s 110.9MB/s

Completed 55022 of 100000 requests, 55.0% 1128.3/s 110.2MB/s

Completed 56157 of 100000 requests, 56.2% 1133.9/s 110.8MB/s

Completed 57286 of 100000 requests, 57.3% 1129.0/s 110.3MB/s

Completed 58427 of 100000 requests, 58.4% 1141.0/s 111.5MB/s

Completed 59532 of 100000 requests, 59.5% 1105.0/s 107.9MB/s

Completed 60602 of 100000 requests, 60.6% 1070.0/s 104.5MB/s

Completed 61701 of 100000 requests, 61.7% 1099.0/s 107.4MB/s

Completed 62764 of 100000 requests, 62.8% 1063.0/s 103.8MB/s

Completed 63885 of 100000 requests, 63.9% 1121.0/s 109.5MB/s

Completed 65019 of 100000 requests, 65.0% 1135.1/s 110.9MB/s

Completed 66135 of 100000 requests, 66.1% 1114.9/s 108.9MB/s

Completed 67260 of 100000 requests, 67.3% 1121.4/s 109.5MB/s

Completed 68410 of 100000 requests, 68.4% 1153.7/s 112.7MB/s

Completed 69539 of 100000 requests, 69.5% 1129.0/s 110.3MB/s

Completed 70668 of 100000 requests, 70.7% 1129.0/s 110.3MB/s

Completed 71803 of 100000 requests, 71.8% 1135.0/s 110.9MB/s

Completed 72928 of 100000 requests, 72.9% 1120.2/s 109.4MB/s

Completed 74052 of 100000 requests, 74.1% 1129.7/s 110.4MB/s

Completed 75180 of 100000 requests, 75.2% 1128.1/s 110.2MB/s

Completed 76317 of 100000 requests, 76.3% 1134.8/s 110.9MB/s

Completed 77445 of 100000 requests, 77.4% 1129.1/s 110.3MB/s

Completed 78589 of 100000 requests, 78.6% 1135.7/s 110.9MB/s

Completed 79703 of 100000 requests, 79.7% 1119.7/s 109.4MB/s

Completed 80849 of 100000 requests, 80.8% 1147.3/s 112.1MB/s

Completed 81976 of 100000 requests, 82.0% 1128.2/s 110.2MB/s

Completed 83112 of 100000 requests, 83.1% 1136.0/s 111.0MB/s

Completed 84237 of 100000 requests, 84.2% 1125.0/s 109.9MB/s

Completed 85385 of 100000 requests, 85.4% 1144.3/s 111.8MB/s

Completed 86509 of 100000 requests, 86.5% 1128.9/s 110.3MB/s

Completed 87627 of 100000 requests, 87.6% 1118.0/s 109.2MB/s

Completed 88766 of 100000 requests, 88.8% 1137.9/s 111.2MB/s

Completed 89883 of 100000 requests, 89.9% 1117.0/s 109.1MB/s

Completed 91019 of 100000 requests, 91.0% 1136.4/s 111.0MB/s

Completed 92172 of 100000 requests, 92.2% 1146.6/s 112.0MB/s

Completed 93298 of 100000 requests, 93.3% 1133.1/s 110.7MB/s

Completed 94434 of 100000 requests, 94.4% 1134.8/s 110.9MB/s

Completed 95548 of 100000 requests, 95.5% 1115.1/s 108.9MB/s

Completed 96681 of 100000 requests, 96.7% 1131.2/s 110.5MB/s

Completed 97819 of 100000 requests, 97.8% 1138.6/s 111.2MB/s

Completed 98942 of 100000 requests, 98.9% 1124.2/s 109.8MB/s

Completed 99988 of 100000 requests, 100.0% 1046.0/s 102.2MB/s

Concurrency Level:      100

Time taken for tests:   89.094 seconds

Complete requests:      99999

Failed requests:        1

Total transferred:      10243038550 bytes

Requests per second:    1122.40 [#/sec]

Transfer rate:          112274.15 [Kbytes/sec]

Connection Times (ms)

min      avg        max      std

Total:        7.3      88.5       6147.5      109.4

Percentage of the requests served within a certain time (ms)

50%     58.2 ms

66%     66.0 ms

75%     72.7 ms

80%     79.8 ms

90%    244.6 ms

95%    291.8 ms

98%    337.2 ms

99%    633.2 ms

100%    6147.5 ms

3),测试后删除测试文件

http://dc1node1:9333/col/delete?collection=benchmark

或者用CURL提交POST请求

curl -d "collection=benchmark" "http://dc1node1:9333/col/delete"

六,其他功能

1,weed upload

Usage: weed upload -server=localhost:9333 file1 [file2 file3]

upload -server=localhost:9333 -dir=one_directory -include=*.pdf

upload one or a list of files, or batch upload one whole folder recursively.

2,weed download

Usage: weed download -server=localhost:9333 -dir=one_directory fid1 [fid2 fid3 ...]

download files by file id.

3,weed backup

Usage: weed backup -dir=. -volumeId=234 -server=localhost:9333

Incrementally backup volume data.

It is expected that you use this inside a script, to loop through

all possible volume ids that needs to be backup to local folder.

The volume id does not need to exist locally or even remotely.

This will help to backup future new volumes.

Usually backing up is just copying the .dat (and .idx) files.

But it‘s tricky to incremententally copy the differences.

The complexity comes when there are multiple addition, deletion and compaction.

This tool will handle them correctly and efficiently, avoiding unnecessary data transporation.

Default Parameters:

-collection="": collection name

-dir=".": directory to store volume data files

-server="localhost:9333": SeaweedFS master location

-volumeId=-1: a volume id. The volume .dat and .idx files should already exist in the dir.

4,weed fix

Usage: weed fix -dir=/tmp -volumeId=234

Fix runs the SeaweedFS fix command to re-create the index .idx file.

Default Parameters:

-collection="": the volume collection name

-dir=".": data directory to store files

-volumeId=-1: a volume id. The volume should already exist in the dir. The volume index file should not exist.

5,weed  compact

Usage: weed compact -dir=/tmp -volumeId=234

Force an compaction to remove deleted files from volume files.

The compacted .dat file is stored as .cpd file.

The compacted .idx file is stored as .cpx file.

6,weed  export

Usage: weed export -dir=/tmp -volumeId=234 -o=/dir/name.tar -fileNameFormat={{.Name}} -newer=‘2006-01-02T15:04:05‘

List all files in a volume, or Export all files in a volume to a tar file if the output is specified.

The format of file name in the tar file can be customized. Default is {{.Mime}}/{{.Id}}:{{.Name}}. Also available is {{.Key}}

七,总结

weed-fs为想寻找开源分布式文件系统的朋友们提供了一个新选择。尤其是在存储大量小图片时,weed-fs自身就是基于haystack这一优化图 片存储的论文的。但weed-fs目前最大 的问题似乎是没有重量级的使用案例,自身也还有不少不足,这里测试的是最新的0.70 beta版本,后续稳定版应该会好一点。

时间: 2024-10-10 15:38:31

Seaweed-FS综合使用测试的相关文章

蓝懿IOS综合小测试

1.在 ViewController 里面显示 7 个 Button,标题是”第n题”,点击按钮后要求跳转到一个新的页面内,然后继续实现如下其它题目内容: 2.界面中添加一个 Text Field.一个 Button.一个 Label.要求在 textField 中输入内容,点击按钮后在Label上显示相同内容: 3.要求在界面中每隔 0.1 秒在随机位置添加一个 Label(背景颜色任意, 尺寸任意), 与此同时每隔 5 秒把屏幕清空一次: 4.利用 for 循环语句,在界面中显示 9 张不图

如何测试Nginx的高性能

简介 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器: 作为一款轻量级的Web服务器,具有占有内存少,并发能力强等优势,是高连接并发场景下Apache的不错的替代品: 本篇主要介绍Nginx作为Web服务器时,相对于Apache的性能优势: 下一篇将会介绍Nginx作为方向代理服务器的实现: 重要特点 非阻塞:数据复制时,磁盘I/O的第一阶段是非阻塞的: 事件驱动:通信机制采用epoll模型,支持更大的并发连

Web Service测试工具SOAPSonar免费下载及使用教程

原文来自龙博方案网http://www.fanganwang.com/product/1403 SOAPSonar是领先的服务测试和诊断解决方案,世界上有超过40,000份部署应用.SOAPSonar为基于HTTP,HTTPs, MQ 和 JMS协议的SOAP, XML, 和REST服务提供简单.直观和综合的测试.SOAPSonar测试框架容易部署,并提供功能.性能.一致性和安全性测试. 自始自终,Crosscheck Networks 都将SOAPSonar设计为综合的测试解决方案,在服务开发

利用jmeter进行压力测试

1.压力测试的简单讲解 2.压力测试的监控 3.压力问题的简单定位 4.jmeter进行压力测试 1.压力测试的简单讲解 1.什么时候进行压力测试. 基于接口的压力测试,在接口功能测试完成之后就可进行接口的压力测试.如果有接口的依赖关系,各个接口都要完成接口的功能测试之后,再行压力测试 基于业务多场景的综合压力测试,要在所有业务功能测试通过之后进行 2.压力测试的合理性 压力测试结果是否有效,还要看压力环境,举个例子: 测试环境和生产环境硬件配置没可比性,那么测试环境的压力测试毫无意义,测试报告

探索式测试实践之缺陷大扫除和结对测试

探索式测试的定义在我的blog都做了较多说明,其中也谈到了探索式测试在项目的实践方式,接下来会详细的说明其中来亮个实践方式的具体实施过程. 探索式测试四象限 探索式测试是一种测试风格和思考方式,它强调的是学习在测试过程中的作用.无论测试人员在做功能测试.性能测试.安全测试或其他类型的测试,都可以使用探索式测试的思维方法,来帮助自己找到初始测试设计未考虑到的危险区域. 探索式测试不只是在脚本测试后才开始,它可以应用于软件测试的各个阶段.作为一种测试风格,探索式测试可以使用适合当前情景的任何测试技术

银行数据类项目测试实施与管理问题探讨

测试是保证系统正确性.可靠性.稳定性的重要手段.如风险类项目.市场分析.数据仓库.反欺诈.反洗钱.业绩考核等数据分析型系统的测试和一般交易系统的应用测试不同,例如曾经碰到一个业绩评价系统的测试不仅包括WEB端应用程序功能测试,同时还包括对数据仓库等源表过渡而来的数据进行可靠性.可用性等数据验证测试.在测试过程中除了必须保证测试的充分性,同时还要关注测试数据的覆盖面以及数据的质量.因此,在对该业绩评价系统的测试是一个综合测试的过程,采用综合应用测试技术,根据数据的定义(接口映射),通过执行和观察,

10大主流压力测试工具推荐

在移动应用和Web服务正式发布之前,除了进行必要的功能测试和安全测试,为了保证互联网产品的服务交付质量,往往还需要做压力/负载/性能测试.然而很多传统企业在试水互联网+的过程中,往往由于资源或产品迭代速度等原因忽视了这一块工作,导致新产品上线之后频繁出现卡顿等严重影响用户体验的问题.那么互联网产品为什么要进行压力/负载/性能测试,又有哪些工具帮我们实现呢,本文将为您细说端详. 压力/负载/性能测试之异同 在产品研发过程中,常常会混淆压力/负载/性能测试这三者之间的区别,这三种测试到底有什么不同呢

nodejs入门API之fs模块

fs模块下的类与FS常量 fs模块下的主要方法 fs的Promise API与FileHandle类 一.fs模块下的类 1.1 fs.Dir:表示目录流的类,由 fs.opendir().fs.opendirSync() 或 fsPromises.opendir() 创建. 1.2 fs.Dirent:目录项的表现形式,通过从fs.Dir中读取返回. 1.3 fs.FSWatcher:继承自 <EventEmitter>,调用 fs.watch() 方法返回该对象.每当指定监视的文件被修改时

十步完成Web应用程序压力测试(转)

Web 应用程序是决定网站性能的关键,对其进行测试是网站测试的核心.压力测试的目的是测试系统在各种负荷(由并发用户所产生的综合处理量)下的性能和稳定性.为了保证Web 应用程序的压力测试能取得理想的测试效果,压力测试也应该遵循软件工程中软件测试的一般规范.整个测试流程应有文档记录,压力测试应得到相应的重视.需求分析 对不同的系统其压力测试的强度和侧重点也不同.一个用于中小企业内部网和一个要处理大量用户的电子商务站点的负荷量和负荷分布是明显不同的.前者的最大负荷量和负荷分布是可预期的,而且对企事业