欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-04-03 22:41:05
...

基于分布式文件系统的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之文件排重(四)

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之文件排重(四)
基于分布式文件系统的fastDFS之文件排重(四)
基于分布式文件系统的fastDFS之文件排重(四)
基于分布式文件系统的fastDFS之文件排重(四)
基于分布式文件系统的fastDFS之文件排重(四)

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之文件排重(四)
基于分布式文件系统的fastDFS之文件排重(四)
基于分布式文件系统的fastDFS之文件排重(四)

3)安装fastDHT

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

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

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

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

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

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

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之文件排重(四)

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

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

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

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

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之文件排重(四)
129服务器上终端日志输出
基于分布式文件系统的fastDFS之文件排重(四)
139服务器上终端日志输出
基于分布式文件系统的fastDFS之文件排重(四)
149服务器上终端日志输出
基于分布式文件系统的fastDFS之文件排重(四)

4)检查集群信息

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

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

fdhtd /etc/fdht/fdhtd.conf -h

基于分布式文件系统的fastDFS之文件排重(四)
119服务器上终端日志输出
基于分布式文件系统的fastDFS之文件排重(四)
129服务器上终端日志输出
基于分布式文件系统的fastDFS之文件排重(四)
139服务器上终端日志输出
基于分布式文件系统的fastDFS之文件排重(四)
149服务器上终端日志输出
基于分布式文件系统的fastDFS之文件排重(四)

6)上传文件并测试

排重前,多次上传同一个文件,如下截图
基于分布式文件系统的fastDFS之文件排重(四)
排重后,多次上传同一个文件,如下截图
基于分布式文件系统的fastDFS之文件排重(四)
119服务器
基于分布式文件系统的fastDFS之文件排重(四)
129服务器
基于分布式文件系统的fastDFS之文件排重(四)

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配置

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

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为检测排重服务

相关标签: 存储