CentOS_6.6上, FastDFS分布式文件系统搭建和Java测试

来源:互联网 发布:同步带轮生成软件 编辑:程序博客网 时间:2024/06/01 09:41

搭建环境: CentOS6.6_64Bit
所需软件下载链接:http://pan.baidu.com/s/1bp2ZGR1 密码:cm5i

FastDFS介绍
什么是FastDFS? FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
FastDFS架构包括 Tracker server (追踪系统) 和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
Tracker server作用是负载均衡和调度,通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。
Storage server作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统的文件系统来管理文件。可以将storage称为存储服务器。
如下图:
这里写图片描述

Tracker集群:
FastDFS集群中的Tracker Server可以有多台,Tracker Server之间是相互平等关系同时提供服务,Tracker Server不存在单点故障。客户端请求Tracker Server采用轮询方式,如果请求的Tracker无法提供服务则换另一个Tracker。

Storage集群:
Storage集群采用了分组存储方式。Storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage Server之间是平等关系,不同组的Storage Server之间不会相互通信,同组内的Storage Server之间会相互连接进行文件同步,从而保证同组内每个Storage上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由Tracker进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。

Storage状态收集:
Storage Server会连接集群中所有的Tracker Server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。
文件上传流程:
这里写图片描述

客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
这里写图片描述
*~ 组名:文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
~ 虚拟磁盘路径:storage配置的虚拟路径,与磁盘选项store_path*对应。如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
~ 数据两级目录:~ storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
~ 文件名:与文件上传时不同。是由存储服务器根据特定信息生成,文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。*

文件下载流程:
这里写图片描述
Tracker根据请求的文件路径即文件ID 来快速定义文件。比如请求下边的文件:
这里写图片描述
*1. 通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客户端访问。
2. 存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户需要访问的文件。*

FastDFS+Nginx实现文件服务器
架构:
这里写图片描述
架构描述: 出于高可用的需求tracker和storage都使用两台服务器,storage使用两个组用以说明storage可以任意扩充组实现线性扩展。

Client:
client请求tracker进行文件上传、下载、删除。
client可以通过java client API方式进行文件上传、下载、删除。
client可以通过http方式进行文件下载。tracker通过nginx提供http下载接口。
client也可以直接访问storage进行文件上传、下载、删除,但建议client通过tracker进行文件上传、下载、删除。

Tracker Server:
每个tracker server互相平等,tracker server上部署nginx是为了对外提供http文件下载接口,tracker上nginx只是起到负载均衡的作用。tracker的nginx会代理转发至storage上的nginx。
Tracker上的两个nginx可以采用主备方式实现高可用。nginx高可用参数nginx文档。

Storage Server:
每台Storage上也部署nginx,Storage上的nginx与tracker上的nginx有区别,Storage上的nginx需要安装FastDSF-nginx模块,此模块的作用是使用FastDFS和nginx进行整合,nginx对外提供http文件下载接口,注意:nginx只提供文件下载接口不提供上传接口。文件上传仍然通过Java Client API进行。

FastDFS–Tracker安装:
Tracker测试虚拟机的IP地址为: 192.168.148.88. 只测试一台的安装过程,多台可以简单配置实现扩容。
下载: tracker和storage使用相同的安装包,下载地址:http://sourceforge.net/projects/FastDFS/ 或https://github.com/happyfish100/FastDFS(推荐), 前面的百度云链接中, 所有用到的文件都在里面, 可自行下载试验。

依赖安装:
FastDFS安装环境:FastDFS是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境。安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++。
安装libevent:FastDFS依赖libevent库,需要安装: yum -y install libevent

安装libfastcommon:
libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。
将libfastcommonV1.0.7.tar.gz拷贝至/usr/local/下(记住这个路径)

# cd /usr/local# tar -zxvf libfastcommonV1.0.7.tar.gz# cd libfastcommon-1.0.7# ./make.sh# ./make.sh install

注意:libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。要拷贝的文件如下:

# cp /usr/lib64/libfastcommon.so /usr/lib

Tracker编译安装:
将FastDFS_v5.05.tar.gz拷贝至/usr/local/下:

# tar xf FastDFS_v5.05.tar.gz# cd FastDFS# ./make.sh# ./make.sh install

安装成功将安装目录下的conf下的文件拷贝到/etc/fdfs/下:

cp client.conf http.conf mime.types storage.conf storage_ids.conf tracker.conf /etc/fdfs/

Tracker的配置:
安装成功后进入/etc/fdfs目录:

