文档章节

分布式文件系统fastdfs解析之二(配置)

yanwawa
 yanwawa
发布于 2014/06/04 17:35
字数 1994
阅读 87
收藏 4
点赞 0
评论 0

  我计划在两台服务器上安装fdfs,ip分别是:192.168.68.133(1号服务器), 192.168.68.136(2号服务器),fdfs在两台服务器上的安装部署图如下。

fdfs部署图

  1号服务器上安装tracker实例一个,storage实例2个,分别位于group1,group2两个不同的组中;2号服务器上也安装tracker实例一个,storage实例1个,这个storage和1号服务器中的其中一个storage位于同一个组中。下面给大家贴出具体配置。

  1号服务器中,我们先: vim /usr/local/fastdfs/conf/storage_ids.conf

# <id>  <group_name>  <ip_or_hostname>
100001   group1  192.168.68.133
100002   group2  192.168.68.133
100003   group1  192.168.68.136

  在这个文件中为所有存储服务器指定id, 这样可以免更换ip带来的影响,也就是说当服务器ip发生改变后只需要更改这个文件中的ip地址即可。

  编辑tracker.conf,vim /usr/local/fastdfs/conf/tracker.conf配置文件,以下仅仅列出我改过的或者我认为需要给大家说明的配置项,没有贴出的均保持配置文件中的默认值。


# the tracker server port
port=22122

# the base path to store data and log files
base_path=/var/fastdfs/tracker

# the method of selecting group to upload files
# 0: round robin
# 1: specify group
# 2: load balance, select the max free space group to upload file
store_lookup=2

# which group to upload file
# when store_lookup set to 1, must set store_group to the group name
store_group=group2

#unix group name to run this program, 
#not set (empty) means run by the group of current user
run_by_group=

#unix username to run this program,
#not set (empty) means run by current user
run_by_user=

# if use storage ID instead of IP address
# default value is false
# since V4.00
use_storage_id = true

# the max time of storage sync a file
# default value is 300 seconds
# since V2.00
storage_sync_file_max_time = 300

  现对上面列出的一些配置项进行解释:

  port:tracker服务器的端口号,如果一台服务器上要运行多个tracker实例就需要更改此端口号以避免冲突。

  base_path:tracker自身配置信息以及日志信息保存的位置,这个目录本不会占用太大的空间,但日志文件会随着使用而慢慢变大。

  store_lookup:负载分配机制,2表示选择存储空间最大的组来保存文件。

  run_by_group,run_by_user:指定运行tracker的用户组及用户,这是为了保存系统的安全,我们一般会为fdfs新建组及用户。

  use_storage_id:使用存储服务器id替代ip地址,我们刚才编辑的storage_ids.conf中指定了每个实例的id。

  storage_sync_file_max_time:同一组中的不同storate进行文件同步的时间,默认是5分钟内完成同步,你可以根据实际情况把这个值改小(改变这个值后可以观察到文件同步的效果,这个值不要设置得太小以避免造成系统同步网络压力)。

  接下来我们配置本台服务器上的storage实例,先配置storage1.conf实例,这个实例位于group1中。

  vim /usr/local/fastdfs/conf/storage1.conf,同样限于篇幅,我仅仅贴出重要配置项,其它的使用默认值。

# the name of the group this storage server belongs to
group_name=group1

# the storage server port
port=23001

# the base path to store data and log files
base_path=/var/fastdfs/storage1

# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
store_path0=/var/fastdfs/store_group1_path0

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
tracker_server=192.168.68.133:22122
tracker_server=192.168.68.136:22122

run_by_group=
run_by_user=



  现在对上面的配置项进行解释:

  group_name:本storage实例所属的组名称。

  port:storage的端口号,同一组的storage实例必须采用同样的端口号,这就是说同一组中的storage实例必须部署在不同学的机器上,因为同一台机器上的端口号不能相同。

  base_path:本storage的配置数据及运行日志文件存放的位置,和tracker中的base_path含义相同。

  store_path0:真正的用户上传文件保存的位置目录,fastDfs会在该目录下新建许多子目录,在第一次启动实例时会进行这个操作。store_path可以有多个,一般可以分配成单独的磁盘挂载点。

  tracker_server:指定本storaged的信息会注册到哪些tracker中去,故这里的tracker_server可以配置多个。

  run_by_group、run_by_user与tracker中的含义相同,不再细说。

  接下来,我们再来看本服务器上的另一个storage实例,这个实例是运行在group2中的,端口号与上面配置的那个storage是不同的,请看配置关键项:

# the name of the group this storage server belongs to
group_name=group2

# the storage server port
port=23002

base_path=/var/fastdfs/storage2

# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
store_path0=/var/fastdfs/store_group2_path0

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
tracker_server=192.168.68.133:22122

  上面配置文件中的内容和storage1.conf中的类似,只不过group_name、port不相同,两个文件的保存路径也是不同的,经过这些配置后,我们就可以启动服务实例了。

  先来启动tracker实例,先编辑启动脚本文,vim /etc/init.d/fdfs_trackerd。

#!/bin/bash
#
# fdfs_trackerd Starts fdfs_trackerd
#
#
# chkconfig: 2345 99 01
# description: FastDFS tracker server
### BEGIN INIT INFO
# Provides: $fdfs_trackerd
### END INIT INFO
# Source function library.
. /etc/init.d/functions
FastDfs='/usr/local/fastdfs'
CONF="$FastDfs/conf/tracker.conf"
if [ ! -f $CONF ]; then
  echo "file $CONF does not exist!"
  exit 2
fi
PRG="$FastDfs/bin/fdfs_trackerd"
if [ ! -f $PRG ]; then
  echo "file $PRG does not exist!"
  exit 2
fi
Stop="$FastDfs/bin/stop.sh"
if [ ! -f $Stop ]; then
  echo "file $Stop does not exist!"
  exit 2
fi
Restart="$FastDfs/bin/restart.sh"
if [ ! -f $Restart ]; then
  echo "file $Restart does not exist!"
  exit 2
fi
RETVAL=0
start() {
    echo -n $"Starting FastDFS tracker server: "
    $PRG $CONF &
    RETVAL=$?
    echo
    return $RETVAL
}
stop() {
    echo -n $"Stop FastDFS tracker server: "
    $Stop $PRG $CONF
    RETVAL=$?
    return $RETVAL
}
rhstatus() {
    status fdfs_trackerd
}
restart() {
        $Restart $PRG $CONF &
}
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    rhstatus
    ;;
  restart|reload)
    restart
    ;;
  condrestart)
    restart
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|restart|condrestart}"
    exit 1
esac
exit $?

  这篇启动脚本中,主要修改的地方是FastDfs及CONF变量参数,这两个用来指定tracker配置文件所在的位置。

  完成编辑后,使用命令:sudo /etc/init.d/fdfs_trackerd start,即可完成服务器的启动,如果启动成功你可通过netstat -lnpt查看到tracker的端口号。

  接下来,将fdfs_storaged拷贝为fdfs_storaged1,用于启动storage1实例,要修改的地方也是FastDfs及CONF参数,这两个参数用来指定storage1.conf文件的在的目录及配置文件的名称。

#!/bin/bash
#
# fdfs_storaged Starts fdfs_storaged
#
#
# chkconfig: 2345 99 01
# description: FastDFS storage server
### BEGIN INIT INFO
# Provides: $fdfs_storaged
### END INIT INFO
# Source function library.
. /etc/init.d/functions
FastDfs='/usr/local/fastdfs'
CONF="$FastDfs/conf/storage1.conf"
if [ ! -f $CONF ]; then
  echo "file $CONF does not exist!"
  exit 2
fi
PRG="$FastDfs/bin/fdfs_storaged"
if [ ! -f $PRG ]; then
  echo "file $PRG does not exist!"
  exit 2
fi
Stop="$FastDfs/bin/stop.sh"
if [ ! -f $Stop ]; then
  echo "file $Stop does not exist!"
  exit 2
fi
Restart="$FastDfs/bin/restart.sh"
if [ ! -f $Restart ]; then
  echo "file $Restart does not exist!"
  exit 2
fi
RETVAL=0
start() {
	echo -n $"Starting FastDFS storage server: "
	$PRG $CONF &
	RETVAL=$?
	echo
	return $RETVAL
}
stop() {
	echo -n $"Stop FastDFS storage server: "
	$Stop $PRG $CONF
	RETVAL=$?
	return $RETVAL
}
rhstatus() {
	status fdfs_storaged
}
restart() {
		$Restart $PRG $CONF &
}
case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  status)
  	rhstatus
	;;
  restart|reload)
  	restart
	;;
  condrestart)
  	restart
	;;
  *)
	echo $"Usage: $0 {start|stop|status|restart|condrestart}"
	exit 1
esac

exit $?

  好,该来启动storaged1实例了,命令: sudo /etc/init.d/fdfs_storaged1 start,如果是第一次启动会观察到创建存储目录的过程。

  启动storaged2实例的过程和storaged1相同,先编辑fdfs_storaged2文件,再fdfs_storaged2 start即完成。

  当1号服务器上的fdfs全部服务都成功启动后,我们可以看到如下目录结构会建立起来。

fdfs结构

  至此,1号服务器上的所有配置及服务启动工作已经完成。2号服务器的配置及服务实例启动与1号服务器基本相同,惟一需要大家要注意的是group的名称,port端口号等,要和1号服务器相“呼应”,同时,我们在2号服务器上也配置了一个tracker实例以保证高可用性。

  好了,fastDFS的配置先告一段落,下一篇我们来聊聊客户端对fastDFS的调用,除了java客户端外,还包括tengine-2.0.1服务器上访问插件的配置。

原博文链接在些,请访问刘江华的博客

© 著作权归作者所有

共有 人打赏支持
yanwawa
粉丝 3
博文 7
码字总数 8706
作品 0
成都
项目经理
【FastDFS】FastDFS分布式文件系统安装手册(单机版)

一、前言 FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用,高性能等指标。使用FastDFS很容易搭建...

qq_26545305 ⋅ 04/24 ⋅ 0

CentOS7下分布式文件系统FastDFS的安装 配置 (单节点)

背景 FastDFS是一个开源的轻量级分布式文件系统,为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,解决了大容量存储和负载均衡的问题,特别适...

botaozhao ⋅ 04/24 ⋅ 0

1Nginx+fastdfs分布式文件存储

 准备,将所需的软件传到服务器上,服务器的列表如下: fastdfs-nginx-modulev1.15.tar.gz FastDFSv4.06.tar.gz libevent-2.0.21-stable.tar.gz nginx-1.5.6.tar.gz openssl-1.0.1c.tar......

涂作权 ⋅ 2014/12/24 ⋅ 0

FastDFS分布式文件存储搭建

FastDFS分布式文件存储,具体介绍不在阐述,有很多相关的资料介绍。这里描述一下FastDFS存储应用的搭建过程: 一、环境: 1、操作系统 :centos6.5 2、FastDFS版本: 5.0.8 3、Nginx版本: ...

菜鸟早起 ⋅ 06/12 ⋅ 0

Mavn 项目 引入第三方jar包 导致ClassNotFoundException

案例 我有一个Maven构建的项目,项目模块之间有依赖关系,我需要用到一个本地的jar包,而该jar包不能通过配置pom.xml文件从远程仓库自动下载,于是我直接导入该jar包到其中一个项目,不通过p...

Dylan1009 ⋅ 05/22 ⋅ 0

Ubuntu 14.04下部署FastDFS 5.08+Nginx 1.13.0

环境 Ubuntu 14.04 用户 admin 数据目录: /fastdfs 安装包:FastDFS v5.05 一、下载安装libfastcommon 1.1、上传或下载 libfastcommon-master.zip 到/usr/local/src 目录 1.2、解压 1.3、编...

paascloud ⋅ 2017/05/29 ⋅ 0

centos7安装FastDFS和nginx

1.所需的安装包: 链接:https://pan.baidu.com/s/1Hm48o3aBYn0C7PyWzBGUqw 密码:kio7 2安装centos7 输入yum -y install libevent 安装FastDFS依赖libevent库...

