美文网首页
FastDfs分布式文件系统安装

FastDfs分布式文件系统安装

作者: 诸葛渔夫 | 来源:发表于2021-02-03 21:33 被阅读0次

    工作原理

    20180729180636880

    FastDFS服务端有2个角色 分别是tracker( 调度器 ) 和 storage(存储节点)。

    tracker负责调度和负载均衡,tracker负责管理所有的storage 和group,每个storage在启动后会连接Tracker,告知自己所属的group等信息,并保持周期性的心跳,tracker根据storage的心跳信息,建立group==>[storage server list]的映射表。并不需要存储文件的索引信息,client 通过文件id 就可以获取存储信息,所有tracker服务器是对等的,可以随时增减而不影响已有服务。

    文件id含义:

    image image-20210201142531889

    Storage server(后简称storage)以组(卷,group或volume)为单位组织,一个group内包含多台storage机器,数据互为备份,存储空间以group内容量最小的storage为准,所以建议group内的多个storage尽量配置相同,以免造成存储空间的浪费。group 只能通过增加磁盘扩容,无法通过增加机器扩容。

    image

    负载均衡

    选择存储group:

    1. Round robin,所有的group间轮询
    2. Specified group,指定某一个确定的group
    3. Load balance,剩余存储空间多多group优先

    选择storage server:

    1. Round robin,在group内的所有storage间轮询
    2. First server ordered by ip,按ip排序
    3. First server ordered by priority,按优先级排序(优先级在storage上配置)

    选择storage path:

    storage将会为文件分配一个数据存储目录,支持如下规则:

    1. Round robin,多个存储目录间轮询
    2. 剩余存储空间最多的优先

    文件同步:

    写文件时,客户端将文件写至group内一个storage server即认为写文件成功,storage server写完文件后,会由后台线程将文件同步至同group内其他的storage server。

    每个storage写文件后,同时会写一份binlog,binlog里不包含文件数据,只包含文件名等元信息,这份binlog用于后台同步,storage会记录向group内其他storage同步的进度,以便重启后能接上次的进度继续同步;进度以时间戳的方式进行记录,所以最好能保证集群内所有server的时钟保持同步。

    storage的同步进度会作为元数据的一部分汇报到tracker上,tracke在选择读storage的时候会以同步进度作为参考。

    存在的问题

    • 当storage的某块磁盘故障时,只能换存磁盘,然后手动恢复数据;
    • 存储空间受限于单机存储inode数量

    安装

    https://github.com/happyfish100/fastdfs/wiki#%E5%AE%89%E8%A3%85fastdfs

    cd /usr/local/src
    
    ## 安装依赖
    sudo aptitude install git gcc g++ make automake autoconf libtool pcre2-utils libpcre2-dev zlib1g zlib1g-dev openssl libssh-dev wget vim
    sudo aptitude install libpcre3 libpcre3-dev
    
    ## 安装fastdfs的common包
    sudo git clone https://github.com/happyfish100/libfastcommon.git --depth 1
    cd libfastcommon
    sudo ./make.sh && sudo ./make.sh install
    cd ..
    
    ## fastdfs
    sudo git clone https://github.com/happyfish100/fastdfs.git --depth 1
    cd fastdfs
    sudo ./make.sh && sudo ./make.sh install
    #供nginx访问使用的配置
    cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/
    cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/
    cd ..
    
    ## 安装 nginx 及相关模块
    sudo git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
    sudo cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
    sudo wget http://nginx.org/download/nginx-1.15.4.tar.gz && sudo tar -zxvf nginx-1.15.4.tar.gz
    cd nginx-1.15.4/
    
    sudo ./configure --prefix=/usr/local/nginx
    sudo make && sudo make install
    
    sudo ./configure --prefix=/usr/local/nginx  --add-module=/usr/local/src/fastdfs-nginx-module/src/
    sudo make && sudo make install
    cd ..
    
    ## 防火墙
    sudo aptitude install ufw
    sudo ufw enable
    sudo ufw allow 23000 22122 8888 22
    
    

    配置

    vim /etc/fdfs/tracker.conf
    port=22122  # tracker服务器端口(默认22122,一般不修改)
    base_path=/home/dfs  # 存储日志和数据的根目录
    
    vim /etc/fdfs/storage.conf
    #需要修改的内容如下
    port=23000  # storage服务端口(默认23000,一般不修改)
    base_path=/home/dfs  # 数据和日志文件存储根目录
    store_path0=/home/dfs  # 第一个存储目录
    tracker_server=192.168.52.1:22122  # tracker服务器IP和端口
    
    vim /etc/fdfs/client.conf
    #需要修改的内容如下
    base_path=/home/dfs
    tracker_server=192.168.52.1:22122    #tracker服务器IP和端口
    #保存后测试,返回ID表示成功 如:group1/M00/00/00/xx.tar.gz
    fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
    
    vim /etc/fdfs/mod_fastdfs.conf
    #需要修改的内容如下
    tracker_server=192.168.52.1:22122  #tracker服务器IP和端口
    url_have_group_name=true
    store_path0=/home/dfs
    #配置nginx.config
    vim /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;
        }
    }
    #测试下载,用外部浏览器访问刚才已传过的nginx安装包,引用返回的ID
    http://192.168.52.1:8888/group1/M00/00/00/wKgAQ1pysxmAaqhAAA76tz-dVgg.tar.gz
    

    相关文章

      网友评论

          本文标题:FastDfs分布式文件系统安装

          本文链接:https://www.haomeiwen.com/subject/vpomtltx.html