FastDFS教程IV-文件服务器集群搭建
1.简介
- FastDFS文件服务器单节点安装:FastDFS教程Ⅰ-文件服务器安装与Nginx配置
- FastDFS文件服务器扩容:FastDFS教程Ⅲ-文件服务器扩容
- nginx和keepalived实现nginx高可用:nginx和keepalived实现虚拟ip配置
2.搭建环境
- 服务器1:ip 10.63.0.154,在上面安装FastDFS,nginx,keepalived
- 服务器2:ip 10.63.0.155,在上面安装FastDFS,nginx,keepalived
本次采用两台服务器,都分别安装完整的单节点文件服务器。安装完成后,设置服务器1和服务器2上面的storage分别属于group1和group2。两个storage的tracker地址设置为两个,具体关系如下:

简要说明:
- 把服务器1和服务器2利用keepalived做一个虚拟ip:10.63.0.158
- 为了便于展示特意把tracker和storage抽象成了两块,其实是在一台服务器上面。10.63.0.155的tracker指向的存储地址为10.63.0.155的storage和10.63.0.154的storage。10.63.0.154上面的tracker指向存储地址同理。
- 在服务器上面配置了nginx负载均衡,在服务器1上面的文件可通过服务器1和服务器2的ip访问。在服务器2上面的文件同理可以访问。
- 通过虚拟的ip可上传文件到服务器1和服务器2,并可访问。
一个tracker跟踪器配置多个storage的方法参考FastDFS文件服务器扩容文档。分别在服务器1和服务器2上面配置好文件后,启动服务,在两台服务器中输入指令:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf。截图如下:

文件服务器配置好后,利用keepalived做虚拟ip,具体操作请参考nginx和keepalived实现nginx高可用文档,虚拟ip设置成功后访问截图如下:

3.结果展示
配置好文件服务器后,程序调用虚拟ip地址10.63.0.158可上传文件,在服务器上面测试时,直接调用文件上传命令如:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /home/1.png 上传文件,在服务器1和服务器2中上传的文件均可通过虚拟ip10.63.0.158访问。演示界面如下:

4.分析说明
仔细梳理整个文件上传,存储流程。在两台服务器上面搭建的这一套文件服务器并不能算一个完整的文件服务器集群。在tracker指向storage的设计模式时,是采用了nginx代理分发的模式。目前一个是自身,一个是另外一台服务器,以后再次扩展存储服务器时,可继续沿用。但是在keepalived做nginx高可用时,并没有做基于tracker的负载分发,笔者也尝试在现有服务器上面做nginx.conf文件配置,但由于本身又设置了tracker到storage的分发,keepalived到tracker的分发并未生效。所以,目前两台文件服务器一个虚拟ip的模式,算是主备的关系。
由于设置在服务器10.63.0.154上面的keepalived的优先值高于在10.63.0.155服务器上面的优先值,故当服务器10.63.0.154正常运作时,文件上传只会走服务器10.63.0.154上面的tracker服务,tracker根据配置规则存储文件到group1下面的存储器或group2下面的存储器。当服务器10.63.0.154出现异常时,keepalived已经不可用,文件上传会走备用的服务器10.63.0.155上面的tracker服务存储文件。
文件服务器集群搭建目前需要四台服务器,在上面主备模式基础上,在加上两台服务器可做集群处理。集群关系图如下:

额外增加两台服务器,专门做keepalived与nginx的负载高可用,通过nginx管理后面两台服务器的tracker服务,做代理转发。可完成文件服务器集群搭建。其中,在两台新服务器的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 1024;
} 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; upstream fastdfs_tracker {
server 10.63.0.154:8888 weight=1 max_fails=2 fail_timeout=30s;
server 10.63.0.155:8888 weight=1 max_fails=2 fail_timeout=30s;
} server {
listen 8888;
server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location /fastdfs {
root html;
index index.html index.htm;
proxy_pass http://fastdfs_tracker/;
proxy_set_header Host $http_host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 300m;
} #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;
}
}
}
在实际使用中,通常是把tracker服务和storage服务安装在不同的服务器上,参考CSDN一位大牛的明细设计方案如下:

