注:(引用)首先看一下FastDFS架构示意图如下:
注:(引用)技术相关术语:
Tracker Server:跟踪服务器,主要做调度工作,在访问上起负载均衡的作用。在内存中记录集群中group和storage server的状态信息,是连接Client和 Storage server的枢纽。 因为相关信息全部在内存中,Tracker server的性能非常高,一个较大的集群(比如上百个group)中有3台就足够了。
Storage Server:存储服务器,文件和文件属性(meta data)都保存到存储服务器上。
下面我们就开始FastDFS的安装了:
首先 tracker 与 storage 的安装基本相同的,只是配置的文件有些差别。
tracker 安装于 10.20.20.49
storage 安装于 10.20.20.14(可以安装多个storage,为了方便说明,只列举一个,其他的storage安装步骤相同(storage里配置了tracker就可以关联起来))
tracker 与storage 可以安装于同一台机器上,为了方便扩展建议安装在不同的机器上
先去官网下载相关包
1)FastDFS: https://sourceforge.net/projects/fastdfs/
2)ibfastcommon: https://sourceforge.net/projects/libfastcommon/(FastDFS 依赖工具包)
3)fastdfs-nginx-module :https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/(与nginx 集成用到)
4)ngx_cache_purge-2.3.tar(nginx的缓存用到)
5)nginx:http://nginx.org/en/download.html
安装tracker:
1.把文件拷贝到 /usr/local ,解压
tar -zcxf libfastcommon
tar -zxvf FastDFS_v5.05.tar.gz
2.切换到 libfastcommon 目录
按照这个组件需要先安装它的依赖:
cd libfastcommon
yum install gcc
yum install gcc-c++
yum install gcc perl
开始安装:
./make.sh
./make.sh install
3.安装FastDFS
cd FastDFS
./make.sh
./make.sh install
4.安装后会在/etc/fdfs/ 目录生成fdfs的原始文件,切换到该目录下,复制以下两个文件:
cd /etc/fdfs
cp client.conf.sample client.conf
cp tracker.conf.sample tracker.conf
5.修改拷贝后的文件,先创建tracker的日志文件目录,修改配置
mkdir -p /opt/fdfs/tracker
vim tracker.conf
需要修改的内容: base_path=/opt/fdfs/tracker
tracker_server=10.20.20.49:22122(tracker 的ip)
(更多需求可以参照网上其他配置项)
6. 拷贝fdfs命令到指定目录
cp /usr/bin/fdfs_trackerd /usr/local/bin
cp /usr/bin/fdfs_monitor /usr/local/bin
cp /usr/bin/fdfs_upload_file /usr/local/bin
cp /usr/bin/fdfs_test /usr/local/bin
7. 连接目录
ln -s /usr/include/fastcommon /usr/local/include/fastcommon
ln -s /usr/include/fastdfs /usr/local/include/fastdfs
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
8.前面就已经安装完tracker了,启动测试。
fdfs_trackerd /etc/fdfs/tracker.conf start
查看服务: ps -ef|grep fdfs
查看日志:cat /opt/fdfs/tracker/logs/trackerd.log
到此 tracker 安装完成。
安装 storage
注:如果是同一台机器则(1-3步省略)
1.把文件拷贝到 /usr/local ,解压
tar -zcxf libfastcommon
tar -zxvf FastDFS_v5.05.tar.gz
2.切换到 libfastcommon 目录
按照这个组件需要先安装它的依赖:
cd libfastcommon
yum install gcc
yum install gcc-c++
yum install gcc perl
开始安装:
./make.sh
./make.sh install
3.安装FastDFS
cd FastDFS
./make.sh
./make.sh install
4.安装后会在/etc/fdfs/ 目录生成fdfs的原始文件,切换到该目录下,复制storage.conf.sample文件:
cd /etc/fdfs
cp storage.conf.sample storage.conf
创建storage的存储目录和日志目录
mkdir -p /opt/fdfs/storage (日志目录,看自己喜欢创那都可以)
mkdir -p /data/fdfs (存储目录,看自己喜欢创那都可以)
5.修改storage.conf的配置文件
修改项:
base_path=/opt/fdfs/storage(日志目录)
group_name=group1(设定的组名)
store_path0=/data/fdfs(存储目录)
tracker_server=10.20.20.49:22122(tracker服务器ip)
http.server_port=8080
6. 拷贝fdfs命令到指定目录
cp /usr/bin/fdfs_storaged /usr/local/bin
cp /usr/bin/fdfs_monitor /usr/local/bin
7.连接目录
ln -s /usr/include/fastcommon /usr/local/include/fastcommon
ln -s /usr/include/fastdfs /usr/local/include/fastdfs
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
8.启动storage
fdfs_storaged /etc/fdfs/storage.conf start
查看storage是否启动成功 ps -ef|grep fdfs
查看日志文件:cat /opt/fdfs/stroage/logs/storaged.log
9.检验tracker 与storage 是否成关联
在安装storage 的机子上使用,出如下界面则说明已经安装成功:fdfs_monitor /etc/fdfs/storage.conf
10.上传文件测试,tracker 与storage 都可以:
上传命令:
fdfs_upload_file(上传命令) 工具 要上传的文件
fdfs_upload_file /etc/fdfs/client.conf /usr/local/E.........82.png
先在tracker上:
然后在storage上:
验证完成,只是访问不到文件,需要整合nginx 代理。
安装tracker 与nginx 结合(为了能够http访问到文件服务器的文件),所以需要与代理相结合。
安装nginx:
确保依赖安装
yum install –y openssl-devel pcre-devel zlib-devel
yum install gd-devel
1.把以下文件拷贝到/usr/local/,解压相关文件
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
2.切换到 nginx-1.8.0,执行以下命令:
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src --add-module=/usr/local/ngx_cache_purge-2.3
make
make install
3.配置mod_fastdfs.conf(与nginx集成的关键步骤)
把/usr/local/fastdfs-nginx-module/src 目录下的 mod_fastdfs.conf拷贝到 /etc/fdfs/
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
否则启动nginx 报错:
ERROR - file: shared_func.c, line: 960, open file /etc/fdfs/mod_fastdfs.conf fail, errno: 2, error info: No such file or directory
ERROR - file: /usr/local/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
4. 修改/etc/fdfs/mod_fastdfs.conf配置项
vim /etc/fdfs/mod_fastdfs.conf
修改项:
base_path=/data/fdfs
tracker_server=tracker服务器ip:22122 #修改为tracker server信息
url_have_group_name= true #改为true
store_path0=/data/fdfs #改为数据存储路径,和storage.conf一样
group_name=group1
group_count = 1
并且在文件末尾加上以下信息
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1(修改成1,默认是2,否则就配store_path1)
store_path0=/opt/fdfs/tracker
5.拷贝/usr/local/src/FastDFS/conf/ 中的http.conf和mime.type ,到/etc/fdfs/ ;
否则启动nginx报错:
ERROR - file: ini_file_reader.c, line: 315, include file "http.conf" not exists, line: "#include http.conf"
ERROR - file: /usr/local/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
cp /usr/local/src/FastDFS/conf/http.conf /etc/fdfs/
cp /usr/local/src/FastDFS/conf/mime.types /etc/fdfs/
6.配置代理信息 nginx.conf 添加如下内容
创建目录: mkdir -p /media/disk1/nginx/proxy_temp
mkdir -p /media/disk1/nginx/proxy_cache
在 http{ }中加入如下信息:
include mime.types;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_temp_path /media/disk1/nginx/proxy_temp;
proxy_cache_path /media/disk1/nginx/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;
proxy_cache_bypass $http_secret_header;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
upstream fdfs_g1 {
server 10.20.20.14:80 weight=1 max_fails=2 fail_timeout=30s; #(storage 代理服务器的地址)
}
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache content;
proxy_cache_valid 200 304 12h;
proxy_cache_key $request_uri$is_args$args;
proxy_pass http://fdfs_g1;
expires 30d;
}
location ~ /purge(/.*) {
allow all;
proxy_cache_purge content $1$is_args$args;
}
8.启动tracker nginx 看集成是否成功。
切换到 /usr/local/nginx/sbin 目录执行
./nginx
查看nginx 的日志文件 /usr/local/nginx/logs,日志无错误说明整合成功。
安装storage与nginx 结合(为了能够http访问到文件服务器的文件),所以需要与代理相结合。
前面的跟着tracker安装基本一样,唯一的区别就是nginx.conf 的配置
安装nginx:
确保依赖安装
yum install –y openssl-devel pcre-devel zlib-devel
yum install gd-devel
1.把以下文件拷贝到/usr/local/,解压相关文件
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz
tar -zxvf nginx-1.8.0.tar.gz
2.切换到 nginx-1.8.0,执行以下命令:
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src --add-module=/usr/local/ngx_cache_purge-2.3
make
make install
3.配置mod_fastdfs.conf(与nginx集成的关键步骤)
把/usr/local/fastdfs-nginx-module/src 目录下的 mod_fastdfs.conf拷贝到 /etc/fdfs/
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
4. 修改/etc/fdfs/mod_fastdfs.conf配置项
vim /etc/fdfs/mod_fastdfs.conf
修改项:
base_path=/data/fdfs
tracker_server=tracker服务器ip:22122 #修改为tracker server信息
url_have_group_name= true #改为true
store_path0=/data/fdfs #改为数据存储路径,和storage.conf一样
group_name=group1
group_count = 1
并且在文件末尾加上以下信息:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1 (修改成1,默认是2,否则就配store_path1)
store_path0=/data/fdfs(storage 的存储目录)
5.链接storage存储目录文件
ln -s /data/fdfs/data /data/fdfs/data/M00
6.拷贝/usr/local/src/FastDFS/conf/ 中的http.conf和mime.type ,到/etc/fdfs/ 否则启动nginx报错:
cp /usr/local/src/FastDFS/conf/http.conf /etc/fdfs/
cp /usr/local/src/FastDFS/conf/mime.types /etc/fdfs/
如果报 ERROR - file: ini_file_reader.c, line: 315, include file "http.conf" not exists, line: "#include http.conf"
ERROR - file: /usr/local/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
则到/etc/fdfs/http.conf文件中 注释include http.conf 即可
7.配置代理信息 nginx.conf 添加如下内容即可,如需更多配置请自行研究:
location ~/group1/M00 {
root /opt/fdfs/data;(stroage的存储目录)
ngx_fastdfs_module;
}
8.启动storage nginx 看集成是否成功。
切换到 /usr/local/nginx/sbin 目录执行
./nginx
查看nginx 的日志文件 /usr/local/nginx/logs
storage 与nginx 整合成功。
10.安装完成,查看刚才的上传的文件是否可以访问,则验证完成:
访问tracker的代理(博主采用的是默认80端口),其实最终访问的是storage的代理。
访问storage的代理:
则安装成功!