1.简介

    本文主要介绍FastDFS文件服务器的集群搭建,在阅读本文之前,您需具备FastDFS文件服务器单节点安装,扩容,迁移等方面的知识。同时,您还需了解Keepalived,nginx方面的知识。阅读本文您可参考如下辅助文章:
  1. FastDFS文件服务器单节点安装:FastDFS教程Ⅰ-文件服务器安装与Nginx配置
  2. FastDFS文件服务器扩容:FastDFS教程Ⅲ-文件服务器扩容
  3. nginx和keepalived实现nginx高可用:nginx和keepalived实现虚拟ip配置

2.搭建环境

  1. 服务器1:ip 10.63.0.154,在上面安装FastDFS,nginx,keepalived
  2. 服务器2:ip 10.63.0.155,在上面安装FastDFS,nginx,keepalived

本次采用两台服务器,都分别安装完整的单节点文件服务器。安装完成后,设置服务器1和服务器2上面的storage分别属于group1和group2。两个storage的tracker地址设置为两个,具体关系如下:

简要说明:

  1. 把服务器1和服务器2利用keepalived做一个虚拟ip:10.63.0.158
  2. 为了便于展示特意把tracker和storage抽象成了两块,其实是在一台服务器上面。10.63.0.155的tracker指向的存储地址为10.63.0.155的storage和10.63.0.154的storage。10.63.0.154上面的tracker指向存储地址同理。
  3. 在服务器上面配置了nginx负载均衡,在服务器1上面的文件可通过服务器1和服务器2的ip访问。在服务器2上面的文件同理可以访问。
  4. 通过虚拟的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-文件服务器集群搭建的更多相关文章

  1. Solr集群搭建详细教程(一)

    一.Solr集群的系统架构 注:欢迎大家转载,非商业用途请在醒目位置注明本文链接和作者名dijia478,商业用途请联系本人dijia478@163.com. SolrCloud(solr 云)是So ...

  2. 一张图讲解最少机器搭建FastDFS高可用分布式集群安装说明

     很幸运参与零售云快消平台的公有云搭建及孵化项目.零售云快消平台源于零售云家电3C平台私有项目,是与公司业务强耦合的.为了适用于全场景全品类平台,集团要求项目平台化,我们抢先并承担了此任务.并由我来主 ...

  3. Solr集群搭建详细教程(二)

    注:欢迎大家转载,非商业用途请在醒目位置注明本文链接和作者名dijia478,商业用途请联系本人dijia478@163.com. 之前步骤:Solr集群搭建详细教程(一) 三.solr集群搭建 注意 ...

  4. springCloud系列教程01:Eureka 注册中心集群搭建

    springCloud系列教程包含如下内容: springCloud系列教程01:Eureka 注册中心集群搭建 springCloud系列教程02:ConfigServer 配置中心server搭建 ...

  5. fastdfs集群版搭建(一)- storage集群搭建与统一入口访问

    前言 接着上篇博客:详细的最新版fastdfs单机版搭建,今天来讲讲fastdfs的集群搭建,限于篇幅,今天先搭建stoarge集群,并实现统一的http访问方式: 没看我上篇博客的小伙伴,最好先去瞅 ...

  6. 【运维技术】Zookeeper单机以及集群搭建教程

    Zookeeper单机以及集群搭建教程 单机搭建 单机安装以及启动 安装zookeeper的前提是必须有java环境 # 选择目录进行下载安装 cd /app # 下载zk,可以去官方网站下载,自己上 ...

  7. kubernetes(K8S)快速安装与配置集群搭建图文教程

    kubernetes(K8S)快速安装与配置集群搭建图文教程 作者: admin 分类: K8S 发布时间: 2018-09-16 12:20 Kubernetes是什么? 首先,它是一个全新的基于容 ...

  8. RabbitMQ入门教程(十四):RabbitMQ单机集群搭建

    原文:RabbitMQ入门教程(十四):RabbitMQ单机集群搭建 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://b ...

  9. mysql集群搭建教程-基础篇

           计算机一级考试系统要用集群,目标是把集群搭建起来,保证一个库dang了,不会影响程序的运行.于是在孟海滨师哥的带领下开始了我的第一次搭建mysql集群,首先看了一些关于集群的资料,然后根 ...

随机推荐

  1. Bluetooth Obex

    OPP 1.2 which uses OBEX over L2CAP. OPP 1.1 connection and transfer happens over RFCOMM->L2CAP.

  2. 实现ajax的步骤

    实现ajax的步骤 1.创建xmlHttprequest对象 function createXmlHttpRequest(){ var xmlHttp; try{ //Firefox, Opera 8 ...

  3. poj2635The Embarrassed Cryptographer(同余膜定理)

    The Embarrassed Cryptographer Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15069   A ...

  4. python3 字符串操作相关函数

    整理自python基础|菜鸟教程 感谢菜鸟教程提供的优质资源! 1.capitalize() 将字符串的第一个字符转换为大写 实例 以下实例展示了capitalize()方法的实例: #!/usr/b ...

  5. Android 开发笔记___DatePicker__日期选择器

    虽然EditText提供了inputTtype="date",但用户往往不太喜欢自己输入时间. Android为这个提供了DatePicker,但有很多缺点,不是弹窗模式,而是直接 ...

  6. Android 开发笔记___登陆app

    package com.example.alimjan.hello_world; /** * Created by alimjan on 7/4/2017. */ import android.con ...

  7. android版火狐调试器

    Remotely debugging Firefox for Android 使用火狐开发工具可以在桌面上进行远程代码的调试(FF26以上) 具体使用参考: https://developer.moz ...

  8. 开发环境MAPLAB下使用仿真器ICD2程序下载流程

    程序下载流程 一.    连接示意图 二.    下载步骤 1.目标板电源断开 2.将仿真器下载端口与电路板JTAG端口有效连接 3.启动MPLAB软件 4.点击MAPLAB软件上方Programme ...

  9. 从零开始搭建Vue组件库——VV-UI

    前言: 前端组件化是当今热议的话题之一,也是我们在开发单页应用经常会碰到的一个问题,现在我们有了功能非常完善的Element-UI.各个大厂也相继宣布开源XXX-UI.但是也会存在一些问题,比如每个公 ...

  10. 应用在安卓和ios端APP的证件识别

    移动端证件识别智能图文处理,是利用OCR识别技术,通过手机拍摄身份证图像或者从手机相册中加载证件图像,过滤身份证的背景底纹干扰,自动分析证件各文字进行字符切分.识别,最后将识别结果按姓名.地址.民族. ...