fastdfs集群tracker实现负载均衡

author author     2022-09-06     785

关键词:

简单介绍:

 

  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支持此模块)

开始:第一步

[[email protected] ~]# tar -xf FastDFS_v4.06.tar.gz
[[email protected] ~]# cd FastDFS
[[email protected] 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
[[email protected] FastDFS]# ./make.sh && ./make.sh install
[[email protected] FastDFS]# cp conf/storage_ids.conf /etc/fdfs/
[[email protected] FastDFS]# cp init.d/fdfs_trackerd /etc/init.d #拷贝tracker启动文件
[[email protected] 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 文件存放路径


第三步:修改配置文件

[[email protected] 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 是否安装

[[email protected] fdfs]# grep -vE "^#|^$" tracker.conf

disabled=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

[[email protected] fdfs]# cat storage_ids.conf
# <id>  <group_name>  <ip_or_hostname>
 100001   group1  192.168.56.101
 100002   group1  192.168.56.102
 100003   group1  192.168.56.103


[[email protected] 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

[[email protected] 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

[[email protected] fdfs]# /etc/init.d/fdfs_trackerd start
[[email protected] fdfs]# /etc/init.d/fdfs_storaged start
[[email protected] 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
[[email protected] fdfs]#

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


至此:tracker和storage启动完毕。


查看集群状态:


[[email protected] ~]# /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



上传文件:

[[email protected] ~]# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload install.log



至此:end



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






本文出自 “蜗牛的嘲讽” 博客,请务必保留此出处http://imork.blog.51cto.com/11642843/1942342

fastdfs集群配置

...站、视频网站等等。FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。官方论坛:  查看详情

分布式文件系统fastdfs原理及入门(代码片段)

...务。2、原理:FastDFS系统结构如下图所示: FastDFS分为Tracker、Storage,其中Storage负责存储文件,Tracker负责存储文件所在地址,主要作用是负载均衡和资源调度。Tracker、Storage都可以实现集群部署,Tracker的每个节点地位平等,... 查看详情

分布式文件系统fastdfs_v5.09配置双tracker负载均衡

分布式文件系统fastdfs_V5.09配置双tracker负载均衡 650)this.width=650;"title="11.png"alt="wKioL1klDyTA0JNkAAOWZQABE28043.png-wh_50"src="https://s1.51cto.com/wyfs02/M00/96/BE/wKioL1klDyTA0JNkAAOWZQABE28043.png-wh 查看详情

部署fastdfs(代码片段)

...服务更为合适。FastDFS服务端有三个角色:跟踪服务器(tracker)、存储服务器(storage)和客户端(client)。Tracker:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,... 查看详情

部署fastdfs(代码片段)

...服务更为合适。FastDFS服务端有三个角色:跟踪服务器(tracker)、存储服务器(storage)和客户端(client)。Tracker:跟踪服务器,主要做调度工作,起负载均衡的作用。在内存中记录集群中所有存储组和存储服务器的状态信息,... 查看详情

fastdfs文件系统

FastDFS:分布式存储组件:tracker、storagetracker相当于lvs调度器,用户把请求发往tracker,tracker再把请求发送到storagestorage采用分组设计,组内建议三副本(三台服务器),组内服务器存储完全一样的数据,服务器采用主主设计,服务... 查看详情

fastdfs介绍

...下载等服务。FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。存储节点存储文件,完成文件管理的所有功能:就是这样的 查看详情

fastdfs架构

...集群提供文件上传、下载服务2、Fastdfs架构Fastdfs架构包括Trackerserver和Storageserver客户端请求Trackerserver进行文件上传、下载,通过Trackerserver调度最终由Storageserver完成文件上传和下载Trackerserver作用是负载均衡和调度,通过Trackerserve... 查看详情

fastdfs架构

...文件上传、下载等服务。2、FastDFS架构  FastDFS架构包括Trackerserver和Storageserver。客户端请求Trackers 查看详情

fastdfs

...站、视频网站等等。FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。存储节点存储文件,完成文件管理的所有功能:存 查看详情

安装fastdfs(代码片段)

...服务器集群提供文件上传、下载等服务。FastDFS架构包括Trackerserver和Storageserver。客户端请求Trackerserver进行文件上传、下载,通过Trackerserver调度最终由Storageserver完成文件上传和下载。Trackerserver作用是负载均衡和调度,通过Trackers... 查看详情

fastdfs集群

基础环境说明6台服务器两台tracker 4台storages  192.168.56.131tracker服务器edu-dfs-tracker-1192.168.56.132tracker服务器edu-dfs-tracker-2192.168.56.135storage服务器edu-dfs-storage-group1-1192.168.56.136storage服 查看详情

fastdfs分布式文件系统集群安装与配置(代码片段)

...f1a;192.168.1.207dfs-nginx-proxy-2跟踪服务器1:192.168.1.200dfs-tracker-1跟踪服务器2:192.168.1.201dfs-tracker-2存储服务器1:192.168.1.202dfs-storage-group1-1存储服务器2:192.168.1.203dfs-storage-group1-2存储服务器3:192.168.1.204dfs-storage-gro... 查看详情

fastdfs分布式文件系统集群安装与配置(代码片段)

...f1a;192.168.1.207dfs-nginx-proxy-2跟踪服务器1:192.168.1.200dfs-tracker-1跟踪服务器2:192.168.1.201dfs-tracker-2存储服务器1:192.168.1.202dfs-storage-group1-1存储服务器2:192.168.1.203dfs-storage-group1-2存储服务器3:192.168.1.204dfs-storage-gro... 查看详情

fastdfs

工作原理1.FastDFS服务端有2个角色分别是tracker(跟踪器(或说是调度器会更合适))和storage(存储节点)。2.tracker负责调度和负载均衡,并不需要存储文件的索引信息,因为文件上传后stroage返回给客户端的文件ID中就包含了组名、文件相... 查看详情

fastdfs集群安装

一、准备环境:三台机器:VIP:192.168.203.89fastdfs1:192.168.203.91 tracker1storage1keepalivedlvsnginxfastdfs1:192.168.203.92 tracker2storage2keepalivedlvsnginxfastdfs1:192.168.203.93 tracker3storage 查看详情

fastdfs了解随记

FastDFS是一个文件系统,可以部署在Linux上。该文件系统具备高可用和负载均衡特性,还可以动态扩充容量。此文件系统有两个服务组成:跟踪服务和存储服务,也就是说你必须部署了这两种服务,这个文件系统才能运作。每个服... 查看详情

fastdfs学习二————集群各项测试

...一中的步骤分别在两台服务器上搭建即可;测试一:单个tracker对应两个storager(storager组名相同)1:修改两个storager的storager.conf文件中的tracker_server为tracker的地址,group相同2:设定对单个tracker上传图片,结果为两台服务器上均有... 查看详情