龙空技术网

FastDFS集群部署

java世界观 755

前言:

现时各位老铁们对“fdfsnginx”可能比较关注,大家都想要学习一些“fdfsnginx”的相关内容。那么小编也在网络上搜集了一些有关“fdfsnginx””的相关资讯,希望咱们能喜欢,姐妹们快快来学习一下吧!

环境准备使用的系统软件

名称

说明

centos7.xlibfatscommonFastDFS分离出的一些公用函数包FastDFSFastDFS本体fastdfs-nginx-moduleFastDFS和nginx的关联模块nginxnginx1.15.4

编译环境

yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel wget vim -y
磁盘目录

说明

位置

所有安装包/usr/local/src数据存储位置/home/dfs/#这里我为了方便把日志什么的都放到了dfs

mkdir /home/dfs #创建数据存储目录cd /usr/local/src #切换到安装目录准备下载安装包
安装libfatscommon
git clone  --depth 1cd libfastcommon/./make.sh && ./make.sh install #编译安装
安装FastDFS
cd ../ #返回上一级目录git clone  --depth 1cd fastdfs/./make.sh && ./make.sh install #编译安装#配置文件准备cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.confcp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.confcp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf #客户端文件,测试用cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ #供nginx访问使用cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ #供nginx访问使用
安装fastdfs-nginx-module
cd ../ #返回上一级目录git clone  --depth 1cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
安装nginx — tracker 的先不装
wget  #下载nginx压缩包tar -zxvf nginx-1.15.4.tar.gz #解压cd nginx-1.15.4/#添加fastdfs-nginx-module模块./configure --add-module=/usr/local/src/fastdfs-nginx-module/src/ make && make install #编译安装
分布式部署tracker配置
#服务器ip为 192.168.52.2,192.168.52.3,192.168.52.4#我建议用ftp下载下来这些文件 本地修改vim /etc/fdfs/tracker.conf#需要修改的内容如下port=22122  # tracker服务器端口(默认22122,一般不修改)base_path=/home/dfs  # 存储日志和数据的根目录
storage配置
vim /etc/fdfs/storage.conf#需要修改的内容如下port=23000  # storage服务端口(默认23000,一般不修改)base_path=/home/dfs  # 数据和日志文件存储根目录store_path0=/home/dfs  # 第一个存储目录tracker_server=192.168.52.2:22122  # 服务器1tracker_server=192.168.52.3:22122  # 服务器2tracker_server=192.168.52.4:22122  # 服务器3http.server_port=8888  # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
client测试 --可以用storage直接测
vim /etc/fdfs/client.conf#需要修改的内容如下base_path=/home/dfstracker_server=192.168.52.2:22122  # 服务器1tracker_server=192.168.52.3:22122  # 服务器2tracker_server=192.168.52.4:22122  # 服务器3#保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gzfdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
配置nginx访问 ----storage 的nginx配置
vim /etc/fdfs/mod_fastdfs.conf#需要修改的内容如下tracker_server=192.168.52.2:22122  # 服务器1tracker_server=192.168.52.3:22122  # 服务器2tracker_server=192.168.52.4:22122  # 服务器3url_have_group_name=truestore_path0=/home/dfs#配置nginx.configvim /usr/local/nginx/conf/nginx.conf#添加如下配置server {    listen       8888;    ## 该端口为storage.conf中的http.server_port相同    server_name  localhost;    location ~/group[0-9]/ {        ngx_fastdfs_module;    }    error_page   500 502 503 504  /50x.html;    location = /50x.html {    root   html;    }}
启动防火墙
#不关闭防火墙的话无法使用systemctl stop firewalld.service #关闭systemctl restart firewalld.service #重启
tracker
/etc/init.d/fdfs_trackerd start #启动tracker服务/etc/init.d/fdfs_trackerd restart #重启动tracker服务/etc/init.d/fdfs_trackerd stop #停止tracker服务chkconfig fdfs_trackerd on #自启动tracker服务
storage
/etc/init.d/fdfs_storaged start #启动storage服务/etc/init.d/fdfs_storaged restart #重动storage服务/etc/init.d/fdfs_storaged stop #停止动storage服务chkconfig fdfs_storaged on #自启动storage服务
nginx
/usr/local/nginx/sbin/nginx #启动nginx/usr/local/nginx/sbin/nginx -s reload #重启nginx/usr/local/nginx/sbin/nginx -s stop #停止nginx

# 开机启动

vi /etc/rc.local 加入:/usr/local/nginx/sbin/nginx

