分布式文件系统架构

FastDFS分布式文件系统集群环境搭建-操作步骤手册

搭建一个FastDFS分布式文件系统集群,推荐至少部署6个服务器节点;
================================搭建FastDFS的集群==============================
第一步:安装6个迷你版的Linux,迷你版Linux没有图形界面,占用磁盘及资源小,企业里面使用的Linux都是没有图形界面的Linux;

第二步:由于迷你版Linux缺少一些常用的工具库,操作起来不方便,推荐安装如下的工具库:
1、安装lrzsz, yum install lrzsz -y
2、安装wget, yum install wget -y
4、安装vim, yum install vim -y
5、安装unzip,yum install unzip -y
6、安装ifconfig,yum install net-tools -y

yum install lrzsz wget vim unzip net-tools -y

7、安装nginx及fastdfs需要的库依赖:
   yum install gcc perl openssl openssl-devel pcre pcre-devel zlib zlib-devel libevent libevent-devel -y

第三步 安装fastdfs
   1、 上传fastdfs的安装包和libfastcommon的安装包
   2、 解压libfastcommon 安装libfastcommon
   3、 解压fastdfs 安装fastdfs
   4、 拷贝fastdfs目录中的http.conf和mime.types到/etc/fdfs 目录中
注:6台机器全部执行这些操作


第四步:部署两个tracker server服务器,需要做的工作:

    修改两个tracker服务器的配置文件:
    tracker.conf: 修改一个地方:
    base_path=/opt/fastdfs/tracker   #设置tracker的数据文件和日志目录(需预先创建)
    启动tracker服务器 fdfs_trackerd /etc/fdfs/tracker.conf


第五步 修改两个组中的4台storage中storage.conf文件
    第一组group1的第一个storage server(修改storage.conf配置文件):
    group_name=group1   #组名,根据实际情况修改,值为 group1 或 group2
    base_path=/opt/fastdfs/storage   #设置storage的日志目录(需预先创建)
    store_path0=/opt/fastdfs/storage/files    #存储路径
    tracker_server=192.168.171.135:22122  #tracker服务器的IP地址以及端口号
    tracker_server=192.168.171.136:22122

    第二组group2的第一个storage server(修改storage.conf配置文件):
    group_name=group2   #组名,根据实际情况修改,值为 group1 或 group2
    base_path=/opt/fastdfs/storage   #设置storage的日志目录(需预先创建)
    store_path0=/opt/fastdfs/storage/files    #存储路径
    tracker_server=192.168.171.135:22122  #tracker服务器的IP地址以及端口号
    tracker_server=192.168.171.136:22122
   
    启动storage服务器
    使用之前的Java代码测试FastDFS的6台机器是否可以上传文件
注意:FastDFS默认是带有负载均衡策略的可以在tracker的2台机器中修改tracker.conf文件
    store_lookup=1

    0 随机存放策略
    1 指定组
    2 选择磁盘空间的优先存放 默认值

    修改后重启服务
    fdfs_trackerd /etc/fdfs/tracker.conf restart

 

 

 

 

 


======================使用Nginx进行负载均衡==============================


第六步 安装 nginx ,使用nginx 对fastdfs 进行负载均衡
    上传 nginx-1.12.2.tar.gz以及 nginx的fastdfs扩展模块安装包fastdfs-nginx-module-master.zip
    添加nginx的安装依赖
       yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
    解压nginx
       tar -zxvf  nginx-1.12.2.tar.gz
    解压fastdfs扩展模块
       unzip fastdfs-nginx-module-master.zip
    配置nginx的安装信息
       2台tracker服务器的配置信息(不需要fastdfs模块)
         ./configure --prefix=/usr/local/nginx_fdfs
       4台storage服务器其的配置信息(需要使用fastdfs模块)
         ./configure --prefix=/usr/local/nginx_fdfs --add-module=/root/fastdfs-nginx-module-master/src
    编译并安装nginx
       ./make
       ./make install

    4台storage的服务器需要拷贝mod_fastdfs文件
    将/root/fastdfs-nginx-module-master/src目录下的mod_fastdfs.conf文件拷贝到 /etc/fdfs/目录下,这样才能正常启动Nginx;

 

第七步 配置tracker 的两台机器的nginx
    进入安装目录
    cd /usr/local/nginx_fdfs

    添加一个location 对请求进行拦截,配置一个正则规则 拦截fastdfs的文件路径, 并将请求转发到其余的4台storage服务器(修改 conf目录下nginx.conf 文件)
    #nginx拦截请求路径:
    location ~ /group[1-9]/M0[0-9] {   
        proxy_pass http://fastdfs_group_server;
    }

 

    添加一个upstream 执行服务的IP为 另外的4台stroage 的地址
    #部署配置nginx负载均衡:
    upstream fastdfs_group_server {  
        server 192.168.171.137:80;  
        server 192.168.171.138:80;
        server 192.168.171.139:80;  
        server 192.168.171.140:80;  
    }


