部署2个tracker server,两个storage server。 模拟测试时多个tracker可以部署在同一台机器上,但是storage不能部署在同一台机器上。 如果是云服务器一定要记得开放对应的端口。
示例:
服务器地址 | 服务程序 | 对应配置文件 | 端口区别 |
---|---|---|---|
192.168.0.104 | fdfs_trackerd | tracker_22122.conf | 22122 |
192.168.0.104 | fdfs_trackerd | tracker_22123.conf | 22123 |
– | – | – | – |
192.168.0.104 | fdfs_storage | storage_group1_23000.conf | |
192.168.0.105 | fdfs_storage | storage_group1_23000.conf |
注意:storage是要部署在不同的服务器上,修改端口是没有用。
(1)把现有的tracker、storage全部停止。
# 查询tracker的PID
ps -ef | grep tracker
# kill进程
kill -9 11027
# 查询storage的PID
ps -ef | grep storage
# kill进程
kill -9 17975
(2)建立配置文件和存储目录。
cd /etc/fdfs
cp tracker.conf.sample tracker_22122.conf
cp tracker.conf.sample tracker_22123.conf
mkdir /home/fastdfs/tracker_22122 # 同一个服务器创建多个tracker存储路径
mkdir /home/fastdfs/tracker_22123
cp storage.conf.sample storage_group1_23000.conf
mkdir /home/fastdfs/storage_group1_23000
(3)然后要修改对应的配置文件,详细见如下。
在这里,tracker_22122.conf 只修改一下 Tracker 存储日志和数据的路径。主要修改port、base_path路径。
# 启用配置文件(默认为 false,表示启用配置文件)
disabled=false
# Tracker 服务端口(默认为 22122)
port=22122
# 存储日志和数据的根目录
base_path=/home/fastdfs/tracker_22122
启动tracker_22122:
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker_22122.conf
在这里,tracker_22123.conf只修改一下 Tracker 存储日志和数据的路径。主要修改port、base_path路径。
# 启用配置文件(默认为 false,表示启用配置文件)
disabled=false
# Tracker 服务端口(默认为 22122)
port=22123
# 存储日志和数据的根目录
base_path=/home/fastdfs/tracker_22123
启动tracker_22123:
sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker_22123.conf
此时查看启动的tracker:
ps -ef | grep tracker
信息显示:
root 2424 1 0 13:10 ? 00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker_22122.conf
root 2455 1 0 13:12 ? 00:00:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker_22123.conf
在这里,storage_group1_23000.conf 只是修改一下 storage 存储日志和数据的路径。主要修改:port、base_path、store_path0、tracker_server。
# 启用配置文件(默认为 false,表示启用配置文件)
disabled=false
# Storage 服务端口(默认为 23000)
port=23000
# 数据和日志文件存储根目录
base_path=/home/fastdfs/storage_group1_23000
# 存储路径,访问时路径为 M00
# store_path1 则为 M01,以此递增到 M99(如果配置了多个存储目录的话,这里只指定 1 个)
store_path0=/home/fastdfs/storage_group1_23000
# Tracker 服务器 IP 地址和端口,单机搭建时也不要写 127.0.0.1
# tracker_server 可以多次出现,如果有多个,则配置多个
tracker_server=192.168.0.104:22122
tracker_server=192.168.0.104:22123
启动storage_group1_23000:
sudo /usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf
(1)把现有的tracker、storage全部停止。
# 查询tracker的PID
ps -ef | grep tracker
# kill进程
kill -9 17380
# 查询storage的PID
ps -ef | grep storage
# kill进程
kill -9 15937
(2)建立配置文件和存储目录。
cd /etc/fdfs
sudo cp storage.conf.sample storage_group1_23000.conf
sudo mkdir /home/fastdfs/storage_group1_23000
(3)然后要修改对应的配置文件。在这里,storage_group1_23000.conf 只是修改一下 storage 存储日志和数据的路径,主要修改:port、base_path、store_path0、tracker_server。
# 启用配置文件(默认为 false,表示启用配置文件)
disabled=false
# Storage 服务端口(默认为 23000)
port=23000
# 数据和日志文件存储根目录
base_path=/home/fastdfs/storage_group1_23000
# 存储路径,访问时路径为 M00
# store_path1 则为 M01,以此递增到 M99(如果配置了多个存储目录的话,这里只指定 1 个)
store_path0=/home/fastdfs/storage_group1_23000
# Tracker 服务器 IP 地址和端口,单机搭建时也不要写 127.0.0.1
# tracker_server 可以多次出现,如果有多个,则配置多个
tracker_server=192.168.0.104:22122
tracker_server=192.168.0.104:22123
(4)启动storage_group1_23000。
/usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf
(1)创建client目录:
mkdir /home/fastdfs/client
(2)修改client.conf。
# 修改client的base path路径
base_path = /home/fastdfs/client
# 配置tracker server地址
tracker_server=192.168.0.104:22122
tracker_server=192.168.0.104:22123
主要修改tracker_server、url_have_group_name、store_path0。 路径:/etc/fdfs/mod_fastdfs.conf。
# Tracker 服务器IP和端口修改
tracker_server=192.168.0.104:22122
tracker_server=192.168.0.104:22123
# url 中是否包含 group 名称,改为 true,包含 group
url_have_group_name = true
# 配置 Storage 信息,修改 store_path0 的信息
store_path0=/home/fastdfs/storage_group1_23000
# 其它的一般默认即可,例如
base_path=/tmp
group_name=group1
# storage服务器端口号
storage_server_port=23000
#存储路径数量, 必须和storage.conf文件一致
store_path_count=1
分别在两台服务器(192.168.0.104和192.168.0.105)执行:
/usr/bin/fdfs_monitor /etc/fdfs/storage_group1_23000.conf
正常则存在2个Active的storage。
[2022-11-13 13:30:10] DEBUG - base_path=/home/fastdfs/storage_group1_23000, connect_timeout=5, network_timeout=60, tracker_server_count=2, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=1, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
server_count=2, server_index=1
tracker server is 192.168.0.106:22123
group count: 1
Group 1:
group name = group1
disk total space = 99,701 MB
disk free space = 87,166 MB
trunk free space = 0 MB
storage server count = 2
active server count = 2
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.0.105
ip_addr = 192.168.0.105 ACTIVE
http domain =
version = 6.07
join time = 2022-11-13 13:22:41
up time = 2022-11-13 13:22:41
total storage = 99,701 MB
free storage = 87,168 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.0.106
if_trunk_server = 0
connection.alloc_count = 256
connection.current_count = 1
connection.max_count = 1
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 = 2022-11-13 13:29:46
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
Storage 2:
id = 192.168.0.106
ip_addr = 192.168.0.106 ACTIVE
http domain =
version = 6.07
join time = 2022-11-13 13:17:34
up time = 2022-11-13 13:17:34
total storage = 99,701 MB
free storage = 87,166 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
connection.alloc_count = 256
connection.current_count = 1
connection.max_count = 1
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 = 2022-11-13 13:30:09
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
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /etc/fdfs/storage_group1_23000.conf
查看两台服务器下的00/00目录是否存在相同的文件。
(1)测试正常下载:
fdfs_download_file /etc/fdfs/client.conf
(2)停止192.168.0.104的storage,然后测试下载。
/usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf stop
测试下载:
fdfs_download_file /etc/fdfs/client.conf
此时还可以正常下载。 (3)继续停止另一个storage server(192.168.0.105),再测试下载。
/usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf stop
测试下载:
fdfs_download_file /etc/fdfs/client.conf
此时就报错了,因为storage都已经停止了。
另外,可以使用浏览器去测试:http://(IP地址):80/group1/M00/00/00/(fileid)。
两台服务器都执行:
/usr/bin/fdfs_storaged /etc/fdfs/storage_group1_23000.conf
可以先恢复一台storage,然后上传文件,再恢复另一台storage,然后在新启动的storage观察文件是否被同步。
tracker_query_storage fail, error no: 28, error info: No space left on device
提示磁盘空间不足。 在tracker xx.conf中,将reserved_storage_space的值修改为5%,预留5%的磁盘空间。
本文旨在深入解析FastDFS集群部署的关键步骤,帮助读者构建高可用的文件存储系统。
1. FastDFS集群架构:介绍FastDFS的基本架构和关键组件,包括跟踪器(Tracker)和存储节点(Storage),帮助读者理解集群部署的基本原理。
2. 安装和配置FastDFS:详细介绍FastDFS的安装和配置过程,包括跟踪器节点和存储节点的设置,以及集群的初始化和配置文件的编辑等步骤。
3. 集群扩展和负载均衡:探讨如何扩展FastDFS集群的容量和性能,并介绍常用的负载均衡方法,以确保高效的文件存储和访问。
4. 故障处理和监控:介绍常见的故障情况和故障处理方法,以及如何设置监控和报警系统,保障集群的稳定运行。
通过本文,读者将深入了解FastDFS集群部署的关键步骤和技巧,了解构建高可用文件存储系统所需的核心知识。将提供清晰的指导和实践建议,帮助读者成功部署和管理FastDFS集群,实现高可用的文件存储环境。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。