基于分布式文件系统的fastdfs之文件排重(四)

接基于分布式文件系统的fastdfs-负载均衡篇(三),本篇主要讲解fastdfs的文件去重

文件去重/文件排重-fastdht

1、软件列表及下载地址

下载Berkeleydb

wget http://download.oracle.com/berkeley-db/db-5.2.28.tar.gz

下载Libevent

wget https://github.com/libevent/libevent/releases/download/release-2.1.11-stable/libevent-2.1.11-stable.tar.gz

下载FastDHT

wget https://codeload.github.com/happyfish100/fastdht/zip/master

2、安装包路径:/root/pkg目录下

基于分布式文件系统的fastdfs之文件排重(四)_第1张图片

3、安装依赖及fastDHT

1)安装hash数据库FastDHT的依赖库

step1:解压

cd /root/pkg/ && tar -xf db-5.2.28.tar.gz

step2:编译并安装

cd db-5.2.28/build_unix/ && …/dist/configure --prefix=/usr/local/db-5.2.28
make && make install # make -j 4 加快编译速度

step3:安装过程截图

基于分布式文件系统的fastdfs之文件排重(四)_第2张图片
基于分布式文件系统的fastdfs之文件排重(四)_第3张图片
基于分布式文件系统的fastdfs之文件排重(四)_第4张图片
基于分布式文件系统的fastdfs之文件排重(四)_第5张图片
在这里插入图片描述

2)安装libevent

step1:解压
cd /root/pkg 
tar -xf libevent-2.1.11-stable.tar.gz 
step2:编译并安装
cd libevent-2.1.11-stable && ./configure --prefix=/usr/local/libevent-2.1.11
make && make install  #make -j 4 可以加快编译
step3:安装过程截图

基于分布式文件系统的fastdfs之文件排重(四)_第6张图片
基于分布式文件系统的fastdfs之文件排重(四)_第7张图片
基于分布式文件系统的fastdfs之文件排重(四)_第8张图片

3)安装fastDHT

step1:解压
cd /root/pkg/
unzip fastdht-master.zip
step2:编译安装
cd fastdht-master
./make.sh
./make.sh install
step3:安装过程截图

基于分布式文件系统的fastdfs之文件排重(四)_第9张图片
基于分布式文件系统的fastdfs之文件排重(四)_第10张图片
基于分布式文件系统的fastdfs之文件排重(四)_第11张图片

step4:安装后生成的配置文件路径(/etc/fdht/),没有fdhtd.conf 则需要从源码包中拷贝

在这里插入图片描述

step5:安装后生成的fdh的命令(whereis fdhtd,没有此命令的话,需要手动去拷贝)
ls -l /usr/local/bin/fdh*
cp -p /root/pkg/fastdht-master/init.d/fdhtd  /usr/local/bin/

基于分布式文件系统的fastdfs之文件排重(四)_第12张图片

4、配置FastDHT

1)cp命令拷贝fdhtd.conf #有的话,无需拷贝

cp -p /root/pkg/fastdht-master/conf/fdhtd.conf  /etc/fdht/ 

2)编辑配置文件

step1:编辑fdhtd.conf文件
vim /etc/fdht/fdhtd.conf	
port=11411  #fdhtd的服务端口号
base_path=/u01/fastdht  #fdhtd的目录
#include /etc/fdht/fdht_servers.conf(本行前有#表示打开,如果想关闭此选项,则应该为##开头)

基于分布式文件系统的fastdfs之文件排重(四)_第13张图片

step2:编辑fdht_servers.conf
vim /etc/fdht/fdht_servers.conf	
group_count = 2    #有两个group
group0 = 192.168.171.119:11411  
group0 = 192.168.171.129:11411
group1 = 192.168.171.139:11411
group1 = 192.168.171.149:11411

在这里插入图片描述

step3:编辑fdht_client.conf文件
vim /etc/fdht/fdht_client.conf
base_path=/u01/fastdht

基于分布式文件系统的fastdfs之文件排重(四)_第14张图片

step4:编辑storage.conf文件
vim /etc/fdfs/storage.conf
check_file_duplicate=1   #195行,是否检测上传文件已经存在。如果已经存在,则不存在文件内容,建立一个索引链接以节省磁盘空间)
key_namespace=FastDFS    #206行,当上个参数设定为1时,在FastDHT中的命名空间
keep_alive=1             #210行,长连接配置选项,如果为0则为短连接 1为长连接
#include /etc/fdht/fdht_servers.conf  #217行,可以通过 #include filename 方式来加载 FastDHT servers的配置;#和include之间没有空格)

3)重启fast_storage服务,查看服务的正常性

fdfs_storaged /etc/fdfs/storage.conf restart

