简单介绍:

FastDFS作者余庆,是一套开源的分布式文件系统。

功能:文件存储、同步、上传、下载,提供负载均衡功能,适合用于图片、视频的存放。

角色:

tracker

作用:任务调度接受客户端的访问,检索存储节点,为客户端提供一台可用的storage。

storage

作用:接受Tracker的调度,响应客户端请求,将客户端发来的文件存储至相应存储位置,读取请求的文件,发送给客户端。

以下使用三台虚拟机搭建实验环境:

三台机器充当存储节点,其中两台配置tracker做主备关系同时充当storage角色,当一台tracker down机后另外一台可以提供正常的访问连接。

tracker01: 192.168.56.101

tracker02: 192.168.56.102

storage03:192.168.56.103

准备工作:

OS: CentoOS6.8

在所有节点上安装依赖库:

yum install -y gcc libevent libevent-doc libevent-devel libevent-headers make

所需软件包:

FastDFS_v4.06.tar.gz

fastdfs-nginx-module_v1.15.tar.gz (配置web访问时需要nginx支持此模块)

开始:第一步

[root@Master ~]# tar -xf FastDFS_v4.06.tar.gz
[root@Master ~]# cd FastDFS
[root@Master FastDFS]# ll
total 124
drwxrwxr-x. 3 nginx nginx  4096 Feb 15  2013 client
drwxrwxr-x. 2 nginx nginx  4096 Feb 15  2013 common
drwxrwxr-x. 2 nginx nginx  4096 Feb 15  2013 conf
-rw-rw-r--. 1 nginx nginx 35067 Jul 28  2008 COPYING-3_0.txt
-rw-rw-r--. 1 nginx nginx 28437 Jan 24  2013 HISTORY
drwxrwxr-x. 2 nginx nginx  4096 Feb 15  2013 init.d
-rw-rw-r--. 1 nginx nginx  7757 Dec 23  2011 INSTALL
-rwxrwxr-x. 1 nginx nginx  5133 Dec 27  2012 make.sh
drwxrwxr-x. 2 nginx nginx  4096 Feb 15  2013 php_client
-rw-rw-r--. 1 nginx nginx  2380 Jul 28  2008 README
-rwxrwxr-x. 1 nginx nginx  1768 Apr 12  2010 restart.sh
-rwxrwxr-x. 1 nginx nginx  1680 Apr 10  2010 stop.sh
drwxrwxr-x. 4 nginx nginx  4096 Feb 15  2013 storage
drwxrwxr-x. 2 nginx nginx  4096 Feb 15  2013 test
drwxrwxr-x. 2 nginx nginx  4096 Feb 15  2013 tracker
[root@Master FastDFS]# ./make.sh && ./make.sh install
[root@Master FastDFS]# cp conf/storage_ids.conf /etc/fdfs/
[root@Master FastDFS]# cp init.d/fdfs_trackerd /etc/init.d #拷贝tracker启动文件
[root@Master FastDFS]# cp init.d/fdfs_storaged /etc/init.d #拷贝storage启动文件

建议:编译前请先阅读INSTALL file

第二步:创建数据目录

mkdir -p /data/fastdfs/tracker #创建tracker文件存放路径
mkdir -p /data/fastdfs/storage #创建storage 文件存放路径
mkdir -p /data/fastdfs/client  #创建client 文件存放路径

第三步:修改配置文件

