飞道的博客

在麒麟服务器上部署FastDFS

485人阅读  评论(0)

FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。

FastDFS 系统有三个角色:跟踪服务器(Tracker Server)存储服务器(Storage Server)客户端(Client)

  • Tracker Server: 跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的storage server和group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。多个 Tracker 之间是对等关系,不存在单点故障。
  • Storage Server: 存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,组内的storage server上的数据互为备份。
  • Client:客户端,上传下载数据的服务器。

1 部署 FastDFS

系统软件说明:

  • CentOS  7.6
  • libfastcommon:  FastDFS分离出的一些公用函数包
  • FastDFS:  FastDFS本体
  • fastdfs-nginx-module:  FastDFS 和 nginx 的关联模块,解决组内同步延迟问题
  • nginx

 

整个搭建所需环境资源及用途如下表:

名称 IP地址 应用
tracker01 192.168.0.1 FastDFS,libfastcommon
tracker02 192.168.0.2 FastDFS,libfastcommon
storage01 192.168.0.10 FastDFS,libfastcommon,nginx,fastdfs-nginx-module
storage02 192.168.0.11 FastDFS,libfastcommon,nginx,fastdfs-nginx-module
nginx01 192.168.0.100 nginx,keepalived
nginx02 192.168.0.101 nginx,keepalived
VIP 192.168.0.200 -

 

(1) 下载libfastcommon

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.zip

 

(2)下载 FastDFS

wget https://github.com/happyfish100/fastdfs/archive/V6.06.zip

 

(3)下载 nginx

wget https://nginx.org/download/nginx-1.18.0.tar.gz

 

(4)下载 nginx 编译依赖

pcre

wget https://ftp.pcre.org/pub/pcre/pcre-8.44.zip

zlib

wget http://zlib.net/zlib-1.2.11.tar.gz

openssl

wget https://github.com/openssl/openssl/archive/OpenSSL_1_1_1g.zip

fastdfs-nginx-module

wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.zip

 

(5) 安装需要的软件


  
  1. yum-yinstall unzip
  2. yum-yinstallgccgcc- c++autoconf automakemake

 

(6) 编译安装libfastcommon


  
  1. unzip V1 .0 .43.zip
  2. cd libfastcommon -1.0 .43
  3. ./ make.sh
  4. ./ make.sh install

(7) 编译安装FastDFS


  
  1. unzip V6.06.zip
  2. cd fastdfs-6.06
  3. ./make.sh
  4. ./make.sh install
  5. 重新载入系统服务脚本
  6. systemctl daemon-reload
  7. 准备配置文件
  8. cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf # tracker节点
  9. cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf # storage节点
  10. cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf # 客户端文件,测试用
  11. cp /root/fastdfs/fastdfs-6.06/conf/http.conf /etc/fdfs/ # 供nginx访问使用
  12. cp /root/fastdfs/fastdfs-6.06/conf/mime.types /etc/fdfs/ # 供nginx访问使用

 

tracker server配置:


  
  1. <span style= "font-weight: normal;">vim /etc/fdfs/tracker.conf
  2. 需要修改的内容如下
  3. port=22122 # tracker服务器端口(默认22122,一般不修改)
  4. base_path=/data/fastdfs # 存储日志和数据的根目录
  5. 启动 fastdfs-tracker 服务并加入自动启动
  6. systemctl start fdfs_trackerd
  7. systemctl enable fdfs_trackerd
  8. # centos 可以使用 systemctl enable 命令,但kylin操作系统运行会报错,需要
  9. # 安装 chkconfig 命令(apt install sysv-rc-conf),使用 chkconfig 来设置自动启动(将
  10. # fdfs_trackerd 的 2,3,4,5项启用即可)。
  11. netstat -tulnp # 查看服务是否启动,端口是否打开</span>

 

storage server 配置


  
  1. vim /etc/fdfs/storage.conf
  2. 需要修改的内容如下
  3. port=23000 # storage服务端口(默认23000,一般不修改)
  4. base_path=/data/fastdfs # 数据和日志文件存储根目录
  5. store_path0=/data/fastdfs # 第一个存储目录
  6. tracker_server=192.168.0.1:22122 # tracker服务器IP和端口
  7. tracker_server=192.168.0.2:22122 # tracker服务器IP和端口
  8. http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
  9. 启动 fastdfs-storage 服务并加入自动启动
  10. systemctl start fdfs_storaged
  11. systemctl enable fdfs_storaged
  12. # centos 可以使用 systemctl enable 命令,但kylin操作系统运行会报错,需要
  13. # 安装 chkconfig 命令(apt install sysv-rc-conf),使用 chkconfig 来设置自动启动(将
  14. # fdfs_storaged 的 2,3,4,5项启用即可)。
  15. netstat -tulnp # 查看服务是否启动,端口是否打开

 

