第一步,获取源码
其中:
fastdfs-5.05.tar.gz 是包含了storage、tracker、client的主体程序;
fastdfs-client-java-master.zip client的java程序的接口;
fastdht-master.zip 可以对上传的文件去重;
fastdfs-nginx-module-master.zip fastDFS的nginx插件,用于提供http服务;
libfastcommon-master.zip 是以上程序必须的SDK。
libevent-2.0.22-stable.tar.gz是fastDFS依赖的事件驱动库。
第二步, 安装
1. 安装libevent
tar –zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable/
./configure
make
make install
2. 安装libfastcommon-master.zip
unzip libfastcommon-master.zip
cd libfastcommon-master
./make.sh
./make.sh install
3. 安装fastdfs-5.05.tar.gz
tar –zxvf fastdfs-5.05.tar.gz
cd fastdfs-5.05
./make.sh
./make.sh install
此步完成之后,应该会在/etc/fdfs里看到storage、tracker、client的配置文件。
ll /usr/bin/fdfs*会看到一些基本的可执行文件如下
4. 安装nginx扩展模块
如果将模块编译到nginx的扩展插件即可。我用nginx-1.8.0没有问题
第三步,配置
配置文件中有响应的说明,根据具体情况配置即可;
配置的必选项如下:
由于我们的最新版本 5.05版本,已经不再提供http服务,所需的http服务由nginx插件代替。所以配置文件中的##include http.conf,前面的#不需要按照网上说的去掉。
tracker.conf中
#添加tracker的日志和数据目录
base_path=/home/fastdfs/trac
storage.conf中
#添加storage的日志和数据目录
base_path=/home/fastdfs/store
#修改tracker_server为指定的tracker_server
tracker_server=192.168.15.132:22122
#修改mod_fastdfs.conf
base_path=/home/fastdfs
tracker_server=10.1.20.201:22122
tracker_server=10.1.20.204:22122
store_path0=/home/fastdfs
response_mode=proxy
url_have_group_name=true
log_filename=/opt/fastdfs.log
第四步,部署
图4.1
如图4.1,起始由lvs提供“四层”的负载均衡,后面由nginx提供“七层”的负载均衡,后面client通过tracker向storage上传内容。
图4.2
如图4.2,每一个nginx都配置多个upstream,每个upstream对应一个分组。每个upstream中的每个服务器,对应group中的每个服务器。
图4.3
如图4.3,每一个group里面的每个存储服务器由两部分组成,就是storage和nginx,如果为了节省服务器资源,可以在每个存储服务器中实现nginx的负载均衡。比如group1中的,仅仅配置group2,和group3的upstream,本身的请求由自己处理。但这样对LVS的负载均衡比较依赖。
图4.4
如图4.4,fastDFS遵循Paxos,在客户端请求上传文件,tracker选取一个服务器(storage-A的信息)给client,然后storage-A通过PUSH的方式,将文件同步到同一分组的其他服务器,实现备份和负载均衡。前面将分组中的存储服务器定义为主备,其实并不完全,因为同组的服务器之间互为主备。
优点:
系统的扩展的时候,只需要新增加“卷”就可以了。
缺点:
改用nginx做负载提供http服务之后,需要自己在nginx的配置中,配置好所有分组的所有storage。