设计介绍文档地址:手把手教你搭建FastDFS集群(下) ,该博主一共发布了上中下三篇文章,明确详细的介绍了文件服务器的搭建过程,经过测试可用,可谓是业界良心。在整个方案中,没有涉及到文件服务器迁移模块的知识,没有采用storage_ids.conf的id配置模式,不便迁移。
FastDFS教程IV-文件服务器集群搭建的更多相关文章
- Solr集群搭建详细教程(一)
一.Solr集群的系统架构 注:欢迎大家转载,非商业用途请在醒目位置注明本文链接和作者名dijia478,商业用途请联系本人dijia478@163.com. SolrCloud(solr 云)是So ...
- 一张图讲解最少机器搭建FastDFS高可用分布式集群安装说明
很幸运参与零售云快消平台的公有云搭建及孵化项目.零售云快消平台源于零售云家电3C平台私有项目,是与公司业务强耦合的.为了适用于全场景全品类平台,集团要求项目平台化,我们抢先并承担了此任务.并由我来主 ...
- Solr集群搭建详细教程(二)
注:欢迎大家转载,非商业用途请在醒目位置注明本文链接和作者名dijia478,商业用途请联系本人dijia478@163.com. 之前步骤:Solr集群搭建详细教程(一) 三.solr集群搭建 注意 ...
- springCloud系列教程01:Eureka 注册中心集群搭建
springCloud系列教程包含如下内容: springCloud系列教程01:Eureka 注册中心集群搭建 springCloud系列教程02:ConfigServer 配置中心server搭建 ...
- fastdfs集群版搭建(一)- storage集群搭建与统一入口访问
前言 接着上篇博客:详细的最新版fastdfs单机版搭建,今天来讲讲fastdfs的集群搭建,限于篇幅,今天先搭建stoarge集群,并实现统一的http访问方式: 没看我上篇博客的小伙伴,最好先去瞅 ...
- 【运维技术】Zookeeper单机以及集群搭建教程
Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...
- kubernetes(K8S)快速安装与配置集群搭建图文教程
kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...
- RabbitMQ入门教程(十四):RabbitMQ单机集群搭建
原文:RabbitMQ入门教程(十四):RabbitMQ单机集群搭建 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://b ...
- mysql集群搭建教程-基础篇
计算机一级考试系统要用集群,目标是把集群搭建起来,保证一个库dang了,不会影响程序的运行.于是在孟海滨师哥的带领下开始了我的第一次搭建mysql集群,首先看了一些关于集群的资料,然后根 ...
随机推荐
- 前端性能优化jQuery性能优化
一.使用合适的选择器 $("#id"); 1.使用id来定位DOM元素无疑是最佳提高性能的方式,因为jQuery底层将直接调用本地方法document.getElementById ...
- BabeLua常见问题
BabeLua常见问题 来源: http://blog.csdn.net/babestudio/article/details/27228865 怎样升级BabeLua? https://babelu ...
- Github和Github for windows的使用简介
很多程序员都把自己开发的代码放到Github上,方便自己管理也有利于别人查阅.所以这两天我也捣鼓了一下这个东西,现在把怎么使用Github和Github for windows简单的总结一下. 1.现 ...
- 胜利大逃亡(续)(bfs+状态压缩)
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- DOM遍历-祖先
遍历 - 祖先 向上遍历 DOM 树 这些 jQuery 方法很有用,它们用于向上遍历 DOM 树: parent() parents() parentsUntil() jQuery parent() ...
- AngularJS学习篇(十七)
AngularJS 输入验证 <!DOCTYPE html> <html> <script src="http://apps.bdimg.com/libs/an ...
- 虚拟软件vmware安装
什么是虚拟软件: 虚拟原件是一个可以使你在一台机器上同时运行二个或更多Windows.LINUX等系统.它可以模拟一个标准PC环境.这个环境和真实的计算机一样,都有芯片组.CPU.内存.显卡.声卡.网 ...
- UWP Composition API - RadialMenu
用Windows 8.1的童鞋应该知道OneNote里面有一个RadialMenu.如下图,下图是WIn10应用Drawboard PDF的RadialMenu,Win8.1的机器不好找了.哈哈,由于 ...
- java 通过eclipse编辑器用mysql尝试 连接数据库
注:本人学的是Oracle,用mysql连接数据库是一次尝试. 一.下载JDBC mysql驱动,导入jar包 我自己下载的是connector-java-6.0.6.jar,如下图所示,JD ...
- java获取当前上一周、上一月、上一年的时间
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Calendar c = Calend ...