暴走萨摩耶 ⋅ 05/26 ⋅ 0

【FastDFS】FastDFS+FastDHT完成文件上传去重

一、前言 最近公司让我搞FastDFS分布式文件系统。整个集群环境已经搭建成功啦。但是有一个问题一直困扰着我,那就是重复文件的上传。即使是同一个文件,多次上传,返回的id也是不一样的。这样...

qq_26545305 ⋅ 04/24 ⋅ 0

令狐大侠/大文件上传断点续传fastdfs

大文件上传,断点续传,秒传,fastdfs 项目介绍 实现h5与fastdfs之间的断点续传,大文件上传,秒传 软件架构 软件架构说明 webuploader+springboot+redis+fastdfs(服务端)+FastDFS_Client(非官网,...

令狐大侠 ⋅ 06/19 ⋅ 0

fastdfs+springboot

springboot整合fastdfs上传文件报错 java.net.SocketException: Connection reset by peer: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) ~[na:1.8.0_1......

feel105 ⋅ 05/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从 Confluence 5.3 及其早期版本中恢复空间

如果你需要从 Confluence 5.3 及其早期版本中的导出文件恢复到晚于 Confluence 5.3 的 Confluence 中的话。你可以使用临时的 Confluence 空间安装,然后将这个 Confluence 安装实例升级到你现...

honeymose ⋅ 今天 ⋅ 0

Java8新增的DateTimeFormatter与SimpleDateFormat的区别

两者最大的区别是,Java8的DateTimeFormatter也是线程安全的,而SimpleDateFormat并不是线程安全。 在并发环境下使用SimpleDateFormat 为了能够在多线程环境下使用SimpleDateFormat,有这三种...

人觉非常君 ⋅ 今天 ⋅ 0

多线程如何控制执行顺序

线程的生命周期说明: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、...

MarinJ_Shao ⋅ 今天 ⋅ 0

用ZBLOG2.3博客写读书笔记网站能创造今日头条的辉煌吗?

最近两年,著名的自媒体网站今日头条可以说是火得一塌糊涂,虽然从目前来看也遇到了一点瓶颈,毕竟发展到了一定的规模,继续增长就更加难了,但如今的今日头条规模和流量已经非常大了。 我们...

原创小博客 ⋅ 今天 ⋅ 0

MyBatis四大核心概念

本文讲解 MyBatis 四大核心概念(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession、Mapper)。 MyBatis 作为互联网数据库映射工具界的“上古神器”,训有四大“神兽”,谓之:Sql...

waylau ⋅ 今天 ⋅ 0

以太坊java开发包web3j简介

web3j(org.web3j)是Java版本的以太坊JSON RPC接口协议封装实现,如果需要将你的Java应用或安卓应用接入以太坊,或者希望用java开发一个钱包应用,那么用web3j就对了。 web3j的功能相当完整...

汇智网教程 ⋅ 今天 ⋅ 0

2个线程交替打印100以内的数字

重点提示: 线程的本质上只是一个壳子,真正的逻辑其实在“竞态条件”中。 举个例子,比如本题中的打印,那么在竞态条件中,我只需要一个方法即可; 假如我的需求是2个线程,一个+1,一个-1,...

Germmy ⋅ 今天 ⋅ 0

Django第一期

安装Django 去https://www.djangoproject.com/download/ 下载最新版的Django,然后解压放到Anaconda\Lib\site-packages目录下,然后cmd进入此目录,输入安装命令: python setup.py install ...

大不了敲一辈子代码 ⋅ 今天 ⋅ 0

Springboot2 之 Spring Data Redis 实现消息队列——发布/订阅模式

一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式,这里利用redis消息“发布/订阅”来简单实现订阅者模式。 实现之前先过过 redis 发布订阅的一些基础概念和操...

Simonton ⋅ 今天 ⋅ 0

error:Could not find gradle

一.更新Android Studio后打开Project,报如下错误: Error: Could not find com.android.tools.build:gradle:2.2.1. Searched in the following locations: file:/D:/software/android/andro......

Yao--靠自己 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部