第八步 配置另外4台storage的nginx添加http访问的请求路径拦截
    进入安装目录
    cd /usr/local/nginx_fdfs
    添加一个location 对请求进行拦截,配置一个正则规则 拦截fastdfs的文件路径,使用fastdfs的nginx模块转发请求(修改 conf目录下nginx.conf 文件)
    #nginx拦截请求路径:
    location ~ /group[1-9]/M0[0-9] {   
        ngx_fastdfs_module;
    }

 

第九步 分别修改4台storage服务器的mod_fasfdfs.conf文件(/etc/fdfs/mod_fastdfs.conf)
    #修改基本路径,并在指定路径创建对应文件夹
    base_path=/opt/fastdfs/nginx_mod #保存日志目录
    #指定两台tracker服务器的ip和端口
    tracker_server=192.168.171.135:22122  #tracker服务器的IP地址以及端口号
    tracker_server=192.168.171.136:22122
    #指定storage服务器的端口号
    storage_server_port=23000 #通常情况不需要修改
    #指定当前的storage服务器所属的组名 (当前案例03和04为group1 05和06为group2)
    group_name=group1  #当前服务器的group名
    #指定url路径中是否包含组名 (当前案例url包含组名)
    url_have_group_name=true     #文件url中是否有group名
    store_path_count=1           #存储路径个数,需要和store_path个数匹配(一般不用改)
    store_path0=/opt/fastdfs/storage/files    #存储路径
    #指定组个数,根据实际配置决定,(当前案例拥有2个组group1和group2)
    group_count = 2                   #设置组的个数

 

    在末尾增加2个组的具体信息:
    [group1]
    group_name=group1
    storage_server_port=23000
    store_path_count=1
    store_path0=/opt/fastdfs/storage/files

    [group2]
    group_name=group2
    storage_server_port=23000
    store_path_count=1
    store_path0=/opt/fastdfs/storage/files

    第一个组的第二个storage按照相同的步骤操作;

    另外一个组的两个storage也按照相同的步骤操作;

    #测试nginx的配置文件是否正确(测试全部6台服务器)
       /usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf -t
    #启动nginx服务器(全部6台服务器)
      /usr/local/nginx_fdfs/sbin/nginx -c /usr/local/nginx_fdfs/conf/nginx.conf

 


测试:使用浏览器分别访问 6台 服务器中的fastdfs文件


第十步:部署前端用户访问入口服务器,即访问192.168.230.128上的Nginx,该Nginx负载均衡到后端2个tracker server;
    配置nginx.conf文件
    location ~ /group[1-9]/M0[0-9] {   
        proxy_pass http://fastdfs_group_server;
    }

 

    添加一个upstream 执行服务的IP为 2台tracker 的地址
    #部署配置nginx负载均衡:
    upstream fastdfs_group_server {  
        server 192.168.171.135:80;  
        server 192.168.171.136:80;
    }

测试:使用浏览器访问128(唯一入口的nginx服务器)服务器中的fastdfs文件
注意:由于之前128的nginx中可能拥有静态资源拦截会导致访问不到文件,这时可以注释或删除这些静态资源拦截

 


==============================补充资料============================================
最后,为了让服务能正常连接tracker,请关闭所有机器的防火墙:
systemctl status firewalld   查看防火墙状态
systemctl disable firewalld  禁用开机启动防火墙
systemctl stop firewalld     停止防火墙
systemctl  restart  network  重启网络
systemctl  start network     启动网络
systemctl  stop  network     停止网络

可能安装的linux(无图形的)没有开启网卡服务,可以修改/etc/sysconfig/network-scripts 下的网卡配置文件设置 ONBOOT=yse
表示开机启动网卡,然后启动网络服务即可

Keepalived当主nginx出现故障后会自动切换到备用nginx服务器的一款软件 通常由运维人员进行使用

 

代码演示

package com.bjpowernode.fastdfs;

import org.csource.common.MyException;
import org.csource.fastdfs.*;

import java.io.IOException;

public class FastDFS {


    public static void main(String[] args){
        fileUpload();
    }
    public static void fileUpload(){


        TrackerServer trackerServer = null;
        StorageServer storageServer = null;

        try {
            //1.加载配置文件,默认去classpath下加载
            ClientGlobal.init("client.conf");

            //2.创建TrackerClient对象
            TrackerClient trackerClient= new TrackerClient();
            //3.创建TrackerServer对象
            trackerServer = trackerClient.getConnection();
            //4.创建StorageServler对象
            storageServer = trackerClient.getStoreStorage(trackerServer);
            //5.创建StorageClient对象,这个对象完成对文件的操作
            StorageClient storageClient = new StorageClient(trackerServer,storageServer);
            //6.上传文件  第一个参数:本地文件路径 第二个参数:上传文件的后缀 第三个参数:文件信息
            String [] uploadArray = storageClient.upload_file("D:/aa.txt","txt",null);
            for(String str:uploadArray){
                System.out.println(str);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MyException e) {
            e.printStackTrace();
        } finally {
            if(storageServer != null){
                try {
                    storageServer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(trackerServer != null){
                try {
                    trackerServer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

        }

    }
}

架构图

 

 

 

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值