FastDHT的安装与配置

FastDHT是一个高性能的分布式哈希系统,它是基于键值对存储的,而且它需要依赖于Berkeley DB作为数据存储的媒介,同时需要依赖于libfastcommon。

FastDHT集群由一个或者多个组 group组成,同组服务器上存储的数据是相同的,数据同步只在组的服务器之间进行;组内各个服务是对等的,对数据进行存取时,可以根据 key的hash值来决定使用哪台机器。

  • 安装Berkeley DB

在安装FastDHT之前,需要首先安装Berkeley DB,也需要安装libfastcommon,不过这安装FastDFS时已经安装了libfastcommon,所以这里省略。

下载压缩包(不加--no-proxy会导致下载时报503,同时该下载需要账户密码,所以这里也要提供)

sudo wget --no-proxy [email protected] --http-passwd=XXX http://download.oracle.com/otn/berkeley-db/db-4.7.25.tar.gz

解压下载的压缩包

sudo tar -zxvf db-4.7.25.tar.gz

进入目录

cd db-4.7.25/build_unix

验证安装环境(安装到了/usr目录下)

sudo ../dist/configure --prefix=/usr

编译,从Makefile中读取指令,然后编译

sudo make

安装,从Makefile中读取指令,安装到指定位置

sudo make install

  • 安装FastDHT

下载FastDHT安装包

sudo wget http://sourceforge.net/projects/fastdht/files/FastDHT%20server%20and%20php%20ext/FastDHT%20Server%20Source%20Code%20V2.01/FastDHT_v2.01.tar.gz/download

解压

sudo tar –zxvf download

cd FastDHT

编译之前需要修改make.sh

sudo vi make.sh

文件中的

CFLAGS='-Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE'

修改为

CFLAGS='-Wall -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -I/usr/include/ -L/usr/lib/'

(-I/usr/include/ -L/usr/lib/)这里对应上面Berkeley的安装目录

sudo ./make.sh

sudo ./make.sh install

  • 配置FastDHT

先确认目录/data/fastdht/已创建,如果没有创建,执行以下命令创建目录:

sudo mkdir -p /data/fastdht

配置fdht_client.conf文件

cd /etc/fdht

sudo vi fdht_client.conf

配置fdht_servers.conf文件

sudo vi fdht_servers.conf

配置fdhtd.conf文件

sudo vi fdhtd.conf

FastDHT的安装与配置_第1张图片

上面只需要修改base_path就可以了,其他保持默认即可。

配置storage.conf文件

cd ../fdfs

sudo vi storage.conf

FastDHT的安装与配置_第2张图片

上面的配置信息在storage.conf文件的稍下面。

  • 启动FastDHT

安装好之后,首先需要在防火墙中打开端口(11411)。

vi /etc/sysconfig/iptables

添加如下端口行:

## FastDHT Port

-A INPUT -m state --state NEW -m tcp -p tcp --dport 11411 -j ACCEPT

修改之后重启防火墙:

sudo service iptables restart

之后,就可以直接启动FastDHT了。

sudo /usr/local/bin/fdhtd /etc/fdht/fdhtd.conf

可以监控11411端口号的使用情况,确认是否启动成功。

sudo netstat –unltp | grep 11411

最好配置为开机启动:

vi /etc/rc.local

添加内容:

/usr/local/bin/fdhtd /etc/fdht/fdhtd.conf

 

  • 问题列表

  • FastDHT启动之后,日志正常显示,没有报错,但是11411端口没有启动成功。

这种情况一般是因为FastDHT依赖的动态库出错导致的。FastDHT在安装之前安装了Berkeley DB,这是FastDHT所依赖的,在安装FastDHT之后,可通过命令 ldd /usr/local/bin/fdhtd查看其依赖的动态库,如图:

FastDHT的安装与配置_第3张图片

若出现如图情况,则表示FastDHT安装正常,启动能够成功,若libdb-4.7.so(应该指向Berkeley DB的库路径)指向的是/lib64/libdb-5.3.so,则是由于安装FastDHT前没有修改make.sh文件,FastDHT并没有在安装时找到已经安装的Berkeley DB库,所以默认找到了/lib64目录下。这种情况下,可以将/usr/lib/libdb-4.7.so(Berkeley DB库的路径)复制到/lib64目录下并覆盖掉libdb-5.3.so,即sudo cp /usr/lib/libdb-4.7.so /lib64/libdb-5.3.so,覆盖之后FastDHT能够正常启动,但是这会导致系统原有的一些命令不能正常执行,比如yum等。

若出现libdb-4.7.so出现not found的情况,则应该是Berkeley DB安装在了非/usr目录下,FastDHT安装时也没有指定动态库的路径,此时可以建立动态库的链接库,如下:

sudo ln -s /usr/local/dbd/lib/libdb-4.7.so /usr/lib/libdb-4.7.so

sudo ln -s /usr/local/dbd/lib/libdb-4.7.so /usr/lib64/libdb-4.7.so

之后,重新使用ldd命令查看动态库,若仍然是not found,则使用命令make clean删除FastDHT,重新执行make和make install进行安装。

  • FastDHT报错日志

ERROR - file: func.c, line: 332, local host does not belong to any group, program exit!

检查/etc/fdht中的fdht_servers.conf文件中的group的IP是否准确。

你可能感兴趣的:(FastDFS,FastDHT,Berkeley,DB)