linux发行版为:centos6.5
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称为存储服务器。
如下图:
FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,Tracker server不存在单点故障。客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。
Storage集群采用了分组存储方式。storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系,不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,从而保证同组内每个storage上的文件完全一致的。一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
采用分组存储方式的好处是灵活、可控性较强。比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择。一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。当系统容量不足时,可以增加组来扩充存储容量(横向扩容)。
Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。
客户端上传文件后存储服务器将文件ID返回给客户端,此文件ID用于以后访问该文件的索引信息。文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。
tracker根据请求的文件路径即文件ID 来快速定义文件。
比如请求下边的文件:
1.通过组名tracker能够很快的定位到客户端需要访问的存储服务器组是group1,并选择合适的存储服务器提供客户端访问。
2.存储服务器根据“文件存储虚拟磁盘路径”和“数据文件两级目录”可以很快定位到文件所在目录,并根据文件名找到客户端需要访问的文件。
tracker: 192.168.8.20
tracker: 192.168.8.21
group1:
storage: 192.168.8.30
storage: 192.168.8.31
group2:
storage: 192.168.8.32
storage: 192.168.8.33
在centos6.5下:
- FastDFS 主程序程序引用 usr/lib Ŀ¼
- 一般 fdfs_storage、fdfs_tracker 等命令在/usr/local/bin中没有,而是在 /usr/bin 路径下
#可用这个命令查看 ll /usr/local/bin/fdfs*
- FastDFS 的配置文件所在目录 /etc/fdfs/
在192.168.8.20和192.168.8.21上安装tracker。
tracker和storage使用相同的安装包,
下载地址:http://sourceforge.net/projects/FastDFS/
或https://github.com/happyfish100/FastDFS(推荐)
这里使用版本:FastDFS_v5.05.tar.gz
FastDFS是C语言开发,建议在linux上运行,这里使用Centos6.5作为安装环境。
安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
yum install gcc-c++
FastDFS依赖libevent库,需要安装:
yum -y install libevent
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下。
要拷贝的文件如下:
将FastDFS_v5.05.tar.gz拷贝至/usr/local/下
tar -zxvf FastDFS_v5.05.tar.gz cd FastDFS ./make.sh ./make.sh install
安装成功将安装目录下的conf下的文件拷贝到/etc/fdfs/下。
前边步骤中无论是配置tracker还是配置storage都是必须的,而tracker和storage的区别主要是在安装完fastdfs之后的配置 过程中。
安装成功后进入/etc/fdfs目录:
拷贝一份新的tracker配置文件,或者直接修改从安装目录下的conf 中拷贝过来的 tracker.conf 文件:
cp tracker.conf.sample tracker.conf
修改tracker.conf
vi tracker.conf base_path=/home/yuqing/FastDFS #改为: base_path=/home/FastDFS
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
vim /etc/rc.d/rc.local
将运行命令行添加进文件末尾:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
在192.168.8.30 和 192.168.8.31 上安装storage。
同tracker一样,在需要安装storage的机子上,安装libevent,libfastcommon
同安装tracker时候操作一样
其实配置storage和配置tracker类似,只不过配置文件和配置内容不一样。
安装成功后进入/etc/fdfs目录:
拷贝一份新的storage配置文件:或者直接修改从安装目录下的conf 中拷贝过来的 storage.conf 文件:
cp storage.conf.sample storage.conf
修改storage.conf
base_path=/home/yuqing/FastDFS 改为:base_path=/home/FastDFS
store_path0=/home/yuqing/FastDFS 改为:store_path0=/home/FastDFS/fdfs_storage
vi storage.conf group_name=group1 base_path=/home/FastDFS store_path0=/home/FastDFS/fdfs_storage #如果有多个挂载磁盘则定义多个store_path,如下 #store_path1=..... #store_path2=...... tracker_server=192.168.8.20:22122 #配置tracker服务器:IP #如果有多个则配置多个tracker tracker_server=192.168.8.21:22122
补充:
其实配置storage和配置tracker类似,只不过配置文件和配置内容不一样。我们以配置192.168.8.30配置storage为例。
#1. 进入/etc/fdfs文件夹,执行命令: cp storage.conf.sample storage.conf。 #2. 编辑storage.conf,执行命令: vi storage.conf ,#将以下几个选项进行编辑: a. disabled=false #启用配置文件 b. group_name=group2 #组名,根据实际情况修改 c. port=23001 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致 d. base_path=/home/FastDFS #设置storage的日志目录(需预先创建) e. store_path_count=1 #存储路径个数,需要和store_path个数匹配 f. store_path0=/home/FastDFS/fdfs_storage #存储路径 g. tracker_server=192.168.224.20:22122 #tracker服务器的IP地址和端口号 h. http.server_port=8080 #设置http端口号 注意,这个配置在fastdfs5.05这个版本中已经不用配置,不用管这个!
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
vim /etc/rc.d/rc.local
将运行命令行添加进文件:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
其实,storage中安装nginx,主要是为了为提供http的访问服务,同时解决group中storage服务器的同步延迟问题。而tracker中安装nginx,主要是为了提供http访问的反向代理、负载均衡以及缓存服务
nginx是C语言开发,建议在linux上运行,这里使用Centos6.5作为安装环境。
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
yum install gcc-c++
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
创建nginx默认的安装文件夹: /usr/local/nginx
mkdir /usr/local/nginx
将 nginx1.7.8.tar.gz 和 fastdfs-nginx-module_v1.16.tar.gz(安装包)上传至/user/local/,并解压
FastDFS-nginx-module
FastDFS-nginx-module的作用
FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设 Tracker 服务器将文件上传到了 ip01,上传成功后文件 ID 已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 ip02,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 ip02 上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。(解压后的 fastdfs-nginx-module 在 nginx 安装时使用)
将FastDFS-nginx-module_v1.16.tar.gz传至/usr/local/下
cd /usr/local tar -zxvf FastDFS-nginx-module_v1.16.tar.gz cd FastDFS-nginx-module/src
注意:
修改config文件将/usr/local/路径改为/usr/
将FastDFS-nginx-module/src下的mod_FastDFS.conf拷贝至/etc/fdfs/下
cp mod_FastDFS.conf /etc/fdfs/
修改mod_FastDFS.conf的内容:
vi /etc/fdfs/mod_FastDFS.conf base_path=/home/FastDFS tracker_server=192.168.8.20:22122 #tracker_server=192.168.8.21:22122(多个tracker配置多行) url_have_group_name=true #url中包含group名称 store_path0=/home/FastDFS/fdfs_storage #指定文件存储路径
将libfdfsclient.so拷贝至/usr/lib下
cp /usr/lib64/libfdfsclient.so /usr/lib/
创建nginx/client目录
mkdir -p /var/temp/nginx/client
进去nginx解压后的安装包,中,执行如下:configure命令
添加FastDFS-nginx-module模块
./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(安装)
进入nginx的安装目录下的conf下
/usr/local/nginx/conf
修改配置文件 nginx.conf,添加server
vi nginx.conf
server { listen 80; server_name 192.168.8.30; location /group1/M00/{ #root /home/FastDFS/fdfs_storage/data; ngx_fastdfs_module; } }
注意,如果配置的storage是在group2组,则上面的location应该是 /group2/M00
fastdfs的安装文件夹的conf目录下的http.conf和mime.types需拷贝到/etc/fdfs/下,如果不执行这一步,后边在启动nginx时会报错(我们已经在安装完FastDFS的时候就copy过去了)。
说明:
server_name指定本机ip
location /group1/M00/:group1为nginx 服务FastDFS的分组名称,M00是FastDFS自动生成编号,对应store_path0=/home/FastDFS/fdfs_storage,如果FastDFS定义store_path1,这里就是M01
这里使用的是编写shell脚本的方式来处理
vi /etc/init.d/nginx (输入下面的代码)
#!/bin/bash # nginx Startup script for the Nginx HTTP Server # it is v.0.0.2 version. # chkconfig: - 85 15 # description: Nginx is a high-performance web and proxy server. # It has a lot of features, but it's not for everyone. # processname: nginx # pidfile: /var/run/nginx.pid # config: /usr/local/nginx/conf/nginx.conf nginxd=/usr/local/nginx/sbin/nginx nginx_config=/usr/local/nginx/conf/nginx.conf nginx_pid=/var/run/nginx.pid RETVAL=0 prog="nginx" # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x $nginxd ] || exit 0 # Start nginx daemons functions. start() { if [ -e $nginx_pid ];then echo "nginx already running...." exit 1 fi echo -n $"Starting $prog: " daemon $nginxd -c ${nginx_config} RETVAL=$? echo [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx return $RETVAL } # Stop nginx daemons functions. stop() { echo -n $"Stopping $prog: " killproc $nginxd RETVAL=$? echo [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid } # reload nginx service functions. reload() { echo -n $"Reloading $prog: " #kill -HUP `cat ${nginx_pid}` killproc $nginxd -HUP RETVAL=$? echo } # See how we were called. case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $prog {start|stop|restart|reload|status|help}" exit 1 esac exit $RETVAL
chmod a+x /etc/init.d/nginx #(a+x ==> all user can execute 所有用户可执行)
这样在控制台就很容易的操作nginx了:查看Nginx当前状态、启动Nginx、停止Nginx、重启Nginx…
如果修改了nginx的配置文件nginx.conf,也可以使用上面的命令重新加载新的配置文件并运行,可以将此命令加入到rc.local文件中,这样开机的时候nginx就默认启动了
vi /etc/rc.local
加入一行 如下代码 保存并退出,下次重启会生效
/etc/init.d/nginx start
在每个tracker上安装nginx,的主要目的是做负载均衡及实现高可用。如果只有一台tracker服务器可以不配置nginx。
注意: tracker中nginx安装时比storage中的nginx安装时需要安装一个nginx的缓存模块,不需要安装fastdfs-nginx-module,同时在配置的时候有很大的不同。
1. 创建nginx默认的安装文件夹: mkdir /usr/local/nginx
2. 提前将 nginx1.7.8.tar.gz、(fastdfs-nginx-module_v1.16.tar.gz,不安装)、ngx_cache_purge-2.1.tar.gz上传至/user/local 并解压缩。
ngx_cache_purge
没有配置,默认解压就可以。
进入每台tracker的nginx的安装目录
./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=/myself_settings/ngx_cache_purge/ngx_cache_purge-2.1
make
make install
进入nginx的安装目录的conf目录下,修改给个tracker上的nginx.conf 文件
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; use epoll; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; tcp_nopush on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; #设置缓存 server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 300m; proxy_redirect off; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; #设置缓存存储路径,存储方式,分别内存大小,磁盘最大空间,缓存期限 proxy_cache_path /fastdfs/cache/nginx/proxy_cache levels=1:2 keys_zone=http-cache:200m max_size=1g inactive=30d; proxy_temp_path /fastdfs/cache/nginx/proxy_cache/tmp; #group1的服务设置 upstream fdfs_group1 { server 192.168.8.30:8888 weight=1 max_fails=2 fail_timeout=30s; server 192.168.8.31:8888 weight=1 max_fails=2 fail_timeout=30s; } #group2的服务设置 upstream fdfs_group2 { server 192.168.8.32:8888 weight=1 max_fails=2 fail_timeout=30s; server 192.168.8.33:8888 weight=1 max_fails=2 fail_timeout=30s; } server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #group1的负载均衡配置 location /group1/M00 { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_cache http-cache; proxy_cache_valid 200 304 12h; proxy_cache_key $uri$is_args$args; #对应group1的服务设置 proxy_pass http://fdfs_group1; expires 30d; } location /group2/M00 { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_cache http-cache; proxy_cache_valid 200 304 12h; proxy_cache_key $uri$is_args$args; #对应group2的服务设置 proxy_pass http://fdfs_group2; expires 30d; } location ~/purge(/.*) { allow 127.0.0.1; allow 192.168.156.0/24; deny all; proxy_cache_purge http-cache $1$is_args$args; } location / { root html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
修改完nginx.conf文件之后,我们下面需要创建/fastdfs/cache/nginx/proxy_cache和/fastdfs/cache/nginx/proxy_cache/tmp目录,这是因为我们在nginx.conf文件中配置缓存路径时指定了该目录,但是这两个目录目前还不存在。
到这里tracker上的反向代理已经配置完成了,下一步配置nginx的高可用。
tracker.conf
1 基本配置 disable #func:配置是否生效 #valu:true、false disable=false bind_addr #func:绑定IP #valu:IP地址 bind_addr=192.168.6.102 port #func:服务端口 #valu:端口整数值 port=22122 connect_timeout #func:连接超时 #valu:秒单位正整数值 connect_timeout=30 network_timeout #func:网络超时 #valu:秒单位正整数值 network_timeout=60 base_path #func:Tracker数据/日志目录地址 #valu:路径 base_path=/home/michael/fdfs/base4tracker max_connections #func:最大连接数 #valu:正整数值 max_connections=256 work_threads #func:线程数,通常设置CPU数 #valu:正整数值 work_threads=4 store_lookup #func:上传文件的选组方式。 #valu:0、1或2。 # 0:表示轮询 # 1:表示指定组 # 2:表示存储负载均衡(选择剩余空间最大的组) store_lookup=2 store_group #func:指定上传的组,如果在应用层指定了具体的组,那么这个参数将不会起效。另外如果store_lookup如果是0或2,则此参数无效。 #valu:group1等 store_group=group1 store_server #func:上传服务器的选择方式。(一个文件被上传后,这个storage server就相当于这个文件的storage server源,会对同组的storage server推送这个文件达到同步效果) #valu:0、1或2 # 0: 轮询方式(默认) # 1: 根据ip 地址进行排序选择第一个服务器(IP地址最小者) # 2: 根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority),优先级值越小优先级越高。 store_server=0 store_path #func:上传路径的选择方式。storage server可以有多个存放文件的base path(可以理解为多个磁盘)。 #valu: # 0: 轮流方式,多个目录依次存放文件 # 2: 存储负载均衡。选择剩余空间最大的目录存放文件(注意:剩余磁盘空间是动态的,因此存储到的目录或磁盘可能也是变化的) store_path=0 download_server #func:下载服务器的选择方式。 #valu: # 0:轮询(默认) # 1:IP最小者 # 2:优先级排序(值最小的,优先级最高。) download_server=0 reserved_storage_space #func:保留空间值。如果某个组中的某个服务器的剩余自由空间小于设定值,则文件不会被上传到这个组。 #valu: # G or g for gigabyte # M or m for megabyte # K or k for kilobyte reserved_storage_space=1GB log_level #func:日志级别 #valu: # emerg for emergency # alert # crit for critical # error # warn for warning # notice # info for information # debug for debugging log_level=info run_by_group / run_by_user #func:指定运行该程序的用户组 #valu:用户组名或空 run_by_group= #func: #valu: run_by_user= allow_hosts #func:可以连接到tracker server的ip范围。可设定多个值。 #valu allow_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=120 thread_stack_size #func:设定线程栈的大小。 线程栈越大,一个线程占用的系统资源就越多。 # 如果要启动更多的线程(V1.x对应的参数为max_connections,V2.0为work_threads),可以适当降低本参数值。 #valu:如64KB,默认值为64,tracker server线程栈不应小于64KB thread_stack_size=64KB storage_ip_changed_auto_adjust #func:这个参数控制当storage server IP地址改变时,集群是否自动调整。注:只有在storage server进程重启时才完成自动调整。 #valu:true或false storage_ip_changed_auto_adjust=true 2 同步 storage_sync_file_max_delay #func:同组storage服务器之间同步的最大延迟时间。存储服务器之间同步文件的最大延迟时间,根据实际情况进行调整 #valu:秒为单位,默认值为1天(24*3600) #sinc:v2.0 storage_sync_file_max_delay=86400 storage_sync_file_max_time #func:存储服务器同步一个文件需要消耗的最大时间,缺省为300s,即5分钟。 #sinc:v2.0 storage_sync_file_max_time=300 sync_log_buff_interval #func:同步或刷新日志信息到硬盘的时间间隔。注意:tracker server 的日志不是时时写硬盘的,而是先写内存。 #valu:以秒为单位 sync_log_buff_interval=10 3 trunk 和 slot #func:是否使用trunk文件来存储几个小文件 #valu:true或false #sinc:v3.0 use_trunk_file=false #func:最小slot大小 #valu:<= 4KB,默认为256字节 #sinc:v3.0 slot_min_size=256 #func:最大slot大小 #valu:>= slot_min_size,当小于这个值的时候就存储到trunk file中。默认为16MB。 #sinc:v3.0 slot_max_size=16MB #func:trunk file的size #valu:>= 4MB,默认为64MB #sinc:v3.0 trunk_file_size=64MB 4 HTTP 相关 是否启用 HTTP #func:HTTP是否生效 #valu:true或false http.disabled=false HTTP 服务器端口号 #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
分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群
http://www.open-open.com/lib/view/open1435468300700.html
fastdfs集群的配置教程
http://blog.csdn.net/lynnlovemin/article/details/39398043
fastdfs系列教程
http://blog.csdn.net/poechant/article/details/6977407
tracker-leader的选举
http://m.blog.csdn.net/blog/hfty290/42030339
手把手教你搭建FastDFS集群(上)
https://blog.csdn.net/u012453843/article/details/68957209
手把手教你搭建FastDFS集群(中)
https://blog.csdn.net/u012453843/article/details/69055570
手把手教你搭建FastDFS集群(下)
https://blog.csdn.net/u012453843/article/details/69172423