当前位置:   article > 正文

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

分布式文件系统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

  1. # <id> <group_name> <ip_or_hostname>
  2. 100001 group1 192.168.68.133
  3. 100002 group2 192.168.68.133
  4. 100003 group1 192.168.68.136

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

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

  1. # the tracker server port
  2. port=22122
  3. # the base path to store data and log files
  4. base_path=/var/fastdfs/tracker
  5. # the method of selecting group to upload files
  6. # 0: round robin
  7. # 1: specify group
  8. # 2: load balance, select the max free space group to upload file
  9. store_lookup=2
  10. # which group to upload file
  11. # when store_lookup set to 1, must set store_group to the group name
  12. store_group=group2
  13. #unix group name to run this program,
  14. #not set (empty) means run by the group of current user
  15. run_by_group=
  16. #unix username to run this program,
  17. #not set (empty) means run by current user
  18. run_by_user=
  19. # if use storage ID instead of IP address
  20. # default value is false
  21. # since V4.00
  22. use_storage_id = true
  23. # the max time of storage sync a file
  24. # default value is 300 seconds
  25. # since V2.00
  26. 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,同样限于篇幅,我仅仅贴出重要配置项,其它的使用默认值。

  1. # the name of the group this storage server belongs to
  2. group_name=group1
  3. # the storage server port
  4. port=23001
  5. # the base path to store data and log files
  6. base_path=/var/fastdfs/storage1
  7. # store_path#, based 0, if store_path0 not exists, it's value is base_path
  8. # the paths must be exist
  9. store_path0=/var/fastdfs/store_group1_path0
  10. # tracker_server can ocur more than once, and tracker_server format is
  11. # "host:port", host can be hostname or ip address
  12. tracker_server=192.168.68.133:22122
  13. tracker_server=192.168.68.136:22122
  14. run_by_group=
  15. 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是不同的,请看配置关键项:

  1. # the name of the group this storage server belongs to
  2. group_name=group2
  3. # the storage server port
  4. port=23002
  5. base_path=/var/fastdfs/storage2
  6. # store_path#, based 0, if store_path0 not exists, it's value is base_path
  7. # the paths must be exist
  8. store_path0=/var/fastdfs/store_group2_path0
  9. # tracker_server can ocur more than once, and tracker_server format is
  10. # "host:port", host can be hostname or ip address
  11. tracker_server=192.168.68.133:22122

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

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

  1. #!/bin/bash
  2. #
  3. # fdfs_trackerd Starts fdfs_trackerd
  4. #
  5. #
  6. # chkconfig: 2345 99 01
  7. # description: FastDFS tracker server
  8. ### BEGIN INIT INFO
  9. # Provides: $fdfs_trackerd
  10. ### END INIT INFO
  11. # Source function library.
  12. . /etc/init.d/functions
  13. FastDfs='/usr/local/fastdfs'
  14. CONF="$FastDfs/conf/tracker.conf"
  15. if [ ! -f $CONF ]; then
  16. echo "file $CONF does not exist!"
  17. exit 2
  18. fi
  19. PRG="$FastDfs/bin/fdfs_trackerd"
  20. if [ ! -f $PRG ]; then
  21. echo "file $PRG does not exist!"
  22. exit 2
  23. fi
  24. Stop="$FastDfs/bin/stop.sh"
  25. if [ ! -f $Stop ]; then
  26. echo "file $Stop does not exist!"
  27. exit 2
  28. fi
  29. Restart="$FastDfs/bin/restart.sh"
  30. if [ ! -f $Restart ]; then
  31. echo "file $Restart does not exist!"
  32. exit 2
  33. fi
  34. RETVAL=0
  35. start() {
  36. echo -n $"Starting FastDFS tracker server: "
  37. $PRG $CONF &
  38. RETVAL=$?
  39. echo
  40. return $RETVAL
  41. }
  42. stop() {
  43. echo -n $"Stop FastDFS tracker server: "
  44. $Stop $PRG $CONF
  45. RETVAL=$?
  46. return $RETVAL
  47. }
  48. rhstatus() {
  49. status fdfs_trackerd
  50. }
  51. restart() {
  52. $Restart $PRG $CONF &
  53. }
  54. case "$1" in
  55. start)
  56. start
  57. ;;
  58. stop)
  59. stop
  60. ;;
  61. status)
  62. rhstatus
  63. ;;
  64. restart|reload)
  65. restart
  66. ;;
  67. condrestart)
  68. restart
  69. ;;
  70. *)
  71. echo $"Usage: $0 {start|stop|status|restart|condrestart}"
  72. exit 1
  73. esac
  74. exit $?

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

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

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

  1. #!/bin/bash
  2. #
  3. # fdfs_storaged Starts fdfs_storaged
  4. #
  5. #
  6. # chkconfig: 2345 99 01
  7. # description: FastDFS storage server
  8. ### BEGIN INIT INFO
  9. # Provides: $fdfs_storaged
  10. ### END INIT INFO
  11. # Source function library.
  12. . /etc/init.d/functions
  13. FastDfs='/usr/local/fastdfs'
  14. CONF="$FastDfs/conf/storage1.conf"
  15. if [ ! -f $CONF ]; then
  16. echo "file $CONF does not exist!"
  17. exit 2
  18. fi
  19. PRG="$FastDfs/bin/fdfs_storaged"
  20. if [ ! -f $PRG ]; then
  21. echo "file $PRG does not exist!"
  22. exit 2
  23. fi
  24. Stop="$FastDfs/bin/stop.sh"
  25. if [ ! -f $Stop ]; then
  26. echo "file $Stop does not exist!"
  27. exit 2
  28. fi
  29. Restart="$FastDfs/bin/restart.sh"
  30. if [ ! -f $Restart ]; then
  31. echo "file $Restart does not exist!"
  32. exit 2
  33. fi
  34. RETVAL=0
  35. start() {
  36. echo -n $"Starting FastDFS storage server: "
  37. $PRG $CONF &
  38. RETVAL=$?
  39. echo
  40. return $RETVAL
  41. }
  42. stop() {
  43. echo -n $"Stop FastDFS storage server: "
  44. $Stop $PRG $CONF
  45. RETVAL=$?
  46. return $RETVAL
  47. }
  48. rhstatus() {
  49. status fdfs_storaged
  50. }
  51. restart() {
  52. $Restart $PRG $CONF &
  53. }
  54. case "$1" in
  55. start)
  56. start
  57. ;;
  58. stop)
  59. stop
  60. ;;
  61. status)
  62. rhstatus
  63. ;;
  64. restart|reload)
  65. restart
  66. ;;
  67. condrestart)
  68. restart
  69. ;;
  70. *)
  71. echo $"Usage: $0 {start|stop|status|restart|condrestart}"
  72. exit 1
  73. esac
  74. 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服务器上访问插件的配置。

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

转载于:https://my.oschina.net/ljh2008/blog/272434

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/923270
推荐阅读
相关标签
  

闽ICP备14008679号