文档章节

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

yanwawa
 yanwawa
发布于 2014/06/04 17:35
字数 1994
阅读 105
收藏 4

  我计划在两台服务器上安装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安装使用实战一(安装篇)

最近在研究负载均衡和集群,其中涉及到一个主要问题是,如何让集群中的real server共享一套文件系统。在网上查到FastDFS,国人(happy fish,感谢他的开源精神)开发的一套轻量级分布式文件系...

凯文加内特
2015/03/30
0
0
CentOS 6.3(64) ---> fastdfs_v4.07 / 实现多服务器

自己闲着没事,在小黑上虚拟了 4 个 centos 64 的系统,用来安装分布式 fastdfs 、 nginx 负载均衡,过程一路艰辛,搞了一个通宵都没弄好,终于在第二天的傍晚终于弄好了,记录一下过程。 有...

shking
2013/09/29
0
27
FastDFS分布式文件系统的安装及配置

分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典...

Edwyn王
2015/11/04
0
0
使用FastDFS搭建图片服务器(单实例)

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能通过 专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地...

haoyuehong
09/12
0
0
Fastdfs分布式文件存储系统架构剖析及分布式集群环境的配置

===============分布式文件存储系统Fastdfs架构解析======================== FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只能...

xiejunbo
2015/06/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
29分钟前
2
0
Docker搭建代码质量检测平台-SonarQube(中文版)

Sonar是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量。通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言...

Jacktanger
36分钟前
2
0
Windows / Linux / MacOS 设置代理上网的方法汇总

本文汇总了 Windows / Linux / MacOS 设置代理上网的各种方法,总结如下: 1、设置系统代理(Windows、Linux、MacOS) 2、设置代理插件(Chrome、Chromium、Firefox、Opera、QQ等浏览器) 3、...

sunboy2050
昨天
4
0
自定义 Maven 的 repositories

有时,应用中需要一些比较新的依赖,而这些依赖并没有正式发布,还是处于milestone或者是snapshot阶段,并不能从中央仓库或者镜像站上下载到。此时,就需要 自定义Maven的<repositories>。 ...

waylau
昨天
3
0
徒手写一个es6代码库

mkdir democd demonpm initnpm install -g babelnpm install -g babel-clinpm install --save-dev babel-preset-es2015-node5 在项目目录创建两个文件夹 functional-playground ......

lilugirl
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部