[root@Master fdfs]# ll
total 64
-rw-r--r--. 1 root root  1500 Jun 26 14:36 client.conf
-rw-r--r--. 1 root root   858 Jun 23 15:42 http.conf
-rw-r--r--. 1 root root 31172 Jun 23 15:42 mime.types
-rw-r--r--. 1 root root  3898 Jun 26 15:35 mod_fastdfs.conf
-rw-r--r--. 1 root root  7496 Jun 26 15:22 storage.conf
-rw-r--r--. 1 root root   171 Jun 26 15:45 storage_ids.conf
-rw-r--r--. 1 root root  6624 Jun 26 16:04 tracker.conf
#以上目录处mod_fastdfs.conf文件外如缺少其他文件请检查 libevent 是否安装[root@Master fdfs]# grep -vE "^#|^$" tracker.confdisabled=false
bind_addr=
port=22122
connect_timeout=30
network_timeout=60
base_path=/data/fastdfs/tracker
max_connections=4096
work_threads=4
store_lookup=0
store_server=0
store_path=0
download_server=0
reserved_storage_space = 10%
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
sync_log_buff_interval = 10
check_active_interval = 120
thread_stack_size = 64KB
storage_ip_changed_auto_adjust = true
storage_sync_file_max_delay = 86400
storage_sync_file_max_time = 300
use_trunk_file = false
slot_min_size = 256
slot_max_size = 16MB
trunk_file_size = 64MB
trunk_create_file_advance = false
trunk_create_file_time_base = 02:00
trunk_create_file_interval = 86400
trunk_create_file_space_threshold = 20G
trunk_init_check_occupying = false
trunk_init_reload_from_binlog = false
use_storage_id = false
storage_ids_filename = storage_ids.conf
id_type_in_filename = ip
store_slave_file_use_link = false
rotate_error_log = false
error_log_rotate_time=00:00
rotate_error_log_size = 0
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.server_port=8080
http.check_alive_interval=30
http.check_alive_type=tcp
http.check_alive_uri=/status.html#以上为配置文件内容,各参数的含义请自行了解。

cat /etc/fdfs/storage_ids.conf

[root@Master fdfs]# cat storage_ids.conf
# <id>  <group_name>  <ip_or_hostname>100001   group1  192.168.56.101100002   group1  192.168.56.102100003   group1  192.168.56.103

[root@Master fdfs]# grep -vE '^#|^$' client.conf

connect_timeout=30
network_timeout=60
base_path=/data/fastdfs/client
tracker_server=192.168.56.101:22122
tracker_server=192.168.56.102:22122
log_level=info
use_connection_pool = false
connection_pool_max_idle_time = 3600
load_fdfs_parameters_from_tracker=false
use_storage_id = false
storage_ids_filename = storage_ids.conf
http.tracker_server_port=8080


请在所有tracker主机修改/etc/fdfs/tracker.conf文件

请在所有storage主机修改/etc/fdfs/storage.conf文件

cat /etc/fdfs/storage.conf

[root@Master fdfs]# grep -vE "^#|^$" storage.conf
disabled=false
group_name=group1
bind_addr=
client_bind=true
port=23000
connect_timeout=30
network_timeout=60
heart_beat_interval=30
stat_report_interval=60
base_path=/data/fastdfs/storage
max_connections=256
buff_size = 256KB
work_threads=4
disk_rw_separated = true
disk_reader_threads = 1
disk_writer_threads = 1
sync_wait_msec=50
sync_interval=0
sync_start_time=00:00
sync_end_time=23:59
write_mark_file_freq=500
store_path_count=1
store_path0=/data/fastdfs/storage
subdir_count_per_path=256
tracker_server=192.168.56.101:22122
tracker_server=192.168.56.102:22122
log_level=info
run_by_group=
run_by_user=
allow_hosts=*
file_distribute_path_mode=0
file_distribute_rotate_count=100
fsync_after_written_bytes=0
sync_log_buff_interval=10
sync_binlog_buff_interval=10
sync_stat_file_interval=300
thread_stack_size=512KB
upload_priority=10
if_alias_prefix=
check_file_duplicate=0
file_signature_method=hash
key_namespace=FastDFS
keep_alive=0
use_access_log = false
rotate_access_log = false
access_log_rotate_time=00:00
rotate_error_log = false
error_log_rotate_time=00:00
rotate_access_log_size = 0
rotate_error_log_size = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name=
http.server_port=8888

第四步:启动tracker and storage

[root@Master fdfs]# /etc/init.d/fdfs_trackerd start
[root@Master fdfs]# /etc/init.d/fdfs_storaged start
[root@Master fdfs]# ps -ef|grep fdfs
root      3157     1  0 11:55 ?        00:00:00 /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf
root      3188     1  0 11:56 ?        00:00:00 /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
root      3217  2434  0 11:57 pts/0    00:00:00 grep fdfs
[root@Master fdfs]#

