很长时间没有关注FastDFS了,第一次使用FastDFS 是在 08年的时候11月的时候,那个时候是为了解决公司的数据存储~那时候可能是对Fastdfs了解不深,功能还不算太健全,最后选择了lustre。
环境:
storage1:192.168.6.100 storage2:192.168.6.101 tracker:192.168.6.102
1. 在每个机器上,下载安装 FastDFS
nginx $> wget http://fastdfs.googlecode.com/files/FastDFS_v2.04.tar.gz # 解压 nginx $> tar zxvf FastDFS_v2.04.tar.gz nginx $> cd FastDFS # 因为我是给nginx添加fastdfs模块,所以不需要fastdfs支持 http 所以我就不需要去掉 #WITH_HTTPD=1 前的注释了,直接编译 nginx $> ./make.sh nginx $> ./make.sh install
2.修改tracker 和 storage 的配置文件
# tracker 的修改
tracker $> vim /etc/fdfs/tracker.conf
bind_addr=192.168.6.102
#绑定IP
port=22122
#服务端口
work_threads=4
#线程数,通常设置CPU数
store_lookup=2
上传组(卷) 的方式 0:轮询方式 1: 指定组 2: 平衡负载(选择最大剩余空间的组(卷)上传)
这里如果在应用层指定了上传到一个固定组,那么这个参数被绕过
store_group=group1
当上一个参数设定为1 时 (store_lookup=1,即指定组名时),必须设置本参数为系统中存在的一个组名。如果选择其他的上传方式,这个参数就没有效了
store_server=0
选择哪个storage server 进行上传操作(一个文件被上传后,这个storage server就相当于这个文件的storage server源,会对同组的storage server推送这个文件达到同步效果)
# 0: 轮询方式
# 1: 根据ip 地址进行排序选择第一个服务器(IP地址最小者)
# 2: 根据优先级进行排序(上传优先级由storage server来设置,参数名为upload_priority)
store_path=0
选择storage server 中的哪个目录进行上传。storage server可以有多个存放文件的base path(可以理解为多个磁盘)。
# 0: 轮流方式,多个目录依次存放文件
# 2: 选择剩余空间最大的目录存放文件(注意:剩余磁盘空间是动态的,因此存储到的目录或磁盘可能也是变化的)
download_server=0
选择哪个 storage server 作为下载服务器
# 0: 轮询方式,可以下载当前文件的任一storage server
# 1: 哪个为源storage server 就用哪一个 (前面说过了这个storage server源 是怎样产生的) 就是之前上传到哪个storage server服务器就是哪个了
#两台 storage.conf的修改
storage $> vim /etc/fdfs/storage.conf
disabled=false #配置是否生效 group_name=group1 #storage所在组(卷) bind_addr=192.168.6.100 # 绑定IP,另一太 storage IP为 192.168.6.101 client_bind=true #bind_addr通常是针对server的。当指定bind_addr时,本参数才有效。 port=23000 # 是storage 服务端口
3.建立tracker 和 storage 的根目录
# tracker tracker $> mkdir -p /home/eric # storage storage $> mkdir -p /home/yangzi
4.在 一台storage上下载,比如我在 192.168.6.100上下载 nginx 和 fastdfs-nginx-module 模块
storage $> wget http://www.nginx.org/download/nginx-0.8.53.tar.gz storage $> svn export http://fastdfs-nginx-module.googlecode.com/svn/trunk/ fastdfs-nginx-module-read-only
5.编译安装 nginx 附带 fastdfs-nginx-module 模块
storage $> tar zxvf nginx-0.8.53.tar.gz storage $> cd nginx-0.8.53 storage $> ./configure --prefix=/usr/local/nginx --add-module=/root/fastdfs-nginx-module-read-only/src storage $> make storage $> make install # 拷贝mod_fastdfs.conf 到/etc/fdfs/ storage $> cp /root/fastdfs-nginx-module-read-only/src/mod_fastdfs.conf /etc/fdfs/
6.修改 nginx 配置文件增加
storage $> vim /usr/local/nginx/conf/nginx.conf
# 增加一下
location /M00 {
alias /home/eric/data;
ngx_fastdfs_module;
}
7. 给 storage 的存储目录做一个软连接
storage $> ln -s /home/yangzi/data /home/yangzi/data/M00
8. 启动两台 storage 和tracker nginx
# 启动 tracker tracker $> /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf # 启动 storage storage $> /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf # 启动 storage2 storage2 $> /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf #在 storage启动 nginx storage $> /usr/local/nginx/sbin/nginx
9、上传文件测试。
# 修改客户端配置文件
storage $> vim /etc/fdfs/client.conf connect_timeout=30 network_timeout=60 base_path=/home/yangzi tracker_server=192.168.6.102:22122 log_level=info #下面参数无所谓了反正没有用到http 服务 http.tracker_server_port=80
storage $> vim a.html test FastDFS!
storage $> /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload a.html This is FastDFS client test program v2.04 Copyright (C) 2008, Happy Fish / YuQing FastDFS may be copied only under the terms of the GNU General Public License V3, which may be found in the FastDFS source kit. Please visit the FastDFS Home Page http://www.csource.org/ for more detail. base_path=/home/yangzi, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0 tracker_query_storage_store_list_without_group: server 1. group_name=group1, ip_addr=192.168.6.100, port=23000 group_name=group1, ip_addr=192.168.6.100, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKgGvEz3Y9MAAAAAAAAADigvbpc73.html source ip address: 192.168.6.100 file timestamp=2010-12-02 17:16:03 file size=14 file crc32=674197143 file url: http://192.168.6.100/group1/M00/00/00/wKgGvEz3Y9MAAAAAAAAADigvbpc73.html storage_upload_slave_by_filename group_name=group1, remote_filename=M00/00/00/wKgGvEz3Y9MAAAAAAAAADigvbpc73_big.html source ip address: 192.168.6.100 file timestamp=2010-12-02 17:16:03 file size=14 file crc32=674197143 file url: http://192.168.6.100/group1/M00/00/00/wKgGvEz3Y9MAAAAAAAAADigvbpc73_big.html
打开IE浏览器访问: