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依賴包,再重啓服務就不報錯了。
測試
自行測試即可。