1.安装libfastcommon
libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境,安装即可 。
① 下载libfastcommon
# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
② 解压
# tar -zxvf V1.0.7.tar.gz
# cd libfastcommon-1.0.7
③ 编译、安装
# ./make.sh
# ./make.sh install
④ libfastcommon.so 安装到了/usr/lib64/libfastcommon.so,但是FastDFS主程序设置的lib目录是/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.安装fastdfs
① 下载FastDFS
# wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
② 解压
# tar -zxvf V5.05.tar.gz
# cd fastdfs-5.05
③ 编译、安装
# ./make.sh
# ./make.sh install
④ 默认安装方式安装后的相应文件与目录
A.启动命令:/etc/init.d/{fdfs_storaged,fdfs_trackerd}
B.默认配置文件:/etc/fdfs/{client.conf.sample,storage.conf.sample,tracker.conf.sample}
c.命令工具在 /usr/bin/ 目录中:
但是 FastDFS 服务启动脚本(/etc/init.d/{fdfs_storaged,fdfs_trackerd})设置的 bin 目录是 /usr/local/bin, 但实际命令安装在 /usr/bin/ 下,需要添加软链接:
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/fdfs_storaged /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
3.添加tracker配置信息
① cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
修改配置文件:
disabled=false
bind_addr=
port=22122
connect_timeout=30
network_timeout=60
base_path=/app/fastdfs/tracker
max_connections=256
accept_threads=1
work_threads=16
store_lookup=0
store_group=G1
store_server=1
store_path=0
download_server=0
reserved_storage_space = 10%
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval = 10
check_active_interval = 120
thread_stack_size = 64KB
storage_ip_changed_auto_adjust = true
storage_sync_file_max_delay = 86400
storage_sync_file_max_time = 300
use_trunk_file = false
slot_min_size = 256
slot_max_size = 16MB
trunk_file_size = 64MB
trunk_create_file_advance = false
trunk_create_file_time_base = 02:00
trunk_create_file_interval = 86400
trunk_create_file_space_threshold = 20G
trunk_init_check_occupying = false
trunk_init_reload_from_binlog = false
trunk_compress_binlog_min_interval = 0
use_storage_id = false
storage_ids_filename = storage_ids.conf
id_type_in_filename = ip
store_slave_file_use_link = false
rotate_error_log = false
error_log_rotate_time=00:00
rotate_error_log_size = 0
log_file_keep_days = 0
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.server_port=8080
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.html
② 创建tracker基础数据目录,即base_path对应的目录:
mkdir -pv /app/fastdfs/tracker
③ 启动tracker
/usr/bin/fdfs_trackerd /etc/fdfs/tracker start
④查看 FastDFS Tracker 是否已成功启动 ,22122端口正在被监听,则算是Tracker服务安装成功。
# netstat -unltp|grep 22122
关闭Tracker命令:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker stop
⑦tracker server 目录及文件结构
Tracker服务启动成功后,会在base_path下创建data、logs两个目录。
3.fastDHT安装
由于FastDFS本身不能对重复上传的文件进行去重,而FastDHT可以做到去重。FastDHT是一个高性能的分布式哈希系统,它是基于键值对存储的,而且它需要依赖于Berkeley DB作为数据存储的媒介,同时需要依赖于libfastcommon。
2.安装及配置:
1)下载FastDHT
FastDHT:FastDHT_v1.23.tar.gz
2).由于libfastcommon在安装FastDFS时已经安装过,不需再安装。
3)下载Berkeley DB,最新版本下载地址:
http://www.oracle.com/technetwork/database/database-technologies/berkeleydb/downloads/index.html
Berkeley DB:db-6.1.19.tar.gz
4)安装Berkeley DB,将db-6.1.19.tar.gz拷贝到/usr/local目录下。
5)解压:
tar -zxvf db-6.1.19.tar.gz
6)进入build-unix目录:
cd /usr/local/6.1.19/build_unix/
7)执行命令:
../dist/configure --prefix=/usr/local/db-6.1.19
make
make install
8)DB安装完毕,会在/usr/local目录下生成目录db-6.1.19
安装过程可能报错:
解决方法: yum install libevent* -y 重新编译
9)安装FastDHT,将FastDHT_v1.23.tar.gz拷贝到/usr/local目录下,解压:
tar xf FastDHT_v1.23.tar.gz
10)进入 FastDHT_v1.23目录,修改make.sh文件,修改:
CFLAGS=’-Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/usr/local/db-6.1.19/include/ -L/usr/local/db-6.1.19/lib/’
字体加黑部分为要加入的内容。
11)进入 FastDHT_v1.23目录,编译安装:
cd /usr/local/ FastDHT_v1.23r/
./make.sh
./make.sh install
12).安装成功后fastdht被安装在/etc/fdht目录下,生成3个配置文件
fdht_client.conf
fdhtd.conf
fdht_servers.conf
13)配置FastDHT,创建fastdht目录:
mkdir /opt/fastdht
14)修改/etc/fdht/目录下的配置文件fdht_client.conf,依次修改如下内容:
connect_timeout=3
network_timeout=60
keep_alive=1
base_path=/opt/fastdht
log_level=info
use_proxy=0
proxy_addr=127.0.0.1
proxy_port=12200
#include /etc/fdht/fdht_servers.conf
15)修改/etc/fdht/目录下的配置文件fdht_servers.conf,依次修改如下内容:
group_count = 1
group0 = 192.168.150.46:11411 #fdht安装ip的地址
group0 = 192.168.150.47:11411 #fdht安装ip的地址
16)修改/etc/fdht/目录下的fdhtd.conf文件,依次修改如下内容:
disabled=false
bind_addr=
port=11411
network_timeout=60
base_path=/opt/fastdht #目录需手动创建
max_connections=256
max_threads=32
max_pkg_size=64KB
min_buff_size=64KB
store_type = BDB
cache_size = 64MB
db_prefix = db
page_size = 4096
db_type = btree
mpool_init_capacity = 10000
mpool_load_factor = 0.75
mpool_clear_min_interval = 30
log_level=debug
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval=10
sync_db_time_base=00:00
sync_db_interval=86400
write_to_binlog=1
sync_binlog_buff_interval=60
clear_expired_time_base=04:00
clear_expired_interval=86400
db_dead_lock_detect_interval=1000
compress_binlog_time_base=02:00
compress_binlog_interval=86400
thread_stack_size=1MB
if_alias_prefix=
#include /etc/fdht/fdht_servers.conf -> (本行前有#表示打开,如果想关闭此选项,则应该为##开头)
17)配置/etc/fdfs/目录下的storage.conf文件,依次修改如下内容-----(后续安装strage的时候需要修改):
#是否检测上传文件已经存在。如果已经存在,则建立一个索引链接以节省磁盘空间
check_file_duplicate=1
#当上个参数设定为1时 , 在FastDHT中的命名空间
key_namespace=FastDFS
#长连接配置选项,如果为0则为短连接 1为长连接
keep_alive=1
#此处特别需要注意配置
#include /etc/fdht/fdht_servers.conf 此处是strage配置文件配置信息
18).执行如下命令:
cp /usr/local/db-6.1.19/lib/libdb-6.0.so /usr/lib/
cp /usr/local/db-6.1.19/lib/libdb-6.0.so /usr/lib64/
19.启动FastDHT:
fdhtd /etc/fdht/fdhtd.conf
验证时需要安装完成strage才能配合测试!
20.测试,通过客户端命令测试上传:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/test.png
21.上传成功后返回路径,查看storage存储对应存储路径,发现返回的为一个软链接,之后每次重复上传的haul都是返回一个指向第一次上传的文件的软链接。也就保证了文件只保存了一份。需要说明的是,FastDFS不会返回原始文件的索引,返回的全部都是软链接,当所有的软链接都被删除的时候,原始文件也会从FastDFS中被删除。
目前位置安装完成:tracker和fdhtd,下面需要安装strage!