一、FastDFS部署文件下载
1.1 部署逻辑
FastDFS部署分为两部分:
1、FastDFS文件系统部署
FastDFS文件系统分为tracker、storage两部分,tracker作为文件系统的入口,用来调度管理storage;storage节点负责真正存储文件;
2、Nginx服务部署
部署Nginx服务通过nginx-fastdfs插件向外提供http协议的文件访问入口.
1.2 安装包下载
1、fastdfs-6.15.2.tar.gz
下载地址:https://codeload.github.com/happyfish100/fastdfs/tar.gz/refs/tags/V6.15.2
2、libfastcommon-1.0.84.tar.gz
下载地址:https://codeload.github.com/happyfish100/libfastcommon/tar.gz/refs/tags/V1.0.84
3、libserverframe-1.2.12.tar.gz
下载地址:https://codeload.github.com/happyfish100/libserverframe/tar.gz/refs/tags/V1.2.12
4、fastdfs-nginx-module-1.26.tar.gz
下载地址:https://codeload.github.com/happyfish100/fastdfs-nginx-module/tar.gz/refs/tags/V1.26(Nginx的fastdfs模块,在配置nginx访问fastdfs时需要)
5、nginx-1.30.2.tar.gz
下载地址:https://nginx.org/download/nginx-1.30.2.tar.gz
二、tracker节点部署
2.1 安装过程
1、在部署trakcer服务的主机下新建fastdfs目录,并将下载的文件上传到fastdfs目录下,在目录下解压文件;
cd fastdfs
tar -xzvf fastdfs-6.15.2.tar.gz
tar -zxvf libfastcommon-1.0.84.tar.gz
tar -zxvf libserverframe-1.2.12.tar.gz
2、检查依赖的包
rpm -q libevent
rpm -q pcre-devel
rpm -q zlib-devel
3、安装libfastcommon
cd libfastcommon-1.0.84/
./make.sh && ./make.sh install
4、安装3、libserverframe
cd libserverframe-1.2.12/
./make.sh && ./make.sh install
5、安装fastdfs
cd fastdfs-6.15.2/
./make.sh && ./make.sh install
2.2 tracker服务配置
1、创建tracker文件存储路径
mkdir -p /data/fastdfs/tracker
2、配置tracker.conf
vi /etc/fdfs/tracker.conf
配置参数:
disabled = false
port = 22122
base_path = /data/fastdfs/tracker(配置为上面创建的tracker文件存放路径)
3、启动/停止tracker服务
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
4、查看fastdfs日志
日志文件路径
/data/fastdfs/tracker/logs/
/data/fastdfs/storage/logs/
其中/data/fastdfs实在confg文件中配置的base_path路径.
三、storage节点部署
3.1 安装过程
1、在部署storage服务的主机下新建fastdfs目录,并将下载的文件上传到fastdfs目录下,在目录下解压文件;
cd fastdfs
tar -xzvf fastdfs-6.15.2.tar.gz
tar -zxvf libfastcommon-1.0.84.tar.gz
tar -zxvf libserverframe-1.2.12.tar.gz
2、检查依赖的包
rpm -q libevent
rpm -q pcre-devel
rpm -q zlib-devel
3、安装libfastcommon
cd libfastcommon-1.0.84/
./make.sh && ./make.sh install
4、安装3、libserverframe
cd libserverframe-1.2.12/
./make.sh && ./make.sh install
5、安装fastdfs
cd fastdfs-6.15.2/
./make.sh && ./make.sh install
storage节点至少要部署2个,文件上传后会在这两个节点之间同步存储。
3.2 storage服务配置
1、创建storage文件存储路径
mkdir -p /data/fastdfs/storage
2、配置storage.conf
vi /etc/fdfs/storage.conf
配置参数:
disabled = false
base_path = /data/fastdfs/storage
store_path0 = /data/fastdfs/storage
tracker_server = 10.76.104.44:22122(修改为tracker节点的IP和端口)
3、启动/停止storage服务
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
四、测试fastdfs文件上传
4.1 配置fastdfs的client
vi /etc/fdfs/client.conf
配置参数:
tracker_server = 10.76.104.44:22122(修改为tracker节点的IP和端口)
4.2 测试文件上传
fdfs_upload_file /etc/fdfs/client.conf /测试文件目录/测试文件.txt
文件上传成功则返回文件路径:M00/00/00/CkxoO2oznHmAX2ccAAAAAAAAAAA0334200
五、Nginx部署
5.1 下载安装包
配置fastdfs的nginx服务需要下载fastdfs-nginx-module和nginx安装包,nginx服务需要在所有storage节点上部署,tracker可以选择部署。部署后的效果是可以直接访问storage上nginx访问文件,也可以通过访问tracker上的nginx访问文件系统(实际是负载分发到storage)
1、fastdfs-nginx-module-1.26.tar.gz
Nginx的fastdfs模块,在配置nginx访问fastdfs时需要,下载地址:https://codeload.github.com/happyfish100/fastdfs-nginx-module/tar.gz/refs/tags/V1.26
2、nginx-1.30.2.tar.gz
下载地址:https://nginx.org/download/nginx-1.30.2.tar.gz
5.2 安装nginx及fastdfs模块
1、上传安装包到fastdfs目录后,解压
tar -zxvf nginx-1.30.2.tar.gz
tar -zxvf fastdfs-nginx-module-1.26.tar.gz
2、配置nginx插件
cd nginx-1.30.2/
注意:如果本地环境已经安装了nginx服务,重新安装nginx会覆盖原来安装的nginx服务,可能会丢失掉之前安装的插件。
./configure --prefix=/usr/local/nginx --add-module=/root/fastdfs/fastdfs-nginx-module-1.26/src
如果是在以前安装的nginx服务上新增插件,可以先查看之前的安装情况:
/usr/local/nginx/sbin/nginx -V
通过此命令查看并备份出原nginx编译安装参数,在原编译安装参数基础上新增fastdfs模块编译安装参数.
3、编译&安装
make
make install
5.3 配置nginx的fastdfs模块访问
1、拷贝配置文件
cp /root/fastdfs/fastdfs-6.15.2/conf/http.conf /etc/fdfs/
cp /root/fastdfs/fastdfs-6.15.2/conf/mime.types /etc/fdfs/
cp /root/fastdfs/fastdfs-nginx-module-1.26/src/mod_fastdfs.conf /etc/fdfs/
2、配置mod_fastdfs.conf
vi /etc/fdfs/mod_fastdfs.conf
配置参数:
tracker_server=10.76.104.44:22122(修改为tracker节点的IP和端口)
url_have_group_name = true(url包含group名)
store_path0=/data/fastdfs/storage(storage节点文件存储路径)
5.4 配置nginx的地址转发
1、配置storage节点上的nginx.conf
vi /usr/local/nginx/conf/nginx.conf
server {
listen 30000;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
client_max_body_size 500M;
# fastdfs 的文件访问路径, 将fastdfs文件访问的根路径指向ngx_fastdfs_module
location /group1/ {
ngx_fastdfs_module;
}
#其它路径配置
location /others/ {
location /others/xxx1/ {
。。。
}
}
}
2、配置tracker节点上的nginx.conf实现负载分发
vi /usr/local/nginx/conf/nginx.conf
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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# 定义 storage 上游服务器组
upstream fastdfs_storage {
# 负载均衡策略(默认轮询)
server storage节点一IP:30000;
server storage节点二IP:30000;
# 可选:权重分配
# server storage节点一IP:30000 weight=1;
# server storage节点二IP:30000 weight=1;
}
server {
listen 80;
server_name localhost;
#access_log logs/host.access.log main;
# 将 /group1/ 的请求转发到 storage 组
location /group1/ {
proxy_pass http://fastdfs_storage;
# 传递客户端真实 IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 超时设置
proxy_connect_timeout 10;
proxy_read_timeout 30;
proxy_send_timeout 30;
}
location / {
root html;
index index.html index.htm;
}
}
5.4 配置nginx后台服务
vi /etc/systemd/system/nginx.service
文件内容:
[Unit]
Description=Nginx server for FastDFS
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
5.5 启动/停止nginx服务
systemctl start nginx.service
systemctl stop nginx.service
systemctl restart nginx.service
5.6 验证通过nginx服务访问上传的文件
1、直接访问storage节点上的nginx
curl http://storage节点IP:30000/group1/M00/00/00/CkxoO2oznHmAX2ccAAAAAAAAAAA0334200
2、访问tracker节点上的nginx
curl http://trackerIP/group1/M00/00/00/CkxoO2oznHmAX2ccAAAAAAAAAAA0334200
6.启用多个tracker节点
6.1.配置并启动tracker
与单节点配置tracker节点一样配置tracker.conf文件;
启动trakerd服务
6.2.配置storage
修改storage.conf文件配置,增加新加入的tracker节点配置;
每增加一个tracker节点,增加一行tracker_server配置,例如:
tracker_server=10.0.0.1:22122
tracker_server=10.0.0.2:22122