一、简介
FastDFS的最小集群安装支持两台机,本文档为了更清晰描述安装过程,使用了四台机器进行配置安装。
二、集群环境
Tracker1:192.168.7.201 -- 用于调度工作,在访问上起负载均衡的作用。
Tracker1:192.168.7.202 -- 用于调度工作,在访问上起负载均衡的作用。
group1_storage1:192.168.7.203 – 用于存储实际的文件
group1_storage2:192.168.7.204 – 用于存储实际的文件
服务架构图如下:
三、 相关软件包
包名 | 版本号 | 源地址 |
Zlib | zlib-1.2.8 | http://zlib.net/zlib-1.2.8.tar.gz |
pcre | pcre-8.36 | |
FastDFS | FastDFS_v5.01 | https://fastdfs.googlecode.com/files/FastDFS_v5.01.tar.gz |
fastdfs-nginx-module | fastdfs-nginx-module_v1.16 | https://fastdfs.googlecode.com/files/fastdfs-nginx-module_v1.16.tar.gz |
nginx | nginx-1.7.7 | http://nginx.org/download/nginx-1.7.7.tar.gz |
ngx_cache_purge | ngx_cache_purge-2.1 |
4. 安装步骤
4.1. 安装Tracker(两台服务器的tracker安装配置相同)
1. 安装
1) 将代码包(FastDFS_v5.01)复制到系统的/usr/local/src,使用tar命令解压
[root@tracker opt]# cp FastDFS_v5.01.tar.gz /usr/local/src/
[root@tracker opt]# cd /usr/local/src/
[root@tracker src]# tar -zxvf FastDFS_v5.01.tar.gz
2) 切换到解压目录中,运行make.sh,确认make成功
[root@tracker src]# cd FastDFS
[root@tracker FastDFS]# ./make.sh
3) 运行make.sh install,确认install成功
[root@tracker FastDFS]# ./make.sh install
4) 安装完成后,可执行文件在/usr/local/bin下,以fdfs开头;所有的配置文件在/etc/fdfs下
2. 配置
编辑配置目录下的tracker.conf,设置相关的信息并保存。
[root@tracker FastDFS]# vim /etc/fdfs/tracker.conf
一般只需要改动以下参数:
#启用配置文件,设置为false表示启用
disabled=false
#设置tracker的端口号
port=22122
#设置tracker的数据文件和日志目录(目录需要预先创建)
base_path=/fdfs/tracker
#设置http端口号
http.server_port=8080
3. 运行
1) 运行前,需要打开防火墙中的对应端口
2) 启动tracker,确认启动是否成功,查看端口22122是否开始监听
[root@tracker FastDFS]# /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
[root@tracker FastDFS]# netstat -apn | grep fdfs
4.2. 安装Storage
1. 安装
安装步骤与tracker服务的安装步骤一致
2. 配置
编辑配置文件目录下的storage.conf,设置相关的信息并保存
一般只需要改动以下参数
#启用配置文件
disabled=false
#组名,根据实际情况修改
group_name=group1
#设置storage的端口号
port=23000
#设置storage的数据文件和日志目录(目录需要预先创建)
base_path=/fdfs/storage
#存储路径个数,需要和store_path个数匹配
store_path_count=1
#存储路径
store_path0=/fdfs/storage
#tracker服务器的IP地址和端口号
#集群配置则把tracker服务器的IP地址和端口号逐一列出
tracker_server=192.168.7.201:22122
tracker_server=192.168.7.202:22122
#设置http端口号
http.server_port=8080
注:同一个分组中的storage的端口号必须一致。
3. 运行
1) 运行前,需要打开防火墙中的对应端口
2) 启动storage,确认启动是否成功,查看端口23000是否开始监听
[root@tracker FastDFS]# /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf restart
[root@tracker FastDFS]# netstat -apn | grep fdfs
3) 确认启动storage后,可以运行fdfs_monitor查看storage服务器是否已登记到tracker服务器
[root@storage1 FastDFS]# /usr/local/bin/fdfs_monitor /etc/fdfs/storage.conf
4.3. 安装Storage上对应的Nginx
在storage上安装nginx主要为了提供http的访问服务,同时解决group中storage的同步延迟问题
1. 安装
1) 将代码包和插件(nginx-1.7.7、fastdfs-nginx-module_v1.16、zlib-1.2.8、pcre-8.36)复制/usr/local/src内,然后使用tar命令解压
[root@storage1 src]# tar -zxvf nginx-1.7.7.tar.gz
[root@storage1 src]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
[root@storage1 src]# tar -zxvf pcre-8.36.tar.gz
[root@storage1 src]# tar -zxvf zlib-1.2.8.tar.gz
2) 切换到nginx解压目录,运行./configure进行安装前的设置
[root@storage1 src]# cd nginx-1.7.7
[root@storage1 nginx-1.7.7]# ./configure –prefix=/usr/local/nginx_storage –add-module=/usr/local/src/fastdfs-nginx-module/src –with-pcre=/usr/local/src/pcre-8.36/ --with-zlib=/usr/local/src/zlib-1.2.8
3) 运行make进行编译,确保编译成功
[root@storage1 nginx-1.7.7]# make
4) 运行make install进行安装
[root@storage1 nginx-1.7.7]# make install
5) 将FastDFS的nginx插件模块的配置文件copy到FastDFS配置文件目录
[root@storage1 nginx-1.7.7]# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
2. 配置
1) 编辑/usr/local/nginx/conf配置文件目录下的nginx.conf,添加storage存储目录信息
将server段中的listen端口号修改为8080
listen 8080;
在server段中添加:
location ~/group[1-3]/M00 {
root /fdfs/storage/data;
ngx_fastdfs_module;
}
2) 编辑/etc/fdfs配置文件目录下的mod_fastdfs.conf,设置storage信息并保存。
一般只需要改动以下几个参数
base_path=/fdfs/storage #保存日志目录
tracker_server=192.168.7.201:22122 #tracker服务器的IP地址以及端口号
tracker_server=192.168.7.202:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
group_name=group1 #当前服务器的group名
url_have_group_name = true #文件url中是否有group名
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/fdfs/storage #存储路径
http.need_find_content_type=true #从文件扩展名查找文件类型(nginx时为true)
group_count = 1 #设置组的个数
#在末尾增加分组的具体信息:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/fdfs/storage
3) 建立M00至存储目录的符号连接
[root@storage1 nginx-1.7.7]# ln -s /fdfs/storage/data /fdfs/storage/data/M00
3. 运行
先打开防火墙的对应端口
启动nginx,确认是否成功
[root@storage1 nginx-1.7.7]# /usr/local/nginx/sbin/nginx
4.4. 安装Tracker上对应的Nginx
1. 安装
1) 将代码包和插件(nginx-1.7.7)复制/usr/local/src内,然后使用tar命令解压
[root@tracker src]# tar -zxvf nginx-1.7.7.tar.gz
[root@tracker src]# tar -zxvf ngx_cache_purge-2.1.tar.gz
[root@tracker src]# tar -zxvf pcre-8.36.tar.gz
[root@tracker src]# tar -zxvf zlib-1.2.8.tar.gz
2) 切换到nginx目录,运行./configure进行安装前的设置
[root@tracker src]# cd nginx-1.7.7
[root@tracker nginx-1.7.7]# ./configure --prefix=/usr/local/nginx_tracker --add-module=/usr/local/src/ngx_cache_purge-2.1 –with-pcre=/usr/local/src/pcre-8.36 --with-zlib=/usr/local/src/zlib-1.2.8
3) 运行make进行编译,确保成功
[root@tracker nginx-1.7.7]# make
4) 运行make install进行安装
[root@tracker nginx-1.7.7]# make install
2. 配置
编辑/usr/local/nginx/conf配置文件目录下的nginx.conf,设置负载均衡以及缓存。
worker_processes 4; #根据CPU核心数而定
events {
worker_connections 65535; #最大链接数
use epoll; #新版本的Linux可使用epoll加快处理性能
}
http {
#设置缓存参数
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
sendfile on;
tcp_nopush on;
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 /var/cache/nginx/proxy_cache levels=1:2 keys_zone=http-cache:500m max_size=10g inactive=30d;
proxy_temp_path /var/cache/nginx/proxy_cache/tmp;
#设置group1的服务器
upstream fdfs_group1 {
server 192.168.7.203:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.7.204:8080 weight=1 max_fails=2 fail_timeout=30s;
}
server {
#设置服务器端口
listen 8080;
#设置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;
proxy_pass
http://fdfs_group1
;
expires 30d;
}
#设置清除缓存的访问权限
location ~ /purge(/.*) {
allow 127.0.0.1;
allow 192.168.7.0/24;
deny all;
proxy_cache_purge http-cache $1$is_args$args;
}
3. 运行
先在防火墙中打开Nginx监听的端口,然后启动nginx,确保启动成功
5. 测试
此处测试是使用fastdfs自带的客户端进行测试
配置/etc/fdfs/client.conf文件,修改以下参数
#日志存放路径
base_path=/fdfs/tracker
#tracker服务器IP地址和端口号
tracker_server=192.168.7.202:22122
#tracker服务器的http端口号
http.tracker_server_port=8080
使用/usr/local/bin/fdfs_upload_file上传一个文件,程序会自动返回文件的URL
[root@tracker nginx-1.7.7]# /usr/local/bin/fdfs_upload_file /etc/fdfs/client.conf /mnt/monk.jpg
group1/M00/00/00/rBABz1MzKG6Ad_hBAACKLsUDM60560.jpg
然后使用浏览器访问:http://192.168.7.202/group1/M00/00/00/rBABz1MzKG6Ad_hBAACKLsUDM60560.jpg
6. 异常处理
错误信息:connect to 192.168.7.201:22122 fail, errno: 113, error info: No route to host
处理方法:服务间网络络不通造成,检查对应端口是否已经打开
错误信息:tracker_query_storage fail, error no: 2, ...
处理方法:停止所有服务,优先启动tracker服务后,再启动storage服务