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

  我计划在两台服务器上安装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服务器上访问插件的配置。

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

你可能感兴趣的:(分布式文件系统fastdfs解析之二(配置))