注意:如果启动失败请查看日志/data/fastdfs/tracker/logs/trackerd.log

至此:tracker和storage启动完毕。

查看集群状态:

[root@Master ~]# /usr/local/bin/fdfs_monitor /etc/fdfs/storage.conf

[2017-06-27 12:02:31] DEBUG - base_path=/data/fastdfs/storage, connect_timeout=30, network_timeout=60, tracker_server_count=2, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

server_count=2, server_index=0

tracker server is 192.168.56.101:22122

group count: 1

Group 1:
group name = group1
disk total space = 8447 MB
disk free space = 4924 MB
trunk free space = 0 MB
storage server count = 3
active server count = 1
storage server port = 23000
storage HTTP port = 8888
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

Storage 1:
        id = 192.168.56.101
        ip_addr = 192.168.56.101 (Master)  WAIT_SYNC
        http domain =
        version = 4.06
        join time = 2017-06-26 15:22:46
        up time = 2017-06-27 11:49:39
        total storage = 0 MB
        free storage = 0 MB
        upload priority = 10
        store_path_count = 1
        subdir_count_per_path = 256
        storage_port = 23000
        storage_http_port = 8888
        current_write_path = 0
        source storage id=
        if_trunk_server= 0
        total_upload_count = 0
        success_upload_count = 0
        total_append_count = 0
        success_append_count = 0
        total_modify_count = 0
        success_modify_count = 0
        total_truncate_count = 0
        success_truncate_count = 0
        total_set_meta_count = 0
        success_set_meta_count = 0
        total_delete_count = 0
        success_delete_count = 0
        total_download_count = 0
        success_download_count = 0
        total_get_meta_count = 0
        success_get_meta_count = 0
        total_create_link_count = 0
        success_create_link_count = 0
        total_delete_link_count = 0
        success_delete_link_count = 0
        total_upload_bytes = 0
        success_upload_bytes = 0
        total_append_bytes = 0
        success_append_bytes = 0
        total_modify_bytes = 0
        success_modify_bytes = 0
        stotal_download_bytes = 0
        success_download_bytes = 0
        total_sync_in_bytes = 0
        success_sync_in_bytes = 0
        total_sync_out_bytes = 0
        success_sync_out_bytes = 0
        total_file_open_count = 0
        success_file_open_count = 0
        total_file_read_count = 0
        success_file_read_count = 0
        total_file_write_count = 0
        success_file_write_count = 0
        last_heart_beat_time = 1970-01-01 08:00:00
        last_source_update = 1970-01-01 08:00:00
        last_sync_update = 1970-01-01 08:00:00
        last_synced_timestamp = 1970-01-01 08:00:00 (never synced)
    Storage 2:
        id = 192.168.56.102
        ip_addr = 192.168.56.102 (Minion02)  ACTIVE
        http domain =
        version = 4.06
        join time = 2017-06-26 15:12:53
        up time = 2017-06-27 11:50:08
        total storage = 8447 MB
        free storage = 4945 MB
        upload priority = 10
        store_path_count = 1
        subdir_count_per_path = 256
        storage_port = 23000
        storage_http_port = 8888
        current_write_path = 0
        source storage id=
        if_trunk_server= 0
        total_upload_count = 6
        success_upload_count = 6
        total_append_count = 0
        success_append_count = 0
        total_modify_count = 0
        success_modify_count = 0
        total_truncate_count = 0
        success_truncate_count = 0
        total_set_meta_count = 6
        success_set_meta_count = 6
        total_delete_count = 0
        success_delete_count = 0
        total_download_count = 0
        success_download_count = 0
        total_get_meta_count = 0
        success_get_meta_count = 0
        total_create_link_count = 0
        success_create_link_count = 0
        total_delete_link_count = 0
        success_delete_link_count = 0
        total_upload_bytes = 63284
        success_upload_bytes = 63284
        total_append_bytes = 0
        success_append_bytes = 0
        total_modify_bytes = 0
        success_modify_bytes = 0
        stotal_download_bytes = 0
        success_download_bytes = 0
        total_sync_in_bytes = 120
        success_sync_in_bytes = 120
        total_sync_out_bytes = 240
        success_sync_out_bytes = 240
        total_file_open_count = 10
        success_file_open_count = 10
        total_file_read_count = 0
        success_file_read_count = 0
        total_file_write_count = 10
        success_file_write_count = 10
        last_heart_beat_time = 2017-06-27 12:02:14
        last_source_update = 2017-06-27 12:01:01
        last_sync_update = 2017-06-26 15:55:03
        last_synced_timestamp = 1970-01-01 08:00:00 (never synced)
    Storage 3:
        id = 192.168.56.103
        ip_addr = 192.168.56.103 (Minion03)  WAIT_SYNC
        http domain =
        version = 4.06
        join time = 2017-06-26 15:14:03
        up time = 2017-06-27 11:50:25
        total storage = 8447 MB
        free storage = 4924 MB
        upload priority = 10
        store_path_count = 1
        subdir_count_per_path = 256
        storage_port = 23000
        storage_http_port = 8888
        current_write_path = 0
        source storage id= 192.168.56.102
        if_trunk_server= 0
        total_upload_count = 2
        success_upload_count = 2
        total_append_count = 0
        success_append_count = 0
        total_modify_count = 0
        success_modify_count = 0
        total_truncate_count = 0
        success_truncate_count = 0
        total_set_meta_count = 2
        success_set_meta_count = 2
        total_delete_count = 0
        success_delete_count = 0
        total_download_count = 0
        success_download_count = 0
        total_get_meta_count = 0
        success_get_meta_count = 0
        total_create_link_count = 0
        success_create_link_count = 0
        total_delete_link_count = 0
        success_delete_link_count = 0
        total_upload_bytes = 22
        success_upload_bytes = 22
        total_append_bytes = 0
        success_append_bytes = 0
        total_modify_bytes = 0
        success_modify_bytes = 0
        stotal_download_bytes = 0
        success_download_bytes = 0
        total_sync_in_bytes = 995
        success_sync_in_bytes = 240
        total_sync_out_bytes = 120
        success_sync_out_bytes = 120
        total_file_open_count = 10
        success_file_open_count = 10
        total_file_read_count = 0
        success_file_read_count = 0
        total_file_write_count = 10
        success_file_write_count = 10
        last_heart_beat_time = 2017-06-27 12:02:10
        last_source_update = 2017-06-26 15:54:52
        last_sync_update = 2017-06-26 16:04:33
        last_synced_timestamp = 1970-01-01 08:00:00 (never synced)

测试:

  1. 上传文件至FastDFS,上传多个文件至storage查看上传位置是否有变化

  2. 停掉tracker01 查看是否切换至tracker02

上传文件:

[root@Master ~]# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload install.log

至此:end

如有问题欢迎留言探讨。。。。3Q

转载于:https://blog.51cto.com/imork/1942342

FastDFS集群tracker实现负载均衡相关推荐

  1. Spring Cloud Alibaba - 11 Ribbon 自定义负载均衡策略(同集群优先权重负载均衡算法)

    文章目录 Pre 需求 工程 Code 继承AbstractLoadBalancerRule实现自定义Rule 随机权重策略 配置 验证 源码 Pre Spring Cloud Alibaba - 0 ...

  2. Nginx+memcached+tomcat配置集群session共享负载均衡

    Nginx+memcached+tomcat配置集群session共享负载均衡 配置环境: windows xp下 jdk1.7.0_10      nginx-1.2.6  (附下载)      m ...

  3. 高可用集群下的负载均衡(8):pacemaker + corosync + haproxy 实现高可用

    实验环境 server1 和 server2 是调度器,server3 和 server4 是服务器 [1]调度器server1 server2 关闭 keepalived 和 httpd,并打开pc ...

  4. centos7 rabbitmq 单机部署 集群部署 HAProxy 负载均衡搭建

    准备工作 搭建 RabbitMQ Server 单机版 搭建 RabbitMQ Server 高可用集群 搭建 HAProxy 负载均衡 一.准备工作 节点 系统 版本 ip node1 centos ...

  5. mysql 高并发 集群架构_一种高并发的GPU集群架构及其负载均衡方法技术

    [技术实现步骤摘要] 一种高并发的GPU集群架构及其负载均衡方法 本专利技术属于GPU集群架构及其负载均衡方法 ,特别是涉及一种高并发的GPU集群架构及其负载均衡方法. 技术介绍 GPU因其高性能的并 ...

  6. Nginx以及通过Nginx实现tomcat集群配置与负载均衡

    Nginx简介 启动,停止,和重新加载配置文件命令 Nginx功能 正向代理和反向代理的区别 反向代理 负载均衡 1.RR(默认) 2.权重 3.ip_hash 4.fair(第三方) 5.url_h ...

  7. 【从单体架构到分布式架构】(二)请求增多,单点变集群(1):负载均衡

    这是我的第 47 篇原创文章作者 l 会点代码的大叔(CodeDaShu) 上一个章节,我们搭建了一个最简单的单体服务项目,单体架构就是把所有的功能都放在一个工程项目中. 但是当访问量不断增加,我们只 ...

  8. mysql语句:索引,游标,存储过程,视图,分区,分库分表,数据库集群,数据库负载均衡...

    为什么80%的码农都做不了架构师?>>>    学会数据库是很实用D~~记录一些常用的sql语句...有入门有提高有见都没见过的...好全...收藏下... 其实一般用的就是查询,插 ...

  9. weblogic集群部署与负载均衡_集群,负载均衡,分布式的讲解和多台服务器代码同步...

    集群 我们的项目如果跑在一台机器上,如果这台机器出现故障的话,或者用户请求量比较高,一台机器支撑不住的话.我们的网站可能就访问不了.那怎么解决呢?就需要使用多台机器,部署一样的程序,让几个机器同时的运 ...

