FastDFS集群构建【Docker-Compose】

1.1 Docker安装
1.2 Docker-Compose安装

1.3. 三、集群搭建规划

IP地址 主机名称 备注
192.168.3.248 node01 tracker+storage
192.168.3.249 node01 tracker+storage

开放端口: 22122(tracker服务的端口)、23002(storage服务的端口)、8888(nginx服务的端口)

安装根目录:/data/fastdfs

1.4. 四、开始搭建FastDFS集群

1.4.1. 1) 拉取镜像包

docker pull morunchang/fastdfs

1.4.2. 2) 创建tracker工作目录

mkdir -p /data/fastdfs/tracker/data /data/fastdfs/tracker/conf

1.4.3. 3)创建tracker.conf配置文件

cat <<EOF > /data/fastdfs/tracker/conf/tracker.conf
disabled=false
bind_addr=
port=22122
connect_timeout=30
network_timeout=30
base_path=/data/fast_data
max_connections=256
accept_threads=1
work_threads=4
store_lookup=2
store_group=group1
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
trunk_compress_binlog_min_interval = 0
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
log_file_keep_days = 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
EOF

1.4.4. 4)创建tracker.sh文件

cat <<EOF > /data/fastdfs/storage/conf/tracker.sh
#!/bin/sh
/data/fastdfs/tracker/fdfs_trackerd /etc/fdfs/tracker.conf
/etc/nginx/sbin/nginx
tail -f /data/fast_data/logs/trackerd.log
EOF

1.4.5. 5)如果你开启了防火墙必须进行下面操作

放行22122端口

firewall-cmd --zone=public --add-port=22122/tcp --permanent

重新加载新的放行列表

firewall-cmd --reload

查看放行端口列表中是否存在

firewall-cmd --list-all

1.4.6. 6) 创建storage工作目录

mkdir -p /data/fastdfs/storage/data /data/fastdfs/storage/conf

1.4.7. 7)创建storage.conf配置文件

cat <<EOF > /data/fastdfs/storage/conf/storage.conf
disabled=false
group_name=group1
bind_addr=
client_bind=true
port=23002
connect_timeout=30
network_timeout=30
heart_beat_interval=30
stat_report_interval=60
base_path=/data/fast_data
max_connections=256
buff_size = 256KB
accept_threads=1
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/fast_data
subdir_count_per_path=256

tracker集群(必须改为自己的IP)

tracker_server=192.168.3.248:22122
tracker_server=192.168.3.249:22122
log_level=debug
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 = true
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
log_file_keep_days = 0
file_sync_skip_invalid_record=false
use_connection_pool = false
connection_pool_max_idle_time = 3600
http.domain_name=
http.server_port=8888
EOF

1.4.8. 8)创建nginx.conf配置文件

cat <<EOF > /data/fastdfs/storage/conf/nginx.conf
user  root;
worker_processes  1;
error_log  /data/fast_data/logs/nginx-error.log;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /data/fast_data/logs/nginx-access.log  main;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8888;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ~ /group1/M00 {
                    root /data/fast_data/data;
                    ngx_fastdfs_module;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
EOF

1.4.9. 9)创建mod_fastdfs.conf配置文件

cat <<EOF > /data/fastdfs/storage/conf/mod_fastdfs.conf
connect_timeout=30
network_timeout=30
base_path=/data/fast_data
load_fdfs_parameters_from_tracker=true
storage_sync_file_max_delay = 86400
use_storage_id = false
storage_ids_filename = storage_ids.conf
#tracker集群
tracker_server=192.168.3.248:22122
tracker_server=192.168.3.249:22122
storage_server_port=23002
group_name=group1
url_have_group_name = true
store_path_count=1
store_path0=/data/fast_data
log_level=info
log_filename=
response_mode=proxy
if_alias_prefix=
flv_support = true
flv_extension = flv
group_count = 0

#HTTP default content type
http.default_content_type = application/octet-stream

#MIME types mapping filename
#MIME types file format: MIME_type extensions
#such as: image/jpeg jpeg jpg jpe
#you can use apache’s MIME file: mime.types
http.mime_types_filename=/etc/nginx/conf/mime.types
EOF

1.4.10. 10)创建storage.sh启动脚本

cat <<EOF > /data/fastdfs/storage/conf/storage.sh
#!/bin/sh
/data/fastdfs/storage/fdfs_storaged /etc/fdfs/storage.conf
/etc/nginx/sbin/nginx
tail -f /data/fast_data/logs/storaged.log
EOF

1.4.11. 11)创建client.conf配置文件

cat <<EOF > /data/fastdfs/storage/conf/client.conf
# connect timeout in seconds
# default value is 30s
connect_timeout=30

# network timeout in seconds
# default value is 30s
network_timeout=30

# the base path to store log files
base_path=/data/fast_data

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
#tracker集群
tracker_server=192.168.3.248:22122
tracker_server=192.168.3.249:22122

#standard log level as syslog, case insensitive, value list:
### emerg for emergency
### alert
### crit for critical
### error
### warn for warning
### notice
### info
### debug
log_level=info

# if use connection pool
# default value is false
# since V4.05
use_connection_pool = false

# connections whose the idle time exceeds this time will be closed
# unit: second
# default value is 3600
# since V4.05
connection_pool_max_idle_time = 3600

# if load FastDFS parameters from tracker server
# since V4.05
# default value is false
load_fdfs_parameters_from_tracker=false

# if use storage ID instead of IP address
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# default value is false
# since V4.05
use_storage_id = false

# specify storage ids filename, can use relative or absolute path
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# since V4.05
storage_ids_filename = storage_ids.conf

#HTTP settings
http.tracker_server_port=80

#use "#include" directive to include HTTP other settiongs
#include http.conf
EOF

1.4.12. 12)开放Storage的端口

firewall-cmd --zone=public --add-port=23002/tcp --permanent
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

1.4.13. 13)创建docker-compose.yml编排文件

cat <<EOF > /data/fastdfs/docker-compose.yml
version: '3.7'
services:
  fastdfs-tracker:
    image: morunchang/fastdfs
    container_name: fastdfs-tracker
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/fastdfs/tracker/data:/data/fast_data
      - /data/fastdfs/tracker/conf/tracker.conf:/etc/fdfs/tracker.conf
    environment:
      - TZ=Asia/Shanghai
    network_mode: "host"
    command: "sh tracker.sh"

  fastdfs-storage:
    image: morunchang/fastdfs
    container_name: fastdfs-storage
    restart: always
    volumes:
      - /etc/localtime:/etc/localtime
      - /data/fastdfs/storage/data:/data/fast_data
      - /data/fastdfs/storage/conf/storage.sh:/storage.sh
      - /data/fastdfs/storage/conf/storage.conf:/etc/fdfs/storage.conf
      - /data/fastdfs/storage/conf/nginx.conf:/etc/nginx/conf/nginx.conf
      - /data/fastdfs/storage/conf/mod_fastdfs.conf:/etc/fdfs/mod_fastdfs.conf
      - /data/fastdfs/storage/conf/client.conf:/data/fastdfs/conf/client.conf
    environment:
      - TZ=Asia/Shanghai
    network_mode: "host"
    command: "sh storage.sh"
EOF

1.4.14. 14)启动编排好的服务

cd /data/fastdfs/ && docker-compose up -d

1.4.15. 15)查看启动日志

docker-compose logs -f

1.4.16. 16)查看启动的服务

docker-compose ps

1.4.17. 17)查看fastdfs集群运行情况

docker exec -it fastdfs-storage fdfs_monitor /data/fastdfs/conf/client.conf

参数说明 tracker_server_count:2 --表示2个Tracker Server tracker server is
192.168.163.130:22122 --表示Leader Tracker group count: 1 --表示有1个group group name = group1 --组名称是group1 storage server count = 2
–组内有2个storage active server count = 2 --活动的storage有2个 storage server port = 23002 --storage的端口 storage HTTP port = 8888 --storage的文件访问端口
store path count = 1 --storage只挂了一个存储目录 total_upload_count = 11
–总共上传了多少个文件 total_upload_bytes = 691405 --总共上传了多少字节 success_upload_bytes = 691405 --成功上传了多少字节 total_download_count = 2
–总共下载了多少文件(使用java客户端)

1.5. 五、.NET5连接集群

2. 附录:

解决tree乱码问题:

alias tree='tree --charset ASCII'

【来源自朝夕教育课件】

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值