# cp tracker.conf.sample tracker.conf# vim tracker.conf    base_path=/home/yuqing/FastDFS --> base_path=/home/FastDFS  //修改路径    http.server_port=80  //将默认端口改为80

Tracker的启动:

# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart  [root@Lius fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart  waiting for pid [2842] exit ...  starting ...  # 实际pid随不同机器而不同, 另, 如事先没启动, 可以用start代替restart. 用ps查看一下进程:  [root@Lius fdfs]# ps aux |grep fdfs  root       5503  0.0  0.2  78728  2844 ?        Sl   05:43   0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start  root       5511  0.0  0.0 103252   892 pts/2    S+   05:43   0:00 grep --color=tty fdfs

FastDFS–Storage安装:
Storge也可以配置多台, 在这里只对配置一台的方法做介绍, 另附多台配置的conf文件即配置方法. Storge服务器的IP地址为: 192.168.148.99.

安装libevent: 同上, 不做介绍.安装libfastcommon: 同上, 不做介绍.Storge的编译安装: Tracker编译安装的FastDFS_v5.05.tar.gz编译安装相同, 不做介绍.

Storge的配置:
拷贝配置文件:

# cd /etc/fdfs# cp storage.conf.sample storage.conf# vim storage.conf  group_name=group1  base_path=/home/yuqing/FastDFS --> base_path=/home/FastDFS  store_path0=/home/yuqing/FastDFS --> store_path0=/home/FastDFS/fdfs_storage  #如果有多个挂载磁盘则定义多个store_path,如下  #store_path1=.....  #store_path2=......  tracker_server=192.168.148.88:22122  //配置Tracker的IP地址,端口默认22122.  #如果有多个则配置多个tracker  tracker_server=192.168.148.55:22122  http.server_port=80  //http端口,确认是80.

Storge的启动:

# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart# 和上面介绍相同, 一开始是没启动, 可用start代替restart. ps查看进程情况.  [root@Storge ~]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start  [root@Storge ~]# ps aux |grep fdfs  root       8613 12.0  6.6  80848 66760 ?        Sl   05:56   0:00 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start  root       8623  0.0  0.0 103252   884 pts/2    S+   05:56   0:00 grep fdfs

上传图片测试:

如上部分, Tracker和Storge的配置部分就结束了, 下面进行配置结果的测试部分. 用到的模块是fdfs_test, 通过/usr/bin/fdfs_test测试上传、下载等操作。

在Tracker上, 修改/etc/fdfs/client.conf:

# vim /etc/fdfs/client.conf  base_path=/home/FastDFS  //注意路径的一致性.  tracker_server=192.168.148.88:22122  //Tracker的IP和端口配置

测试语句格式: /usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件, 示例如下:

# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/tomcat.png

注解: dfs_test模块, 通过/etc/fdfs/client.conf文件中的配置, 将/home/tomcat.png文件, 上传到Storge服务器, 并返回存储链接. 注意, tomcat.png文件如果不存在, 可以手动touch一个.
如下, 是上传文件返回的结果:

[root@Lius fdfs]# touch /home/tomcat.png; /usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/tomcat.pngThis is FastDFS client test program v5.05Copyright (C) 2008, Happy Fish / YuQingFastDFS may be copied only under the terms of the GNU GeneralPublic License V3, which may be found in the FastDFS source kit.Please visit the FastDFS Home Page http://www.csource.org/ for more detail.[2016-06-17 06:07:12] DEBUG - base_path=/home/FastDFS, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0tracker_query_storage_store_list_without_group:     server 1. group_name=, ip_addr=192.168.148.99, port=23000group_name=group1, ip_addr=192.168.148.99, port=23000storage_upload_by_filenamegroup_name=group1, remote_filename=M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268.pngsource ip address: 192.168.148.99file timestamp=2016-06-17 06:07:21file size=0file crc32=0example file url: http://192.168.148.99/group1/M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268.pngstorage_upload_slave_by_filenamegroup_name=group1, remote_filename=M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268_big.pngsource ip address: 192.168.148.99file timestamp=2016-06-17 06:07:21file size=0file crc32=0example file url: http://192.168.148.99/group1/M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268_big.png

如上, http://192.168.148.99/group1/M00/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268_big.png就是文件的下载路径。对应storage服务器上的: /home/FastDFS/fdfs_storage/data/00/00/wKiUY1djIxmAYbunAAAAAAAAAAA268_big.png文件.

通过Java Client API, 测试网络上传下载:
完整的测试方法参考测试源代码:

public class FastdfsClientTest {    //客户端配置文件    public String conf_filename = "F:\\workspace_indigo\\fastdfsClient\\src\\cn\\itcast\\fastdfs\\cliennt\\fdfs_client.conf";     //本地文件,要上传的文件    public String local_filename = "F:\\develop\\upload\\linshiyaopinxinxi_20140423193847.xlsx";//上传文件    @Test     public void testUpload() {         for(int i=0;i<100;i++){        try {             ClientGlobal.init(conf_filename);             TrackerClient tracker = new TrackerClient();             TrackerServer trackerServer = tracker.getConnection();             StorageServer storageServer = null;             StorageClient storageClient = new StorageClient(trackerServer,                     storageServer);             NameValuePair nvp [] = new NameValuePair[]{                     new NameValuePair("item_id", "100010"),                     new NameValuePair("width", "80"),                    new NameValuePair("height", "90")            };             String fileIds[] = storageClient.upload_file(local_filename, null,                     nvp);             System.out.println(fileIds.length);             System.out.println("组名:" + fileIds[0]);             System.out.println("路径: " + fileIds[1]);         } catch (FileNotFoundException e) {             e.printStackTrace();         } catch (IOException e) {             e.printStackTrace();         } catch (Exception e) {            e.printStackTrace();        }         }    }}

FastDFS 和nginx整合:
在Tracker上安装nginx: 以nginx-1.8.0.tar.gz为例

一个Tracker可对应多个 Storage,通过nginx对Storage负载均衡。在每个Tracker上安装nginx,可安装两个 nginx, 并设为主备高可用。默认安装路径: /usr/local/nginx:
# cd /usr/local/src# tar xf nginx-1.8.0.tar.gz# cd nginx-1.8.0# ./configure \--prefix=/usr/local/nginx \--with-http_realip_module \--with-http_sub_module \--with-http_gzip_static_module \--with-http_stub_status_module \--with-pcre# make; make install

Tracker_Nginx配置文件修改:

# > /usr/local/nginx/conf/nginx.conf  //清空原来配置# vim /usr/local/nginx/conf/nginx.conf  //编辑, 添加下面配置:user nobody nobody;worker_processes 2;error_log /usr/local/nginx/logs/nginx_error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 51200;events{    use epoll;    worker_connections 6000;}http{    include mime.types;    default_type application/octet-stream;    server_names_hash_bucket_size 3526;    server_names_hash_max_size 4096;    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'    '$host "$request_uri" $status'    '"$http_referer" "$http_user_agent"';    sendfile on;    tcp_nopush on;    keepalive_timeout 30;    client_header_timeout 3m;    client_body_timeout 3m;    send_timeout 3m;    connection_pool_size 256;    client_header_buffer_size 1k;    large_client_header_buffers 8 4k;    request_pool_size 4k;    output_buffers 4 32k;    postpone_output 1460;    client_max_body_size 10m;    client_body_buffer_size 256k;    client_body_temp_path /usr/local/nginx/client_body_temp;    proxy_temp_path /usr/local/nginx/proxy_temp;    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;    fastcgi_intercept_errors on;    tcp_nodelay on;    gzip on;    gzip_min_length 1k;    gzip_buffers 4 8k;    gzip_comp_level 5;    gzip_http_version 1.1;    gzip_types text/plain application/x-javascript text/css text/htm application/xml;    include vhosts/*.conf;}# 注意最后语句: include vhosts/*.conf;, Nginx将加载conf目录下vhosts目录里面所有.conf结尾的文件.

Tracker上创建Nginx的vhosts配置文件目录, 并创建nginx-fdfs.conf配置文件: 这里的IP是Storge的IP

# storage群group1组upstream storage_server_group1{        server 192.168.101.5:80 weight=10;        server 192.168.101.6:80 weight=10;    }    # storage群group2组upstream storage_server_group2{        server 192.168.101.7:80 weight=10;        server 192.168.101.8:80 weight=10;    }   server {    listen 80;    server_name ccc.test.com;    location /group1{        proxy_redirect off;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_pass http://storage_server_group1;    }location /group2{        proxy_redirect off;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_pass http://storage_server_group2;    }}

以上是多个Tracker, 多个Storge的配置文件, 而我们实际上只用到了一个Tracker和一个Storge, 所以, 用下面的简化配置:

upstream storage_server_group1 {  server 192.168.148.99:80;}server {  listen 80;  server_name ccc.test.com;  location /group1{    proxy_redirect off;    proxy_set_header Host $host;    proxy_set_header X-Real-IP $remote_addr;    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    proxy_pass http://storage_server_group1;  }}

在Storge上安装Nginx和FastDFS-nginx-module模块:
将FastDFS-nginx-module_v1.16.tar.gz传至/usr/local/下:

# cd /usr/local# tar xf FastDFS-nginx-module_v1.16.tar.gz# cd FastDFS-nginx-module/src

修改config文件将/usr/local/路径改为/usr/

# vim ./src/config  ngx_addon_name=ngx_http_fastdfs_module  HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"  NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"  CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"  CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient"  CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"

将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下:

# cp ./src/mod_FastDFS.conf /etc/fdfs/

修改mod_FastDFS.conf配置文件:

# vim /etc/fdfs/mod_FastDFS.conf  base_path=/home/FastDFS  tracker_server=192.168.148.88:22122  # tracker_server=192.168.101.4:22122  url_have_group_name=true  # url中包含group名称  store_path0=/home/FastDFS/fdfs_storage  # 指定文件存储路径, 试验中只有一个Storge, 如果有多个:  # store_path1=/home/FastDFS/fdfs_storage1

将libfdfsclient.so拷贝至/usr/lib下:

# cp /usr/lib64/libfdfsclient.so /usr/lib/

创建nginx/client目录:

# mkdir -p /var/temp/nginx/client

Storge上Nginx的安装:

# cd /usr/local/src# tar xf nginx-1.8.0.tar.gz# cd nginx-1.8.0# ./configure \--prefix=/usr/local/nginx \--pid-path=/var/run/nginx/nginx.pid \--lock-path=/var/lock/nginx.lock \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--with-http_gzip_static_module \--http-client-body-temp-path=/var/temp/nginx/client \--http-proxy-temp-path=/var/temp/nginx/proxy \--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \--http-scgi-temp-path=/var/temp/nginx/scgi \--add-module=/usr/local/fastdfs-nginx-module/src# make; make install

注意: 配置信息中的路径很容易报错, 所以, 前面的路径一定要配置准确.

Storege上Nginx配置文件修改:
和Tracker的主配置文件保持一致即可, 注意, 一定要有: include vhosts/*.conf; 即: 打开vhosts配置文件目录.
进入vhosts目录, 新建nginx-fdfs.conf配置文件, 写入如下配置:

server {        listen       80;        server_name  192.168.148.99;        location /group1/M00/{                root /home/FastDFS/fdfs_storage/data;                ngx_fastdfs_module;        }}

注意: 路径的准确性, 大小写问题要注意. server_name指定本机ip, location /group1/M00/:group1为nginx 服务FastDFS的分组名称,M00是FastDFS自动生成编号,对应store_path0=/home/FastDFS/fdfs_storage,如果FastDFS定义store_path1,这里就是M01.

Java测试
以双Tracker, 双Storge为例, 通过java客户端上传文件,上传成功后, 使用浏览器访问:
Storge_IP: 192.168.101.5 && 192.168.101.6
Tracker_IP: 192.168.101.3 && 192.168.101.4

访问Storage:
http://192.168.101.5/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png
ip地址改为192.168.101.6也行,因为同一个分组的Storage文件互相同步。

访问Tracker:
http://192.168.101.3/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png
ip地址改为192.168.101.4也行。

使用域名访问Tracker (推荐):本地测试注意修改windows的hosts文件.
两个Tracker的nginx为主备,对外由vip提供服务,使用域名访问如下:
比如vip对应的域名为img.test.com:
http://img.test.com/group1/M00/00/00/wKhlBVVY2M-AM_9DAAAT7-0xdqM485_big.png

附录: tracker.conf详解

1. 基本配置disable# func:配置是否生效# valu:true、falsedisable=falsebind_addr# func:绑定IP# valu:IP地址bind_addr=192.168.6.102port# func:服务端口# valu:端口整数值port=22122connect_timeout# func:连接超时# valu:秒单位正整数值connect_timeout=30network_timeout# func:网络超时# valu:秒单位正整数值network_timeout=60base_path# func:Tracker数据/日志目录地址# valu:路径base_path=/home/michael/fdfs/base4trackermax_connections# func:最大连接数# valu:正整数值max_connections=256work_threads# func:线程数,通常设置CPU数# valu:正整数值work_threads=4store_lookup# func:上传文件的选组方式。# valu:0、1或2。# 0:表示轮询# 1:表示指定组# 2:表示存储负载均衡(选择剩余空间最大的组)store_lookup=2store_group# func:指定上传的组,如果在应用层指定了具体的组,那么这个参数将不会起效。另外如果store_lookup如果是0或2,则此参数无效。# valu:group1等store_group=group1store_server# func:上传服务器的选择方式。(一个文件被上传后,这个storage server就相当于这个文件的storage server源,会对同组的storage server推送这个文件达到同步效果)# valu:0、1或2# 0: 轮询方式(默认)# 1: 根据ip 地址进行排序选择第一个服务器(IP地址最小者)# 2: 根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority),优先级值越小优先级越高。store_server=0store_path# func:上传路径的选择方式。storage server可以有多个存放文件的base path(可以理解为多个磁盘)。# valu:# 0: 轮流方式,多个目录依次存放文件# 2: 存储负载均衡。选择剩余空间最大的目录存放文件(注意:剩余磁盘空间是动态的,因此存储到的目录或磁盘可能也是变化的)store_path=0download_server# func:下载服务器的选择方式。# valu:# 0:轮询(默认)# 1:IP最小者# 2:优先级排序(值最小的,优先级最高。)download_server=0reserved_storage_space# func:保留空间值。如果某个组中的某个服务器的剩余自由空间小于设定值,则文件不会被上传到这个组。# valu:# G or g for gigabyte# M or m for megabyte# K or k for kilobytereserved_storage_space=1GBlog_level# func:日志级别# valu:# emerg for emergency# alert# crit for critical# error# warn for warning# notice# info for information# debug for debugginglog_level=inforun_by_group / run_by_user# func:指定运行该程序的用户组# valu:用户组名或空run_by_group=# func:# valu:run_by_user=allow_hosts# func:可以连接到tracker server的ip范围。可设定多个值。# valuallow_hosts=check_active_interval# func:检测 storage server 存活的时间隔,单位为秒。#      storage server定期向tracker server 发心跳,#      如果tracker server在一个check_active_interval内还没有收到storage server的一次心跳,#      那边将认为该storage server已经下线。所以本参数值必须大于storage server配置的心跳时间间隔。#      通常配置为storage server心跳时间间隔的2倍或3倍。check_active_interval=120thread_stack_size# func:设定线程栈的大小。 线程栈越大,一个线程占用的系统资源就越多。#      如果要启动更多的线程(V1.x对应的参数为max_connections,V2.0为work_threads),可以适当降低本参数值。# valu:如64KB,默认值为64,tracker server线程栈不应小于64KBthread_stack_size=64KBstorage_ip_changed_auto_adjust# func:这个参数控制当storage server IP地址改变时,集群是否自动调整。注:只有在storage server进程重启时才完成自动调整。# valu:true或falsestorage_ip_changed_auto_adjust=true2. 同步storage_sync_file_max_delay# func:同组storage服务器之间同步的最大延迟时间。存储服务器之间同步文件的最大延迟时间,根据实际情况进行调整# valu:秒为单位,默认值为1天(24*3600)# sinc:v2.0storage_sync_file_max_delay=86400storage_sync_file_max_time# func:存储服务器同步一个文件需要消耗的最大时间,缺省为300s,即5分钟。# sinc:v2.0storage_sync_file_max_time=300sync_log_buff_interval# func:同步或刷新日志信息到硬盘的时间间隔。注意:tracker server 的日志不是时时写硬盘的,而是先写内存。# valu:以秒为单位sync_log_buff_interval=103. trunk 和 slot# func:是否使用trunk文件来存储几个小文件# valu:true或false# sinc:v3.0use_trunk_file=false# func:最小slot大小# valu:<= 4KB,默认为256字节# sinc:v3.0slot_min_size=256# func:最大slot大小# valu:>= slot_min_size,当小于这个值的时候就存储到trunk file中。默认为16MB。# sinc:v3.0slot_max_size=16MB# func:trunk file的size# valu:>= 4MB,默认为64MB# sinc:v3.0trunk_file_size=64MB4. HTTP 相关是否启用 HTTP# func:HTTP是否生效# valu:true或falsehttp.disabled=falseHTTP 服务器端口号# func:tracker server上的http port# valu:# note:只有http.disabled=false时才生效http.server_port=7271检查Storage存活状态的间隔时间(心跳检测)# func:检查storage http server存活的间隔时间# valu:单位为秒# note:只有http.disabled=false时才生效http.check_alive_interval=30# 心跳检测使用的协议方式# func:检查storage http server存活的方式# valu:#  tcp:连接到storage server的http端口,不进行request和response。# http:storage check alive url must return http status 200.# note:只有http.disabled=false时才生效http.check_alive_type=tcp检查 Storage 状态的 URI# func:检查storage http server是否alive的uri/url# note:只有http.disabled=false时才生效http.check_alive_uri=/status.html
0 0
原创粉丝点击