查看集群状态

# fdfs_monitor /etc/fdfs/storage.conf list

 

Client配置

# vim /etc/fdfs/client.conf

#需要修改的内容如下


  
  1. base_path=/data/fastdfs
  2. tracker_server= 192.168. 0.1: 22122 # tracker服务器IP和端口
  3. tracker_server= 192.168. 0.2: 22122 # tracker服务器IP和端口

 

上传文件测试:

# fdfs_upload_file /etc/fdfs/client.conf testfile.zip

测试返回文件路径和 ID 则表示成功,如:group1/M00/00/00/xxxxxx.zip

 

2 部署 nginx 和 fastdfs-nginx-module

(1)编译安装

参考编译安装 nginx 的文章 https://www.yuque.com/liling-rpu83/qtgq0i/wkplwm ,在编译过程中加入 fastdfs-nginx-module 模块即可:

./configure --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-openssl=../openssl-OpenSSL_1_1_1g --with-pcre=../pcre-8.44 --with-zlib=../zlib-1.2.11 --add-module=../fastdfs-nginx-module-1.22/src

 

# make

# make install

注意要先安装 libfastcommon,否则编译时会报错。

(2)配置运行

配置 fastdfs-nginx-module 配置文件:


  
  1. # cp /root/fastdfs/nginx/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs
  2. # vim /etc/fdfs/mod_fastdfs.conf
  3. 需要修改的内容如下:
  4. 注意此处容易漏掉 tracker server 配置,导致 nginx 启动后异常,可查看 nginx 错误日志解决。
  5. tracker_server = 192.168 .0 .1 :22122 # tracker服务器IP和端口
  6. tracker_server = 192.168 .0 .2 :22122 # tracker服务器IP和端口
  7. url_have_group_name=true
  8. base_path=/data/fastdfs
  9. store_path0=/data/fastdfs

 

配置 nginx.conf:


  
  1. # vim /usr/local/nginx/conf/nginx.conf
  2. 增加如下内容:
  3. server {
  4. listen 8888; ## 该端口为storage.conf中的http.server_port相同
  5. server_name localhost;
  6. location ~/group[0-9]/ {
  7. root /data/fastdfs;
  8. ngx_fastdfs_module;
  9. }
  10. error_page 500 502 503 504 /50x.html;
  11. location = /50x.html {
  12. root html;
  13. }
  14. }

 

测试下载,用外部浏览器访问刚才已传过的文件,引用返回的 ID

http://xx.xx.xx.xx:8888/group1/M00/00/00/rBFSDV7zFCmAW-KFAA3wT-06qHQ.06.zip

弹出下载则目前 nginx 已经 OK。

 

3 配置文件访问的负载均衡和高可用

在192.168.0.100和101上安装nginx、keepalived

yum install -y nginx keepalived

 

nginx 关键配置文件如下:


  
  1. upstream fdfs_group01 {
  2. server 192.168.0.10:8888 weight= 1 max_fails= 2 fail_timeout= 30s;
  3. server 192.168.0.11:8888 weight= 1 max_fails= 2 fail_timeout= 30s;
  4. }
  5. server {
  6. listen 80;
  7. server_name localhost;
  8. location /group01{
  9. proxy_next_upstream http_502 http_504 error timeout invalid_header;
  10. proxy_pass http://fdfs_group01;
  11. expires 30d;
  12. }
  13. }

keepalived 关键配置文件如下:


  
  1. global_defs {
  2. router_id LVS_DEVEL
  3. }
  4. vrrp_script chk_ngx {
  5. script "/etc/keepalived/check_nginx.sh"
  6. interval 2
  7. weight -5
  8. fall 3
  9. rise 2
  10. }
  11. vrrp_instance VI_1 {
  12. interface eno16777984
  13. state MASTER
  14. priority 100
  15. virtual_router_id 11
  16. advert_int 1
  17. authentication {
  18. auth_type PASS
  19. auth_pass 1111
  20. }
  21. unicast_src_ip 192.168.0.100
  22. unicast_peer {
  23. 192.168.0.101
  24. }
  25. virtual_ipaddress {
  26. 192.168.0.200
  27. }
  28. track_script {
  29. chk_ngx
  30. }
  31. notify_master "/etc/keepalived/notify.sh master"
  32. notify_backup "/etc/keepalived/notify.sh backup"
  33. notify_fault "/etc/keepalived/notify.sh fault"
  34. }

 

nginx 监测脚本如下:

check_nginx.sh


  
  1. #!/bin/bash
  2. counter=$(ps -C nginx --no-heading|wc -l)
  3. if [ "${counter}" = "0" ]; then
  4. exit 1
  5. else
  6. exit 0
  7. fi

 

作者:李凌

本文转自【中国信创服务社区】


转载:https://blog.csdn.net/m0_46573967/article/details/113536742
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场