fastdfs集群状态查询(在麒麟服务器上部署FastDFS)
fastdfs集群状态查询(在麒麟服务器上部署FastDFS)wget https://github.com/happyfish100/fastdfs/archive/V6.06.zip(2)下载 FastDFS整个搭建所需环境资源及用途如下表:(1) 下载libfastcommonwget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.zip
前言:本文为大家如何在麒麟服务器上部署FastDFS,请大家多多点赞、收藏、评论、关注哦![来看我]
什么是FastDFSFastDFS 是一个开源的高性能分布式文件系统(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:客户端,上传下载数据的服务器。
系统软件说明:
- CentOS 7.6
- libfastcommon: FastDFS分离出的一些公用函数包
- FastDFS: FastDFS本体
- fastdfs-nginx-module: FastDFS 和 nginx 的关联模块,解决组内同步延迟问题
- nginx
整个搭建所需环境资源及用途如下表:
(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) 安装需要的软件
<span style="font-weight: normal;">vim /etc/fdfs/tracker.conf需要修改的内容如下port=22122 # tracker服务器端口(默认22122 一般不修改)base_path=/data/fastdfs # 存储日志和数据的根目录 启动 fastdfs-tracker 服务并加入自动启动systemctl start fdfs_trackerdsystemctl enable fdfs_trackerd# centos 可以使用 systemctl enable 命令,但kylin操作系统运行会报错,需要# 安装 chkconfig 命令(apt install sysv-rc-conf),使用 chkconfig 来设置自动启动(将# fdfs_trackerd 的 2,3,4,5项启用即可)。 netstat -tulnp # 查看服务是否启动,端口是否打开</span>
(6) 编译安装libfastcommon
<span style="font-weight: normal;">vim /etc/fdfs/tracker.conf需要修改的内容如下port=22122 # tracker服务器端口(默认22122 一般不修改)base_path=/data/fastdfs # 存储日志和数据的根目录 启动 fastdfs-tracker 服务并加入自动启动systemctl start fdfs_trackerdsystemctl enable fdfs_trackerd# centos 可以使用 systemctl enable 命令,但kylin操作系统运行会报错,需要# 安装 chkconfig 命令(apt install sysv-rc-conf),使用 chkconfig 来设置自动启动(将# fdfs_trackerd 的 2,3,4,5项启用即可)。 netstat -tulnp # 查看服务是否启动,端口是否打开</span>
(7)编译安装FastDFS
unzip V6.06.zipcd fastdfs-6.06./make.sh./make.sh install 重新载入系统服务脚本systemctl daemon-reload 准备配置文件cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf # tracker节点cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf # storage节点cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf # 客户端文件,测试用cp /root/fastdfs/fastdfs-6.06/conf/http.conf /etc/fdfs/ # 供nginx访问使用cp /root/fastdfs/fastdfs-6.06/conf/mime.types /etc/fdfs/ # 供nginx访问使用
tracker server配置:
vim /etc/fdfs/storage.conf需要修改的内容如下port=23000 # storage服务端口(默认23000 一般不修改)base_path=/data/fastdfs # 数据和日志文件存储根目录store_path0=/data/fastdfs # 第一个存储目录tracker_server=192.168.0.1:22122 # tracker服务器IP和端口tracker_server=192.168.0.2:22122 # tracker服务器IP和端口http.server_port=8888 # http访问文件的端口(默认8888 看情况修改 和nginx中保持一致) 启动 fastdfs-storage 服务并加入自动启动systemctl start fdfs_storagedsystemctl enable fdfs_storaged# centos 可以使用 systemctl enable 命令,但kylin操作系统运行会报错,需要# 安装 chkconfig 命令(apt install sysv-rc-conf),使用 chkconfig 来设置自动启动(将# fdfs_storaged 的 2,3,4,5项启用即可)。 netstat -tulnp # 查看服务是否启动,端口是否打开
storage server 配置
vim /etc/fdfs/storage.conf需要修改的内容如下port=23000 # storage服务端口(默认23000 一般不修改)base_path=/data/fastdfs # 数据和日志文件存储根目录store_path0=/data/fastdfs # 第一个存储目录tracker_server=192.168.0.1:22122 # tracker服务器IP和端口tracker_server=192.168.0.2:22122 # tracker服务器IP和端口http.server_port=8888 # http访问文件的端口(默认8888 看情况修改 和nginx中保持一致) 启动 fastdfs-storage 服务并加入自动启动systemctl start fdfs_storagedsystemctl enable fdfs_storaged# centos 可以使用 systemctl enable 命令,但kylin操作系统运行会报错,需要# 安装 chkconfig 命令(apt install sysv-rc-conf),使用 chkconfig 来设置自动启动(将# fdfs_storaged 的 2,3,4,5项启用即可)。 netstat -tulnp # 查看服务是否启动,端口是否打开
查看集群状态
# fdfs_monitor /etc/fdfs/storage.conf list
Client配置
# vim /etc/fdfs/client.conf
#需要修改的内容如下
base_path=/data/fastdfstracker_server=192.168.0.1:22122 # tracker服务器IP和端口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 配置文件:
# cp /root/fastdfs/nginx/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs# vim /etc/fdfs/mod_fastdfs.conf需要修改的内容如下:注意此处容易漏掉 tracker server 配置,导致 nginx 启动后异常,可查看 nginx 错误日志解决。tracker_server = 192.168.0.1:22122 # tracker服务器IP和端口tracker_server = 192.168.0.2:22122 # tracker服务器IP和端口url_have_group_name=truebase_path=/data/fastdfsstore_path0=/data/fastdfs
配置 nginx.conf:
# vim /usr/local/nginx/conf/nginx.conf 增加如下内容:server { listen 8888; ## 该端口为storage.conf中的http.server_port相同 server_name localhost; location ~/group[0-9]/ { root /data/fastdfs; ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
测试下载,用外部浏览器访问刚才已传过的文件,引用返回的 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 关键配置文件如下:
upstream fdfs_group01 { server 192.168.0.10:8888 weight=1 max_fails=2 fail_timeout=30s; server 192.168.0.11:8888 weight=1 max_fails=2 fail_timeout=30s;}server { listen 80; server_name localhost; location /group01{ proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_pass http://fdfs_group01; expires 30d; }}
keepalived 关键配置文件如下:
global_defs { router_id LVS_DEVEL} vrrp_script chk_ngx { script "/etc/keepalived/check_nginx.sh" interval 2 weight -5 fall 3 rise 2} vrrp_instance VI_1 { interface eno16777984 state MASTER priority 100 virtual_router_id 11 advert_int 1 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 192.168.0.100 unicast_peer { 192.168.0.101 } virtual_ipaddress { 192.168.0.200 } track_script { chk_ngx } notify_master "/etc/keepalived/notify.sh master" notify_backup "/etc/keepalived/notify.sh backup" notify_fault "/etc/keepalived/notify.sh fault"}
nginx 监测脚本如下:
check_nginx.sh
#!/bin/bash counter=$(ps -C nginx --no-heading|wc -l)if [ "${counter}" = "0" ]; then exit 1else exit 0fi
作者:李凌
更多干货尽在【中国信创服务社区】,点击左下角“了解更多”即可进入!