对于现代互联网来说,分布式集群是开发者一定要知道的,小伙伴们知道fastdfs吗?它就是一个分布式文件系统,你们知道它该如何搭建环境吗?下面快跟小编一起来看看吧。
一、Fastdfs是什么?
FastDFS:一个轻量级分布式文件系统,它是开源的,它负责对文件进行管理,功能包括:文件存储、文件同步、文件访问等各种文件操作,解决了大容量存储及负载均衡的问题。
FastDFS创建时充分考虑了冗余备份、负载均衡、线性扩容等各种机制,它致力于高可用、高性能等指标,如果想使用FastDFS来搭建一套高性能的文件服务器集群,基本不会耗费多少时间。
FastDFS中文件标识分为两部分:卷名和文件名,二者缺一不可。
二、Fastdfs环境搭建
因为FastDFS 本身不再默认集成WEB服务器了,所以现在我们都需要去结合Nginx来搭建WEB服务器。在全部流程中,我们需要使用到一个nginx与fastdfs整合模块才能够实现文件的显示。同时考虑到现实的环境,这次我们将搭建两组服务器;group1、group2。
本次要使用的主机列表如下:
No. 主机名称 IP 地址 描述
1 fastdfs-tracker-server 192.168.122.198 Tracker、Nginx(Tracker) 2 fastdfs-storage-group1-01 192.168.122.199 Storage、Nginx(FastDFS-Module) 3 fastdfs-storage-group1-02 192.168.122.200 Storage、Nginx(FastDFS-Module) 4 fastdfs-storage-group2-01 192.168.122.201 Storage、Nginx(FastDFS-Module) 5 fastdfs-storage-group2-02 192.168.122.202 Storage、Nginx(FastDFS-Module)
现在已经准备出了两台主机,配置是相同的:
提供好了 libfastcommon 编译;
提供好了所需要使用到的软连接;
已经编译好了 fastdfs 软件。
2.1、配置 storage
首先先配置一个 storage 节点主机,而后在这台主机上配置好相应的 nginx 服务;
1、进行 storage 配置:
通过模版文件拷贝出配置文件:cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf;
建立相应的工作目录:mkdir -p /usr/data/fdfs/storage;
编辑配置文件:vim /etc/fdfs/storage.conf;
group_name=group1 base_path=/usr/data/fdfs/storage tracker_server=192.168.122.198:22122
2、 把本次使用的 Ningx 的开发包上传到系统之中,需要如下的几个开发包:
nginx-1.11.3.tar.gz、echo-nginx-module-0.59.tar.gz、 fastdfs-nginx-module_v1.16.tar.gz 、 ngx_cache_purge-2.3.tar.gz 、 nginx-upstream-fair-a18b409.tar.gz 、pcre-8.36.tar.gz、zlib-1.2.8.tar.gz。
3、 将所有的源代码的开发包进行解压缩:
tar xzvf /srv/ftp/echo-nginx-module-0.59.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/nginx-1.11.3.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/nginx-upstream-fair-a18b409.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/ngx_cache_purge-2.3.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/pcre-8.36.tar.gz -C /usr/local/src/ tar xvf /srv/ftp/zlib-1.2.8.tar.gz -C /usr/local/src/
4、编译 nginx:
需要建立好nginx编译之后保存的数据目录:
mkdir - p / usr / local / nginx / { logs , conf , fastcgi_temp , sbin , client_body_temp , proxy_temp , uwsgi_temp , scgi_temp }
进行nginx的编译处理:cd /usr/local/src/nginx-1.11.3/;
. / configure--prefix = /usr/local / nginx / --sbin - path = /usr/local / nginx / sbin / --with - http_ssl_module --conf - path = /usr/local / nginx / conf / nginx.conf --pid - path = /usr/local / nginx / logs / nginx.pid --error - log - path = /usr/local / nginx / logs / error.log --http - log - path = /usr/local / nginx / logs / access.log --http - fastcgi - temp - path = /usr/local / nginx / fastcgi_temp --http - client - body - temp - path = /usr/local / nginx / client_body_temp --http - proxy - temp - path = /usr/local / nginx / proxy_temp --http - uwsgi - temp - path = /usr/local / nginx / uwsgi_temp --http - scgi - temp - path = /usr/local / nginx / scgi_temp --add - module = /usr/local / src / echo - nginx - module - 0.59 --add - module = /usr/local / src / gnosek - nginx - upstream - fair - a18b409 --add - module = /usr/local / src / ngx_cache_purge - 2.3 --add - module = /usr/local / src / fastdfs - nginx - module / src --with - zlib = /usr/local / src / zlib - 1.2 .8 --with - pcre = /usr/local / src / pcre - 8.36
编译并安装:make ; make install;
5、将 fastdfs-nginx-model 模块中的配置文件拷贝到"/etc/fdfs"目录下:
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
6、修改"mod_fastdfs.conf"文件:vim
/etc/fdfs/mod_fastdfs.conf;
base_path = /usr/data / fdfs / storage tracker_server = 192.168 .122 .198: 22122 group_name = group1 store_path0 = /usr/data / fdfs / storage url_have_group_name = true "url_have_group_name" 表示现在的访问路径上是否需要追加有组名称。
7、拷贝配置文件:
拷贝 http.conf 配置文件: cp / usr / local / src / FastDFS / conf / http.conf / etc / fdfs / ; 拷贝 mime.types 配置文件: cp / usr / local / src / FastDFS / conf / mime.types / etc / fdfs / ;
8、修改 nginx 配置项:vim /usr/local/nginx/conf/nginx.conf
listen 9999; location~/group[1-3]/M00 { root / usr / data / fdfs / storage; ngx_fastdfs_module; }
9、做一个软连接:
ln -s /usr/data/fdfs/storage/data/ /usr/data/fdfs/storage/M00
10、检测当前的 nginx 配置是否正确;
/usr/local/nginx/sbin/nginx -t
现在配置的 storage 里面并没有具体的图片信息,所以此时还不敢保证操作一切都是正确的。
2.2、配置多台 storage
1)、 将已经配置好的 storage 主机关机,而后将其复制为多份主机;
2)、 storage 主机一共有两组,每组有两台服务器,那么要修改各自主机的名称:vim /etc/hostname;
3)、修改的名称:vim /etc/fdfs/storage.conf
group_name=group2
4)、修改组名称:vim /etc/fdfs/mod_fastdfs.conf;
group_name=group2
那么这个时候两组的 storage 存储就配置完成了,那么在进行存储的时候将根据 group 的信息进行对应的保存。
2.3、配置 tracker 主机
每一台 storage 主机上的 nginx 只是作为负载均衡使用的,真正起作用的还是在于 tracker 主机上。
1、将 nginx 有关的开发包上传到 tracker 之中: nginx-1.11.3.tar.gz、 echo-nginx-module-0.59.tar.gz、
ngx_cache_purge-2.3.tar.gz、nginx-upstream-fair-a18b409.tar.gz、pcre-8.36.tar.gz、zlib-1.2.8.tar.gz。
2、把所有的源代码的开发包进行解压缩:
tar xzvf /srv/ftp/echo-nginx-module-0.59.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/nginx-1.11.3.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/nginx-upstream-fair-a18b409.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/ngx_cache_purge-2.3.tar.gz -C /usr/local/src/ tar xzvf /srv/ftp/pcre-8.36.tar.gz -C /usr/local/src/ tar xvf /srv/ftp/zlib-1.2.8.tar.gz -C /usr/local/src/
3、对fastdfs-tracker-serve进行 nginx 的编译处理:
建立相应的目录:
mkdir - p / usr / local / nginx / { logs , conf , fastcgi_temp , sbin , client_body_temp , proxy_temp , uwsgi_temp , scgi_temp }
进入到 nginx 源代码目录之中:cd /usr/local/src/nginx-1.11.3/;
. / configure--prefix = /usr/local / nginx / --sbin - path = /usr/local / nginx / sbin / --with - http_ssl_module --conf - path = /usr/local / nginx / conf / nginx.conf --pid - path = /usr/local / nginx / logs / nginx.pid --error - log - path = /usr/local / nginx / logs / error.log --http - log - path = /usr/local / nginx / logs / access.log --http - fastcgi - temp - path = /usr/local / nginx / fastcgi_temp --http - client - body - temp - path = /usr/local / nginx / client_body_temp --http - proxy - temp - path = /usr/local / nginx / proxy_temp --http - uwsgi - temp - path = /usr/local / nginx / uwsgi_temp --http - scgi - temp - path = /usr/local / nginx / scgi_temp --add - module = /usr/local / src / echo - nginx - module - 0.59 --add - module = /usr/local / src / gnosek - nginx - upstream - fair - a18b409 --add - module = /usr/local / src / ngx_cache_purge - 2.3 --with - zlib = /usr/local / src / zlib - 1.2 .8 --with - pcre = /usr/local / src / pcre - 8.36
编译与安装:make ; make install;
4、fastdfs-tracker-server配置 tracker:
建立 tracker 工作目录: mkdir - p / usr / data / fdfs / tracker; 通过模版拷贝配置文件: cp / etc / fdfs / tracker.conf.sample / etc / fdfs / tracker.conf; 编辑配置文件: vim / etc / fdfs / tracker.conf; base_path = /usr/data / fdfs / tracker
5、fastdfs-tracker-serve配置 nginx:
tracker 所在的主机作为整体访问的主机,所以为了访问迅速需要配置缓存交 :
mkdir -p /usr/data/nginx/{cache,tmp}
修改 nginx 的配置文件项:vim /usr/local/nginx/conf/nginx.conf;
# user nobody; 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 65536; use epoll; } http { include mime.types; default_type application / octet - stream; server_names_hash_bucket_size 128; client_header_buffer_size 32 k; large_client_header_buffers 4 32 k; client_max_body_size 300 m; 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 16 k; proxy_buffers 4 64 k; proxy_busy_buffers_size 128 k; proxy_temp_file_write_size 128 k; proxy_cache_path / usr / data / nginx / cache levels = 1: 2 keys_zone = http - cache: 500 m max_size = 10 g inactive = 30 d; proxy_temp_path / usr / data / nginx / tmp; upstream fdfs_group1 { server 192.168 .122 .199: 9999 weight = 1 max_fails = 2 fail_timeout = 30 s; server 192.168 .122 .200: 9999 weight = 1 max_fails = 2 fail_timeout = 30 s; } upstream fdfs_group2 { server 192.168 .122 .201: 9999 weight = 1 max_fails = 2 fail_timeout = 30 s; server 192.168 .122 .202: 9999 weight = 1 max_fails = 2 fail_timeout = 30 s; }# 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 { listen 80; server_name localhost;# charset koi8 - r;# access_log logs / host.access.log main; location / group1 / M00 { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_cache http - cache; proxy_cache_valid 200 304 12 h; proxy_cache_key $uri$is_args$args; proxy_pass http: //fdfs_group1; expires 30 d; } location / group2 / M00 { proxy_next_upstream http_502 http_504 error timeout invalid_header; proxy_cache http - cache; proxy_cache_valid 200 304 12 h; proxy_cache_key $uri$is_args$args; proxy_pass http: //fdfs_group2; expires 30 d; } location~/purge(/.*) { allow 127.0 .0 .1; allow 192.168 .122 .0 / 24; deny all; proxy_cache_purge http - cache $1$is_args$args; } location / { root html; index index.html index.htm; }# error_page 404 / 404. html;# redirect server error pages to the static page / 50 x.html# error_page 500 502 503 504 / 50 x.html; location = /50x.html { root html; }# proxy the PHP scripts to Apache listening on 127.0 .0 .1: 80## location~.php$ { # proxy_pass http: //127.0.0.1; # }# pass the PHP scripts to FastCGI server listening on 127.0 .0 .1: 9000## location~.php$ { # root html;# fastcgi_pass 127.0 .0 .1: 9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME / scripts$fastcgi_script_name;# include fastcgi_params;# }# deny access to.htaccess files , if Apache 's document root# concurs with nginx 's one## location~/.ht {# deny all;# } }# another virtual host using mix of IP - , name - , and port - based configuration## server { # listen 8000;# listen somename: 8080;# server_name somename alias another.alias;# location / { # root html;#index index.html index.htm;# }# }# HTTPS server## server { # listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared: SSL: 1 m;# ssl_session_timeout 5 m;# ssl_ciphers HIGH: !aNULL: !MD5;# ssl_prefer_server_ciphers on;# location / { # root html;#index index.html index.htm;# }# } }
此时tracker应该就可以正常运行了。
以上就是关于如何搭建Fastdfs集群环境的所有内容了,你了解了吗?如若还想了解更多相关java架构师知识,那就来关注我们的网站吧。
推荐阅读: