FastDFS去重配置FastDHT

1.简介

由于FastDFS本身不能对重复上传的文件进行去重,而FastDHT可以做到去重。FastDHT是一个高性能的分布式哈希系统,它是基于键值对存储的,而且它需要依赖于Berkeley DB作为数据存储的媒介,使用libevent做网络IO处理。同时需要依赖于libfastcommon。

本次是单机版配置,而且libfastcommon、fastDfs、ngnix都已安装完成。详细配置fastdfs单机版安装

2.软件包

  1. Berkeley DB
    下载地址:db-18.1.25.tar.gz
  2. 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依赖包,再重启服务就不报错了。

测试

自行测试即可。

结束

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章