很幸运参与零售云快消平台的公有云搭建及孵化项目. 零售云快消平台源于零售云家电 3C 平台私有项目, 是与公司业务强耦合的. 为了适用于全场景全品类平台, 集团要求项目平台化, 我们抢先并承担了此任务. 并由我来主要负责平台建设及项目落地.
今天讲解在零售云快消平台中使用的图片服务 FastDFS 集群搭建说明, 此集群模式是根据单机版的安装说明, 在之前已经分享过一篇 一张图讲解单机 FastDFS 图片服务器安装步骤(修订版) https://mp.weixin.qq.com/s/h97pRwW1Nc51bOIKoyynyw , 改造成最少机器分布式集群安装说明.
FastDFS 是什么?
FastDFS 是一个开源的轻量级分布式文件系统, 它对文件进行管理, 功能包括: 文件存储, 文件同步, 文件访问 (文件上传, 文件下载) 等, 解决了大容量存储和负载均衡的问题. 特别适合以文件为载体的在线服务, 如相册网站, 视频网站等等.
FastDFS 为互联网量身定制, 充分考虑了冗余备份, 负载均衡, 线性扩容等机制, 并注重高可用, 高性能等指标, 使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传, 下载等服务.
--- 来源于百度百科
FastDFS 简介
FastDFS 分两部分, 跟踪器 (tracker) 和存储节点(storage).
Tracker 是 FastDFS 的协调者, 负责管理所有的 storage server 和 group, 每个 storage 在启动后会连接 Tracker, 告知自己所属的 group 等信息, 并保持周期性的心跳, tracker 根据 storage 的心跳信息, 建立 group==>[storage server list]的映射表.
Storage 是以组 (卷, group 或 volume) 为单位组织, 一个 group 内包含多台 storage 机器, 数据互为备份, 存储空间以 group 内容量最小的 storage 为准, 所以建议 group 内的多个 storage 尽量配置相同, 以免造成存储空间的浪费.
FastDFS 是由 2008 年开始采用 C 语言研发致今在维护更新, 已经广泛使用, 创始人余庆 现以有他自己的公众号: 微信号: fastdfs100 , FastDFS 官方 GitHub https://github.com/happyfish100/ 已经有多个相关组件
最少机器高可用总览图
在以下配置中没有说明 VIP 的配置, 后面会对 VIP 详细说明.
VIP 的目的是统一负载 storageserver,storageserver 的伸缩性不影响使用方的.
一, 环境准备
软件版本说明:
https://github.com/happyfish100/libfastcommon 使用的版本: libfastcommon-1.0.41.tar.gz
FastDFS https://github.com/happyfish100/fastdfs 使用的版本: fastdfs-6.01.tar.gz
使用的版本: fastdfs-nginx-module-1.21.tar.gz
http://nginx.org/en/download.html 使用的版本: nginx-1.16.1.tar.gz
操作系统: CentOS 7.X
最低高可用
四台机器 分配情况:
- TrackerServer1 :192.168.0.1
- TrackerServer2 :192.168.0.2
- StorageServer1:192.168.0.3
- StorageServer2:192.168.0.4
Tracker 服务器准备上传文件
准备上传 / opt/apps 目录下:
- libfastcommon-1.0.41.tar.gz
- fastdfs-6.01.tar.gz
Storage 服务器准备上传文件
准备上传 / opt/apps 目录下:
- libfastcommon-1.0.41.tar.gz
- fastdfs-6.01.tar.gz
- fastdfs-nginx-module-1.21.tar.gz
- nginx-1.16.1.tar.gz
二, 安装过程
TrackerServer1 安装过程
1, 安装 libfastcommon-1.0.41.tar.gz
- tar -zxvf libfastcommon-1.0.41.tar.gz
- cd libfastcommon-1.0.41/
- ./make.sh
- ./make.sh install
2, 安装 FastDFS
- tar -zxvf fastdfs-6.01.tar.gz
- cd fastdfs-6.01/
- ./make.sh
- ./make.sh install
- # 配置文件准备
- cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
- cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
Tracker Server 配置
VIM /etc/fdfs/tracker.conf
修改配置如下:
- #tracker server 端口号
- port=22122
- # 存储日志和数据的根目录
- base_path=/opt/fastdfs/tracker
3, 开放防火墙端口
1)打开跟踪端口
VIM /etc/sysconfig/iptables
2)添加以下端口行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
3)重启防火墙
service iptables restart
4, 启动 Tracker
/etc/init.d/fdfs_trackerd start
TrackerServer2 安装过程
安装步骤同 TrackerServer1
StorageServer1 安装过程
1, 安装 libfastcommon-1.0.41.tar.gz
- tar -zxvf libfastcommon-1.0.41.tar.gz
- cd libfastcommon-1.0.41/
- ./make.sh
- ./make.sh install
2, 安装 FastDFS
- tar -zxvf fastdfs-6.01.tar.gz
- cd fastdfs-6.01/
- ./make.sh
- ./make.sh install
- # 配置文件准备
- cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
- cd /opt/apps/fastdfs-6.01/conf
- cp http.conf mime.types /etc/fdfs/
Storage Server 配置
VIM /etc/fdfs/storage.conf
修改配置如下:
- #storage server 端口号
- port=23000
- # 数据和日志文件存储根目录
- base_path=/opt/fastdfs/storage
- # 第一个存储目录
- store_path0=/opt/fastdfs/storepath0
- #tracker 服务器 IP 和端口
- tracker_server=192.168.0.1:22122
- tracker_server=192.168.0.2:22122
- #http 访问文件的端口(默认 8888, 看情况修改, 和 nginx 中保持一致)
- http.server_port=8888
3, 安装 Nginx 和 fastdfs-nginx-module
1)安装 fastdfs-nginx-module
- # 解压 fastdfs-nginx-module
- tar -zxvf fastdfs-nginx-module-1.21.tar.gz
- cd fastdfs-nginx-module-1.21/
- cp ./src/mod_fastdfs.conf /etc/fdfs
2)安装 Nginx
- # 解压 nginx
- tar -zxvf nginx-1.16.1.tar.gz
- cd nginx-1.16.1/
- # 安装 nginx_http_image_filter_module
- yum -y install gd-devel
- # 安装依赖组件
- yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel
- # 关联模块配置
- ./configure --add-module=../fastdfs-nginx-module-1.21/src --prefix=/usr/local/nginx --with-http_image_filter_module
- # 编译 nginx
- make
- # 安装 nginx
- make install
3)查看是否安装成功
/usr/local/nginx/sbin/nginx -V
查看插件是否安装成功
- [root@FastDFS nginx-1.16.1]# /usr/local/nginx/sbin/nginx -V
- nginx version: nginx/1.16.1
- built by gcc 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC)
- configure arguments: --add-module=../fastdfs-nginx-module-1.21/src --prefix=/usr/local/nginx --with-http_image_filter_module
- [root@FastDFS nginx-1.16.1]#
4)修改 Nginx 配置
修改 nginx.conf 配置
VIM /usr/local/nginx/conf/nginx.conf
修改配置如下:
- user nobody;
- worker_processes 1;
- events {
- worker_connections 1024;
- }
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- #tcp_nopush on;
- #keepalive_timeout 0;
- keepalive_timeout 65;
- #gzip on;
- server {
- listen 8888;
- server_name localhost;
- location ~/group1/M00 {
- ngx_fastdfs_module;
- }
- location / {
- root HTML;
- index index.HTML index.htm;
- }
- #error_page 404 /404.HTML;
- # redirect server error pages to the static page /50x.HTML
- #
- error_page 500 502 503 504 /50x.HTML;
- location = /50x.HTML {
- root HTML;
- }
- }
- upstream storage_server_group1 {
- server 192.168.0.3:8888 weight=10;
- server 192.168.0.4:8888 weight=10;
- }
- }
修改 mod_fastdfs.conf 配置
VIM /etc/fdfs/mod_fastdfs.conf
修改配置如下:
- #
- connect_timeout=10
- #tracker 服务器 IP 和端口
- tracker_server=192.168.0.1:22122
- tracker_server=192.168.0.2:22122
- # 是否启用 group 组名
- url_have_group_name=true
- #
- store_path0=/opt/fastdfs/storepath0
5, 开放防火墙端口
1)打开跟踪端口
VIM /etc/sysconfig/iptables
2)添加以下端口行:
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
- -A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
3)重启防火墙
service iptables restart
4, 启动 Storage
/etc/init.d/fdfs_storaged start
5, 启动 Nginx
- # 启动
- /usr/local/nginx/sbin/nginx
- # 停止
- /usr/local/nginx/sbin/nginx -s stop
- # 重启
- /usr/local/nginx/sbin/nginx -s reload
StorageServer2 安装过程
安装步骤同 StorageServer1 安装过程
测试上传图片
使用 TrackerServer1 机器进行测试
1,Client 配置
VIM /etc/fdfs/client.conf
修改配置如下:
- #
- base_path=/opt/apps/fastdfs/client
- #tracker 服务器 IP 和端口
- tracker_server=192.168.0.1:22122
- tracker_server=192.168.0.2:22122
2, 准备上传的图片
3, 上传图片
fdfs_upload_file /etc/fdfs/client.conf test.jpg
或使用以下命令测试
fdfs_test /etc/fdfs/client.conf upload test.jpg
测试结果
- [root@ecsf-toj5rfb9 apps]# fdfs_test /etc/fdfs/client.conf upload test.jpg
- This is FastDFS client test program v6.01
- Copyright (C) 2008, Happy Fish / YuQing
- FastDFS may be copied only under the terms of the GNU General
- Public License V3, which may be found in the FastDFS source kit.
- Please visit the FastDFS Home Page http://www.csource.org/
- for more detail.
- [2019-11-13 17:53:15] DEBUG - base_path=/opt/fastdfs/client, connect_timeout=10, 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
- tracker_query_storage_store_list_without_group:
- server 1. group_name=, ip_addr=6.0.36.217, port=23000
- server 2. group_name=, ip_addr=6.0.36.218, port=23000
- group_name=group1, ip_addr=192.168.0.4, port=23000
- storage_upload_by_filename
- group_name=group1, remote_filename=M00/00/00/BgAk2l3L0oSAAhsuAAHf-RXvI9M055.jpg
- source ip address: 192.168.0.4
- file timestamp=2019-11-13 17:53:08
- file size=122873
- file crc32=367993811
- example file url: http://192.168.0.4/group1/M00/00/00/BgAk2l3L0oSAAhsuAAHf-RXvI9M055.jpg
- storage_upload_slave_by_filename
- group_name=group1, remote_filename=M00/00/00/BgAk2l3L0oSAAhsuAAHf-RXvI9M055_big.jpg
- source ip address: 192.168.0.4
- file timestamp=2019-11-13 17:53:08
- file size=122873
- file crc32=367993811
- example file url: http://192.168.0.4/group1/M00/00/00/BgAk2l3L0oSAAhsuAAHf-RXvI9M055_big.jpg
来源: https://www.cnblogs.com/yuesf/p/11886267.html