检测集群

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf# 会显示会有几台服务器 有3台就会 显示 Storage 1-Storage 3的详细信息
说明配置文件
tracker_server #有几台服务器写几个group_name #地址的名称的命名bind_addr #服务器ip绑定store_path_count #store_path(数字)有几个写几个store_path(数字) #设置几个储存地址写几个 从0开始
可能遇到的问题
如果不是root 用户 你必须在除了cd的命令之外 全部加sudo如果不是root 用户 编译和安装分开进行 先编译再安装如果上传成功 但是nginx报错404 先检查mod_fastdfs.conf文件中的store_path0是否一致如果nginx无法访问 先检查防火墙 和 mod_fastdfs.conf文件tracker_server是否一致如果不是在/usr/local/src文件夹下安装 可能会编译出错

下面专门解释tracker 和 storage 的nginx的事情

在各存储节点(10.180.8.133、10.180.8.130、10.180.8.104、10.180.8.136)上安装 Nginx1、fastdfs-nginx-module 作用说明FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入 文件复制,有同步延迟的问题。假设 Tracker 服务器将文件上传到了 192.168.1.135,上传成功后文件 ID 已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.1.136,在文件还 没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.1.136 上取文件,就会出现文件无法访问的 错误。而 fastdfs-nginx-module 可通过浏览器访问测试时上传的文件group1/M00/00/00/CrQIglc8CGqAP6DWAAP75-7iGRo951.png

在跟踪器节点(192.168.1.131、192.168.1.132)上安装 Nginx1、在 tracker 上安装的 nginx 主要为了提供 http 访问的反向代理、负载均衡以及缓存服务。2、安装编译 Nginx 所需的依赖包# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

上传 ngx_cache_purge-2.3.tar.gz 到/usr/local/src,解压# cd /usr/local/src/ # tar -zxvf ngx_cache_purge-2.3.tar.gz4、上传当前的稳定版本 Nginx(nginx-1.6.2.tar.gz)到/usr/local/src 目录5、编译安装 Nginx(添加 ngx_cache_purge 模块) # cd /usr/local/src/# tar -zxvf nginx-1.6.2.tar.gz# cd nginx-1.6.2# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_cache_purge-2.3 # make && make install6、配置 Nginx,设置负载均衡以及缓存# vi /usr/local/nginx/conf/nginx.conf user root; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections 1024; use epoll;}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;#设置缓存

server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k;client_max_body_size 300m;proxy_redirect off;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_connect_timeout 90;proxy_send_timeout 90;proxy_read_timeout 90;proxy_buffer_size 16k;proxy_buffers 4 64k;proxy_busy_buffers_size 128k;proxy_temp_file_write_size 128k; #设置缓存存储路径、存储方式、分配内存大小、磁盘最大空间、缓存期限proxy_cache_path /fastdfs/cache/nginx/proxy_cache levels=1:2 keys_zone=http-cache:200m max_size=1g inactive=30d;

proxy_temp_path /fastdfs/cache/nginx/proxy_cache/tmp;#设置 group1 的服务器

upstream fdfs_group1 {server 192.168.1.135:8888 weight=1 max_fails=2 fail_timeout=30s;server 192.168.1.136:8888 weight=1 max_fails=2 fail_timeout=30s; }#设置 group2 的服务器

upstream fdfs_group2 { server 192.168.1.137:8888 weight=1 max_fails=2 fail_timeout=30s; server 192.168.1.138:8888 weight=1 max_fails=2 fail_timeout=30s;}server {listen 8000; server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;#设置 group 的负载均衡参数

location /group1/M00 { proxy_next_upstream http_502 http_504 error timeout invalid_header;proxy_cache http-cache;proxy_cache_valid 200 304 12h; proxy_cache_key $uri$is_args$args; proxy_pass ; expires 30d;} location /group2/M00 {proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_cache http-cache;proxy_cache_valid 200 304 12h;proxy_cache_key

$uri$is_args$args;proxy_pass ;expires 30d; }#设置清除缓存的访问权限

location ~/purge(/.*) { allow 127.0.0.1;allow 192.168.1.0/24; deny all; proxy_cache_purge http-cache $1$is_args$args;} #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; }} }按以上 nginx 配置文件的要求,创建对应的缓存目录:

# mkdir -p /fastdfs/cache/nginx/proxy_cache# mkdir -p /fastdfs/cache/nginx/proxy_cache/tmp

7、系统防火墙打开对应的端口# vi /etc/sysconfig/iptables## Nginx-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT # service iptables restart

8、启动 Nginx# /usr/local/nginx/sbin/nginx重启 Nginx# /usr/local/nginx/sb./ngin/nginx -s reload 设置 Nginx 开机启动# vi /etc/rc.local 加入:/usr/local/nginx/sbin/nginx

标签: #fdfsnginx