1.简介
由于FastDFS本身不能对重复上传的文件进行去重,而FastDHT可以做到去重。FastDHT是一个高性能的分布式哈希系统,它是基于键值对存储的,而且它需要依赖于Berkeley DB作为数据存储的媒介,使用libevent做网络IO处理。同时需要依赖于libfastcommon。
本次是单机版配置,而且libfastcommon、fastDfs、ngnix都已安装完成。详细配置fastdfs单机版安装
2.软件包
- Berkeley DB
下载地址:db-18.1.25.tar.gz- fastDHT
下载地址:FastDHT_v1.23.tar.gz
这里统一将文件上传到/root/目录
下
3.安装
安装 Berkeley DB
# 解压安装包
tar -xzvf db-18.1.25.tar.gz -C /usr/local/src/
# 进入build_unix目录,必须是这个目录
cd /usr/local/src/db-18.1.25/build_unix
# 执行命令(一定要是进入上面的目录后,使用相对路径执行命令):
../dist/configure --prefix=/usr/local/db-18.1.25
# 编译并安装
make && make install
# 删除解压后的文件夹
rm -rf /usr/local/src/db-18.1.25/
# 查看安装下目录结构
ls /usr/local/db-18.1.25/
安装 FastDHT
# 安装依赖
yum -y install libevent libevent-devel
# 且要保证安装了libfastcommon
# 解压到/usr/local/src/
tar -zxvf FastDHT_v1.23.tar.gz -C /usr/local/src/
cd /usr/local/src/FastDHT
# 编译安装
./make.sh
./make.sh install
安装成功后fastdht被安装在/etc/fdht目录下,生成3个配置文件
cd /etc/fdht/ && ls
fdht_client.conf
# 配置FastDHT,创建fastdht目录
mkdir -p /fastdfs/fastdht
# 修改/etc/fdht/目录下的配置文件fdht_client.conf
vi /etc/fdht/fdht_client.conf
#(该目录必须是已经存在的)
base_path=/fastdfs/fastdht
keep_alive=1
##(本行前有#表示打开,如果想关闭此选项,则应该为##开头)
#include /etc/fdht/fdht_servers.conf
fdht_servers.conf
# 修改/etc/fdht/目录下的配置文件fdht_servers.conf
vi /etc/fdht/fdht_servers.conf
group_count = 1
group0 = 192.168.1.105:11411
fdhtd.conf
# 修改/etc/fdht/目录下的fdhtd.conf
vi /etc/fdht/fdhtd.conf
port=11411
#(该目录必须是已经存在的,前面已经创建过了)
bash_path= /fastdfs/fastdht
##(本行前有#表示打开,如果想关闭此选项,则应该为##开头)
#include /etc/fdht/fdht_servers.conf
storage.conf
# 配置/etc/fdfs/目录下的storage.conf
vi /etc/fdfs/storage.conf
#是否检测上传文件已经存在。如果已经存在,则建立一个索引链接以节省磁盘空间
check_file_duplicate=1
#当上个参数设定为1时 , 在FastDHT中的命名空间
key_namespace=FastDFS
#长连接配置选项,如果为0则为短连接 1为长连接
keep_alive=1
#此处特别需要注意配置,## 开头才是注释
#include /etc/fdht/fdht_servers.conf
# 拷贝库文件
cp /usr/local/db-18.1.25/lib/libdb-18.so /usr/lib/
cp /usr/local/db-18.1.25/lib/libdb-18.so /usr/lib64/
#开放端口11411
firewall-cmd --zone=public --add-port=11411/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
启动FastDHT
fdhtd /etc/fdht/fdhtd.conf restart
如果启动报错(未加载库文件):
解决方法:
# 重新加载
ldconfig
ldd /usr/local/bin/fdhtd
重新启动服务
fdhtd /etc/fdht/fdhtd.conf restart
查看是否成功
注:如果未关闭防火墙,记得开放端口
# 安装netstat命令
yum install net-tools
netstat -ntlp
看到如下图,则成功
#重启一下fdfs_trackerd和fdfs_storaged服务,便于后面的测试:
如果启动服务报错(这是个大坑,能查到的资料有限):
解决办法:
因为是库文件受到损坏导致的,所以需要把库文件删除后再重新安装一遍。
rm -rf /usr/lib64/libfastcommon.so
rm -rf /usr/lib/libfastcommon.so
rm -rf /usr/local/lib/libfastcommon.so.1
rm -rf /usr/local/libfastcommon
然后重新解压安装一次libfastcommon依赖包,再重启服务就不报错了。
测试
自行测试即可。