千家信息网

FastDFS集群tracker是怎么样实现负载均衡的

发表于:2024-10-06 作者:千家信息网编辑
千家信息网最后更新 2024年10月06日,下文给大家带来FastDFS集群tracker是怎么样实现负载均衡的,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做
千家信息网最后更新 2024年10月06日FastDFS集群tracker是怎么样实现负载均衡的

下文给大家带来FastDFS集群tracker是怎么样实现负载均衡的,希望能够给大家在实际运用中带来一定的帮助,负载均衡涉及的东西比较多,理论也不多,网上有很多书籍,今天我们就用在行业内累计的经验来做一个解答。

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


角色:


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]# lltotal 124drwxrwxr-x. 3 nginx nginx  4096 Feb 15  2013 clientdrwxrwxr-x. 2 nginx nginx  4096 Feb 15  2013 commondrwxrwxr-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 HISTORYdrwxrwxr-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.shdrwxrwxr-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.shdrwxrwxr-x. 4 nginx nginx  4096 Feb 15  2013 storagedrwxrwxr-x. 2 nginx nginx  4096 Feb 15  2013 testdrwxrwxr-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]# lltotal 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=falsebind_addr=port=22122connect_timeout=30network_timeout=60base_path=/data/fastdfs/trackermax_connections=4096work_threads=4store_lookup=0store_server=0store_path=0download_server=0reserved_storage_space = 10%log_level=inforun_by_group=run_by_user=allow_hosts=*sync_log_buff_interval = 10check_active_interval = 120thread_stack_size = 64KBstorage_ip_changed_auto_adjust = truestorage_sync_file_max_delay = 86400storage_sync_file_max_time = 300use_trunk_file = falseslot_min_size = 256slot_max_size = 16MBtrunk_file_size = 64MBtrunk_create_file_advance = falsetrunk_create_file_time_base = 02:00trunk_create_file_interval = 86400trunk_create_file_space_threshold = 20Gtrunk_init_check_occupying = falsetrunk_init_reload_from_binlog = falseuse_storage_id = falsestorage_ids_filename = storage_ids.confid_type_in_filename = ipstore_slave_file_use_link = falserotate_error_log = falseerror_log_rotate_time=00:00rotate_error_log_size = 0use_connection_pool = falseconnection_pool_max_idle_time = 3600http.server_port=8080http.check_alive_interval=30http.check_alive_type=tcphttp.check_alive_uri=/status.html#以上为配置文件内容,各参数的含义请自行了解。

cat /etc/fdfs/storage_ids.conf

[root@Master fdfs]# cat storage_ids.conf#      100001   group1  192.168.56.101 100002   group1  192.168.56.102 100003   group1  192.168.56.103


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

connect_timeout=30network_timeout=60base_path=/data/fastdfs/clienttracker_server=192.168.56.101:22122tracker_server=192.168.56.102:22122log_level=infouse_connection_pool = falseconnection_pool_max_idle_time = 3600load_fdfs_parameters_from_tracker=falseuse_storage_id = falsestorage_ids_filename = storage_ids.confhttp.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.confdisabled=falsegroup_name=group1bind_addr=client_bind=trueport=23000connect_timeout=30network_timeout=60heart_beat_interval=30stat_report_interval=60base_path=/data/fastdfs/storagemax_connections=256buff_size = 256KBwork_threads=4disk_rw_separated = truedisk_reader_threads = 1disk_writer_threads = 1sync_wait_msec=50sync_interval=0sync_start_time=00:00sync_end_time=23:59write_mark_file_freq=500store_path_count=1store_path0=/data/fastdfs/storagesubdir_count_per_path=256tracker_server=192.168.56.101:22122tracker_server=192.168.56.102:22122log_level=inforun_by_group=run_by_user=allow_hosts=*file_distribute_path_mode=0file_distribute_rotate_count=100fsync_after_written_bytes=0sync_log_buff_interval=10sync_binlog_buff_interval=10sync_stat_file_interval=300thread_stack_size=512KBupload_priority=10if_alias_prefix=check_file_duplicate=0file_signature_method=hashkey_namespace=FastDFSkeep_alive=0use_access_log = falserotate_access_log = falseaccess_log_rotate_time=00:00rotate_error_log = falseerror_log_rotate_time=00:00rotate_access_log_size = 0rotate_error_log_size = 0file_sync_skip_invalid_record=falseuse_connection_pool = falseconnection_pool_max_idle_time = 3600http.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 fdfsroot      3157     1  0 11:55 ?        00:00:00 /usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.confroot      3188     1  0 11:56 ?        00:00:00 /usr/local/bin/fdfs_storaged /etc/fdfs/storage.confroot      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



看了以上关于FastDFS集群tracker是怎么样实现负载均衡的,如果大家还有什么地方需要了解的可以在行业资讯里查找自己感兴趣的或者找我们的专业技术工程师解答的,技术工程师在行业内拥有十几年的经验了。








0