最新文章

  1. 调研CSS选择器在浏览器中的支持情况
  2. CS294-112 深度强化学习 秋季学期(伯克利)NO.3 Reinforcement learning introduction
  3. 技术帖:砖混、砖木、钢混、板楼、塔楼、框架、框架剪力墙等概念之区别优劣...
  4. 1106 冒泡排序的语法树
  5. 6.Nginx 的 Rewrite 规则
  6. 转四种常见的post请求
  7. linux系统安装佳能打印机驱动,fedora21怎么安装佳能打印机驱动?
  8. 计算机流程图的画法,程序流程图的基本画法大全
  9. 第一章 古代东方文明
  10. 深入探访支付宝双11十年路,技术凿穿焦虑与想象极限 | CYZONE特写
  11. jQuery slideUp(),slideDown()和slideToggle()示例
  12. 微信公众号网页版,获取用户code时出现跨域问题的解决办法之一
  13. 神级总结:报价英文函电的常用金句
  14. 滴水逆向三期笔记与作业——02C语言——02数据类型
  15. Qt QImage类详解(QImage类型转换、QImage类函数及QImage像素操作)
  16. CTF中出现的各种字符/密码总结
  17. 白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(5)完结篇:自然临近关系
  18. 月入过万的虚拟项目?还不赶快进来一探究竟
  19. XP系统取消开机硬件检查
  20. Android基于mAppWidget实现手绘地图(十一)–移动地图到某个坐标

热门文章

  1. lifeifei翻译目录
  2. 极客时间_week03_work
  3. 广州银行冲刺A股上市:不良贷款规模突破100亿元,不良率飙升
  4. 【Photoshop技巧】两步将黑色图片改变颜色
  5. charing animation
  6. 橘子学ES12之DSL搜索
  7. 基于知识图谱+机器学习,搭建风控模型的项目落地
  8. HTTP和HTTPS的主要区别
  9. idea下载安装破解详解
  10. 2020年数学建模国赛C题