1.概况
搭建FastDFS集群环境,以实现高可用的分布式存储。
2.安装步骤
2.1.准备工作
1.机器准备
2.下载软件:http://sourceforge.net/projects/fastdfs/files/
或http://download.csdn.net/download/chinoukin/9989029
3.安装gcc。命令:yum install make cmake gcc gcc-c++
4.安装nginx依赖包。
命令:yum install pcre pcre-devel zlib zlib-devel openssl openssl-devel
2.2.安装libfastcommon (6台机器)
1.上传libfastcommon-master.zip到/usr/local/software下
2.进行解压libfastcommon-master.zip。
命令:unzip libfastcommon-master.zip -d /usr/local/fast/
3.进入目录:cd /usr/local/fast/libfastcommon-master/
4.进行编译和安装。
命令:./make.sh
命令:./make.sh install
[root@fast1 libfastcommon-master]# ./make.sh install
mkdir -p /usr/lib64
install -m 755 libfastcommon.so /usr/lib64
mkdir -p /usr/include/fastcommon
install -m 644 common_define.h hash.h chain.h logger.h base64.h shared_func.h
pthread_func.h ini_file_reader.h os_bits.h sockopt.h sched_thread.h http_func.h md5.h
local_ip_func.h avl_tree.h ioevent.h ioevent_loop.h fast_task_queue.h fast_timer.h
process_ctrl.h fast_mblock.h connection_pool.h /usr/include/fastcommon
注意安装的路径:也就是说,我们的libfastcommon默认安装到了/usr/lib64/这个
位置。
5.进行软件创建。FastDFS主程序设置的目录为/usr/local/lib/,所以我们需要创建
/ usr/lib64/下的一些核心执行程序的软连接文件。
命令:mkdir /usr/local/lib/
命令:ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
命令:ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
命令:ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
命令:ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
2.3.安装FastDFS (6台机器)
1.进入到cd /usr/local/software下,解压FastDFS_v5.05.tar.gz文件
命令:cd /usr/local/software
命令:tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local/fast/
2.编译安装
命令:cd /usr/local/fast/FastDFS/
编译命令:./make.sh
安装命令:./make.sh install
[root@fast1 FastDFS]# ./make.sh install
mkdir -p /usr/bin
mkdir -p /etc/fdfs
cp -f fdfs_trackerd /usr/bin
if [ ! -f /etc/fdfs/tracker.conf.sample ]; then cp -f ../conf/tracker.conf
/etc/fdfs/tracker.conf.sample; fi
mkdir -p /usr/bin
mkdir -p /etc/fdfs
cp -f fdfs_storaged /usr/bin
if [ ! -f /etc/fdfs/storage.conf.sample ]; then cp -f ../conf/storage.conf
/etc/fdfs/storage.conf.sample; fi
mkdir -p /usr/bin
mkdir -p /etc/fdfs
mkdir -p /usr/lib64
cp -f fdfs_monitor fdfs_test fdfs_test1 fdfs_crc32 fdfs_upload_file fdfs_download_file
fdfs_delete_file fdfs_file_info fdfs_appender_test fdfs_appender_test1
fdfs_append_file fdfs_upload_appender /usr/bin
if [ 0 -eq 1 ]; then cp -f libfdfsclient.a /usr/lib64; fi
if [ 1 -eq 1 ]; then cp -f libfdfsclient.so /usr/lib64; fi
mkdir -p /usr/include/fastdfs
cp
-f ../common/fdfsdefine.h ../common/fdfs_global.h ../common/mime_file_parser.h ../c
ommon/fdfs_http_shared.h ../tracker/tracker_types.h ../tracker/tracker_proto.h ../tr
acker/fdfs_shared_func.h ../storage/trunk_mgr/trunk_shared.h tracker_client.h
storage_client.h storage_client1.h client_func.h client_global.h fdfs_client.h
/usr/include/fastdfs
if [ ! -f /etc/fdfs/client.conf.sample ]; then cp -f ../conf/client.conf
/etc/fdfs/client.conf.sample; fi
3.采用默认安装方式脚本文件说明
服务脚本在: /etc/init.d/fdfs_storaged /etc/init.d/fdfs_trackerd
配置文件在: /etc/fdfs/client.conf.sample /etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
命令行工具在:/usr/bin/
4.因为FastDFS服务脚本设置的bin目录为/usr/local/bin/下,但是实际我们安装在
了/usr/bin/下面。所以我们需要修改FastDFS配置文件中的路径,也就是需要修
改两个配置文件:
命令:vim /etc/init.d/fdfs_storaged
进行全局替换命令:%s+/usr/local/bin+/usr/bin
命令:vim /etc/init.d/fdfs_trackerd
进行全局替换命令:%s+/usr/local/bin+/usr/bin
2.4.配置跟踪器 (192.168.20.11,192.168.20.12)
1.进入cd /etc/fdfs/目录配置跟踪器文件,把tracker.conf.sample文件进行cope一
份:tracker.conf文件
2.修改tracker.conf
修改为自己的路径地址:base_path=/fastdfs/tracker 注意:对于tracker.conf配置文
件参数解释可以找官方文档,地址为:
http://bbs.chinaunix.net/thread-1941456-1-1.html
3.最后我们一定要创建之前定义好的目录(也就是/fastdfs/tracker):
命令:mkdir -p /fastdfs/tracker
4. 关闭防火墙:(这里以centos6为例)
vim /etc/sysconfig/iptables
添加:-A INPUT -m state –state NEW -m tcp -p tcp –dport 22122 -j ACCEPT
重启:service iptables restart
5.启动跟踪器
目录命令:cd /fastdfs/tracker/ && ll
启动tracker命令:/etc/init.d/fdfs_trackerd start
查看进程命令:ps -el | grep fdfs
停止tracker命令:/etc/init.d/fdfs_trackerd stop
6.设置开机启动跟踪器:
命令:vim /etc/rc.d/rc.local
加入配置:/etc/init.d/fdfs_trackerd start
2.5.配置FastDFS存储
(192.168.20.13,192.168.20.14, 192.168.20.15, 192.168.20.16)
注:下面的操作如果没指明机器,则是4台机器操作一致
1.进入文件目录:cd /etc/fdfs/,进行copy storage文件一份
命令:cd /etc/fdfs/
命令:cp storage.conf.sample storage.conf
2.修改group1(192.168.20.13, 192.168.20.14)的storage.conf文件
命令:vim /etc/fdfs/storage.conf
修改内容
group_name=group1
base_path=/fastdfs/storage
store_path_count=1
store_path0=/fastdfs/storage
tracker_server=192.168.20.11:22122
tracker_server=192.168.20.12:22122
http.server_port=8888
3.修改group2(192.168.20.15, 192.168.20.16)的storage.conf文件
命令:vim /etc/fdfs/storage.conf
修改内容
group_name=group2
base_path=/fastdfs/storage
store_path_count=1
store_path0=/fastdfs/storage
tracker_server=192.168.20.11:22122
tracker_server=192.168.20.12:22122
http.server_port=8888
4.创建存储目录:mkdir -p /fastdfs/storage
5.关闭防火墙:
命令:vim /etc/sysconfig/iptables
添加:-A INPUT -m state –state NEW -m tcp -p tcp –dport 23000 -j ACCEPT
重启:service iptables restart
6.启动存储(storage)
命令:/etc/init.d/fdfs_storaged start
(关闭:/etc/init.d/fdfs_storaged stop) (初次启动成功后会在/fastdbf/storage/
目录下创建 data、logs俩个目录)
7.查看FastDFS storage 是否启动成功
命令:ps -ef | grep fdfs
[root@fast3 storage]# ps -ef | grep fdfs
root 4564 1 0 02:40 ? 00:00:00 /usr/bin/fdfs_trackerd
/etc/fdfs/tracker.conf
root 5092 1 0 02:45 ? 00:00:00 /usr/bin/fdfs_storaged
/etc/fdfs/storage.conf
root 5157 1384 0 02:46 pts/0 00:00:00 grep fdfs
并且我们进入到/fastdfs/storage/data/文件夹下会看到一些目录文件(256*256),
如下: 命令:cd /fastdfs/storage/data/ && ls
[root@fast3 storage]# cd /fastdfs/storage/data/ && ls
00 09 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 90 99 A2 AB B4 BD
C6 CF D8 E1 EA F3 FC
01 0A 13 1C 25 2E 37 40 49 52 5B 64 6D 76 7F 88 91 9A A3 AC B5 BE
C7 D0 D9 E2 EB F4 FD
02 0B 14 1D 26 2F 38 41 4A 53 5C 65 6E 77 80 89 92 9B A4 AD B6 BF
C8 D1 DA E3 EC F5 fdfs_storaged.pid
03 0C 15 1E 27 30 39 42 4B 54 5D 66 6F 78 81 8A 93 9C A5 AE B7 C0
C9 D2 DB E4 ED F6 FE
04 0D 16 1F 28 31 3A 43 4C 55 5E 67 70 79 82 8B 94 9D A6 AF B8 C1
CA D3 DC E5 EE F7 FF
05 0E 17 20 29 32 3B 44 4D 56 5F 68 71 7A 83 8C 95 9E A7 B0 B9 C2
CB D4 DD E6 EF F8 storage_stat.dat
06 0F 18 21 2A 33 3C 45 4E 57 60 69 72 7B 84 8D 96 9F A8 B1 BA C3
CC D5 DE E7 F0 F9 sync
07 10 19 22 2B 34 3D 46 4F 58 61 6A 73 7C 85 8E 97 A0 A9 B2 BB C4
CD D6 DF E8 F1 FA
08 11 1A 23 2C 35 3E 47 50 59 62 6B 74 7D 86 8F 98 A1 AA B3 BC C5
CE D7 E0 E9 F2 FB
8.设置开机启动存储器
命令:vim /etc/rc.d/rc.local
加入配置:/etc/init.d/fdfs_storaged start
2.6.Storage&Nginx整合
(192.168.20.13,192.168.20.14, 192.168.20.15, 192.168.20.16)
注:下面的操作如果没指明机器,则是4台机器操作一致
1.确保fastdfs-nginxmodule_v1.16.tar.gz包在/usr/local/software/目录下。
目录命令:cd /usr/local/software/
解压命令:tar -zxvf /usr/local/software/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/
2.进入目录:cd fastdfs-nginx-module/src/
3.编辑配置文件config
命令: vim /usr/local/fast/fastdfs-nginx-module/src/config
修改内容:去掉local文件层次
ngx_addon_name=ngx_http_fastdfs_module
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024'
-DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
修改完毕为
ngx_addon_name=ngx_http_fastdfs_module
HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
CORE_LIBS="$CORE_LIBS -L/usr/local/lib -lfastcommon -lfdfsclient"
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024'
-DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'
4.nginx集成安装
首先把之前的nginx进行删除
目录命令:cd /usr/local/
删除命令:rm -rf nginx
进入到nginx目录命令:cd nginx-1.11.4 /
加入模块命令:
./configure –prefix=/usr/local/nginx –add-module=/usr/local/fast/fastdfs-nginx-module/src/
重新编译命令:make && make install
5.复制fastdfs-nginx-module中的配置文件,到/etc/fdfs目录中
copy命令:cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
6.修改group1(192.168.20.13, 192.168.20.14)的mod_fastdfs.conf 文件
命令:vim /etc/fdfs/mod_fastdfs.conf
修改内容:
base_path= /fastdfs/storage
tracker_server=192.168.20.11:22122
tracker_server=192.168.20.12:22122
group_name= group1
url_have_group_name = true
store_path_count=1
store_path0=/fastdfs/storage
group_count= 2
结尾处增加内容:
[group1]
groupname=group1
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
[group2]
groupname=group2
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
7.修改group2(192.168.20.15, 192.168.20.16)的mod_fastdfs.conf 文件
命令:vim /etc/fdfs/mod_fastdfs.conf
修改内容:
base_path= /fastdfs/storage
tracker_server=192.168.20.11:22122
tracker_server=192.168.20.12:22122
group_name= group2
url_have_group_name = true
store_path_count=1
store_path0=/fastdfs/storage
group_count= 2
结尾处增加内容:
[group1]
groupname=group1
storage_server_port=23000
store_path_count=1
storepath0=/fastdfs/storage
[group2]
groupname=group2
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
8.复制FastDFS里的2个文件,到/etc/fdfs目录中
目录命令:cd /usr/local/fast/FastDFS/conf/
Copy命令:cp http.conf mime.types /etc/fdfs/
9.创建一个软连接,在/fastdfs/storage文件存储目录下创建软连接,将其链接到实
际存放数据的目录。
命令:ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
10.修改Nginx配置文件
命令:vim /usr/local/nginx/conf/nginx.conf
修改内容为:
listen 8888;
servername localhost;
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
注意:nginx里的端口要和第五步配置FastDFS存储中的storage.conf文件配置一
致, 也就是(http.server_port=8888)
12. 最后检查防火墙,然后我们启动nginx服务
启动命令:/usr/local/nginx/sbin/nginx
2.7. tracker&Nginx整合(192.168.20.11,192.168.20.12)
注:下面的操作如果没指明机器,则是2台机器操作一致
tracker中nginx安装则只需安装一个nginx的缓存模块
1.确保ngx_cache_purge-2.3.tar.gz包在/usr/local/software/目录下。
目录命令:cd /usr/local/software/
解压命令:tar -zxvf /usr/local/software/ngx_cache_purge-2.3.tar.gz -C /usr/local/fast/
2.nginx集成安装
首先把之前的nginx进行删除
目录命令:cd /usr/local/
删除命令:rm -rf nginx
进入到nginx目录命令:cd nginx-1.11.4 /
加入模块命令:
./configure –prefix=/usr/local/nginx –add-module=/usr/local/fast/ ngx_cache_purge-2.3/
重新编译命令:make && make install
3. 修改Nginx配置文件
命令:vim /usr/local/nginx/conf/nginx.conf
编辑如下
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
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 /fastdfs/cache/nginx/proxy_cache levels=1:2
keys_zone=http-cache:500m max_size=10g inactive=30d;
proxy_temp_path /fastdfs/cache/nginx/proxy_cache/tmp;
upstream fdfs_group1 {
server 192.168.20.13:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.20.14:8888 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group2 {
server 192.168.20.15:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.20.16:8888 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
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 /group2/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_group2;
expires 30d;
}
location ~/purge(/.*) {
allow 127.0.0.1;
allow 192.168.224.0/24;
deny all;
proxy_cache_purge http-cache $1$is_args$args;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
5.创建fastdfs的nginx缓存目录
命令:mkdir –p /fastdfs/cache/nginx/proxy_cache
命令:mkdir –p /fastdfs/cache/nginx/proxy_cache/tmp
4.最后检查防火墙,然后我们启动nginx服务
启动命令:/usr/local/nginx/sbin/nginx
2.8.启动停止服务步骤总结
启动命令:
启动tracker命令:/etc/init.d/fdfs_trackerd start
查看进程命令:ps -el | grep fdfs
启动storage命令:/etc/init.d/fdfs_storaged start
查看进程命令:ps -el | grep fdfs
启动nginx命令:/usr/local/nginx/sbin/nginx
停止命令:
停止tracker命令:/etc/init.d/fdfs_trackerd stop
关闭storage命令:/etc/init.d/fdfs_storaged stop
关闭nginx命令:/usr/local/nginx/sbin/nginx -s stop