119服务器上终端日志输出
基于分布式文件系统的fastdfs之文件排重(四)_第15张图片
129服务器上终端日志输出
基于分布式文件系统的fastdfs之文件排重(四)_第16张图片
139服务器上终端日志输出
基于分布式文件系统的fastdfs之文件排重(四)_第17张图片
149服务器上终端日志输出
基于分布式文件系统的fastdfs之文件排重(四)_第18张图片

4)检查集群信息

基于分布式文件系统的fastdfs之文件排重(四)_第19张图片

5)启动fastDHT,查看后台日志

fdhtd /etc/fdht/fdhtd.conf -h

在这里插入图片描述
119服务器上终端日志输出
基于分布式文件系统的fastdfs之文件排重(四)_第20张图片
129服务器上终端日志输出
基于分布式文件系统的fastdfs之文件排重(四)_第21张图片
139服务器上终端日志输出
基于分布式文件系统的fastdfs之文件排重(四)_第22张图片
149服务器上终端日志输出
基于分布式文件系统的fastdfs之文件排重(四)_第23张图片

6)上传文件并测试

排重前,多次上传同一个文件,如下截图
基于分布式文件系统的fastdfs之文件排重(四)_第24张图片
排重后,多次上传同一个文件,如下截图
基于分布式文件系统的fastdfs之文件排重(四)_第25张图片
119服务器
基于分布式文件系统的fastdfs之文件排重(四)_第26张图片
129服务器
基于分布式文件系统的fastdfs之文件排重(四)_第27张图片

5、问题:多次上同一个文件只能在同一个group的服务器中,无法轮询到其他group中的服务器中

1)调整storage.conf(将专门作为storage的服务器配置修改)

group_name=group1  #139和149均修改

2)调整mod_fastdfs.conf配置(将专门作为storage的服务器配置修改)

group_name=group1  #139和149均修改
group_count = 0 #并注释点对group1和group2的操作
#[group1]
#group_name=group1
#storage_server_port=23000
#store_path_count=1
#store_path0=/u01/fastdfs/fastdfs_storage
#[group2]
#group_name=group2
#storage_server_port=23000
#store_path_count=1
#store_path0=/u01/fastdfs/fastdfs_storage

3)调整fdht_servers.conf配置

在这里插入图片描述

4)停止fastdfs_storage、fastdfs_tracker、fastdfs_dht,将所有data下的数据备份

5)重启fastdfs_storage、fastdfs_tracker、fastdfs_dht服务器即可

6)多次上传同一个文件,会在所有的storage服务器下有对应的文件

6、脚本

----------------------------------------------------------------------------------------------------------
cat fn.sh
#!/bin/bash
function fn_ssh(){
for i in `cat /etc/hosts |grep test |awk '{print $1}'`
do
ssh -qn $i "$*" && [ $? -eq 0 ] && echo -e "\033[32m [ Do succuess on $i ] \033[0m" || echo -e "\033[32m [ Do fail on $i ] \033[0m"
done
}
	------------------------------------------------------------------------------------------------------
function fn_sync(){
for i in `cat /etc/hosts |grep test |awk '{print $1}'`
do
scp -r $1 $i:$1 && [ $? -eq 0 ] && echo -e "\033[32m [ Do succuess on $i ] \033[0m" || echo -e "\033[32m [ Do fail on $i ] \033[0m"
done
}
	------------------------------------------------------------------------------------------------------
function ft_status(){
fdfs_trackerd /etc/fdfs/tracker.conf $1
}
function ft_log(){
tailf /u01/fastdfs/fastdfs_tracker/logs/trackerd.log
}
	------------------------------------------------------------------------------------------------------
function fs_status(){
fdfs_storaged /etc/fdfs/storage.conf $1
}
	------------------------------------------------------------------------------------------------------
function fs_log(){
tailf /u01/fastdfs/fastdfs_storage/logs/storaged.log
}
	------------------------------------------------------------------------------------------------------
function fm_check(){
fdfs_monitor /etc/fdfs/client.conf
}
	------------------------------------------------------------------------------------------------------
function fu_file(){
fdfs_upload_file /etc/fdfs/client.conf $1
}
	------------------------------------------------------------------------------------------------------
function fh_status(){
/usr/local/bin/fdhtd /etc/fdht/fdhtd.conf  $1
}
	------------------------------------------------------------------------------------------------------
function fh_log(){
tailf /u01/fastdht/logs/fdhtd.log
}
	------------------------------------------------------------------------------------------------------
function fh_check(){
fdht_test /etc/fdht/fdht_client.conf
}

说明:
fn_ssh 为批处理执行命令
fn_sync为批处理同步命令
ft_status为启停fastdfs_tracker服务命令,同理 fs_status,fh_status一样
ft_log为fastdfs_tracker的后台日志,同理fs_log,fh_log一样
fm_check为检查fastdfs集群状态
fu_file为客户端上传文件
fh_check为检测排重服务

你可能感兴趣的:(文件系统之分布式存储)