环境:
CentOS 7
FastDFS 5.05
Nginx 1.10
fastdfs-nginx-module_v1.16
libfastcommon-1.0.7
libevent-2.0.21-stable
pcre-8.35.tar.gz
单机启动一个Tracker和三个Storage
安装支持模块:
yum install openssl openssl-devel
安装libevent-2.0.21-stable
tar zxvf libevent-2.0.21-stable.tar.gz ./configure make && make install
安装libfastcommon-1.0.7.tar.gz
tar zxvf libfastcommon-1.0.7.tar.gz ./make.sh ./make.sh install
安装FastDFS
tar zxvf FastDFS_v5.05.tar.gz ./make.sh ./make.sh install
配置文件目录:/etc/fdfs/
配置tracker和storage
tracker:
vim /etc/fdfs/tracker.conf
base_path=/data/local/fdfs_data/tracker #确保目录存在
storage:
vim /etc/fdfs/storage.conf
group_name=group1
http.server_port=8123
base_path=/data/local/fdfs_data/storage #确保目录存在 store_path0=/data/local/fdfs_data/storage/images/data #确保目录存在,存放图片目录 tracker_server=192.168.153.10:22122 #tracker服务地址,这里就是本机地址
由于要启动三个storage,所以复制storage.conf二份,三份配置文件分别为:storage.conf、storage1.conf、storage2.conf
修改storage1.conf和storage2.conf:
storage1.conf:
group_name=group2
http.server_port=8123
base_path=/data/local/fdfs_data/storage1 #确保目录存在 store_path0=/data/local/fdfs_data/storage1/images/data #确保目录存在,存放图片目录 tracker_server=192.168.153.10:22122 #tracker服务地址,这里就是本机地址
storage2.conf:
group_name=group2
http.server_port=8123
base_path=/data/local/fdfs_data/storage2 #确保目录存在
store_path0=/data/local/fdfs_data/storage2/images/data #确保目录存在,存放图片目录
tracker_server=192.168.153.10:22122 #tracker服务地址,这里就是本机地址
启动tracker:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
启动三个storage:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage1.conf
/usr/bin/fdfs_storaged /etc/fdfs/storage2.conf
初次启动storage时会稍慢。
配置client
vim /etc/fdfs/client.conf:
base_path=/data/local/fdfs_data/client #确保目录存在 tracker_server=192.168.153.10:22122
http.server_port=8123
拷贝mime.types、http.conf
cp FastDFS/conf/mime.types /etc/fdfs/
cp FastDFS/conf/http.conf /etc/fdfs/
修改fastdfs-nginx-module/src/config,去掉local:
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
否在在安装nginx时会报错:
致命错误:fdfs_define.h:没有那个文件或目录 #include "fdfs_define.h"
安装nginx:
tar zxvf nginx-1.10.3.tar.gz ./configure --prefix=/data/local/nginx --with-http_gzip_static_module --with-http_ssl_module --with-http_stub_status_module --add-module=/data/package/fastdfs-nginx-module/src/ --with-pcre=/data/package/pcre-8.35 make make install
拷贝模块文件:
cp fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
修改mod_fastdfs.conf:
将 tracker_server=tracker:22122 改为: tracker_server=192.168.0.9:22122 #tracker的实际地址
nginx.conf
listen 8123 location /group1/M00 { root /data/local/fdfs_data/storage/images; ngx_fastdfs_module; }
启动nginx...
设置伪集群:
vim mod_fastdfs.conf:
base_path=/data/local/fdfs_data/fdfs-nginx-module tracker_server=192.168.153.9:22122 group_name=group1/group2/group3 store_path0=/data/local/fdfs_data/storage/images/data group_count = 3 [group1] group_name=group1 storage_server_port=23000 store_path_count=1 store_path0=/data/local/fdfs_data/storage/images [group2] group_name=group2 storage_server_port=23001 store_path_count=1 store_path0=/data/local/fdfs_data/storage1/images [group3] group_name=group3 storage_server_port=23002 store_path_count=1 store_path0=/data/local/fdfs_data/storage3/images
重启服务:
/usr/bin/fdfs_trackered /etc/fdfs/tracker.conf restart /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart /usr/bin/fdfs_storaged /etc/fdfs/storage1.conf restart /usr/bin/fdfs_storaged /etc/fdfs/storage2.conf restart
/data/local/nginx/sbin/nginx -s reload
上传图片测试:
/usr/bin/fdfs_test /etc/fdfs/client.conf upload /data/package/111.jpg
通过结果:
This is FastDFS client test program v5.05 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. [2017-04-21 17:58:52] DEBUG - base_path=/data/local/fdfs_data/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0 tracker_query_storage_store_list_without_group: server 1. group_name=, ip_addr=192.168.153.9, port=23000 group_name=group1, ip_addr=192.168.153.9, port=23000 storage_upload_by_filename group_name=group1, remote_filename=M00/00/00/wKiZCVj519yAMVOkAAA_xFjVVbc000.jpg source ip address: 192.168.153.9 file timestamp=2017-04-21 17:58:52 file size=16324 file crc32=1490376119 example file url: http://192.168.153.9:8123/group1/M00/00/00/wKiZCVj519yAMVOkAAA_xFjVVbc000.jpg storage_upload_slave_by_filename group_name=group1, remote_filename=M00/00/00/wKiZCVj519yAMVOkAAA_xFjVVbc000_big.jpg source ip address: 192.168.153.9 file timestamp=2017-04-21 17:58:52 file size=16324 file crc32=1490376119 example file url: http://192.168.153.9:8123/group1/M00/00/00/wKiZCVj519yAMVOkAAA_xFjVVbc000_big.jpg
其中 'http://192.168.153.9:8123/group1/M00/00/00/wKiZCVj519yAMVOkAAA_xFjVVbc000_big.jpg'就是改图片通过nginx的访问地址。
PS:同一个group中的storage之间是平等的,相互备份。
查看FastDFS集群状态:
/usr/bin/fdfs_monitor /etc/fdfs/client.conf
删除storage节点,重新加入:
/usr/bin/fdfs_monitor /etc/fdfs/client.conf delete group1 192.168.153.9
删除一个组:
/usr/bin/fdfs_monitor /etc/fdfs/client.conf delete group2
删除完之后,重启tracker和storage