发表于: 2019-12-05 21:24:44

1 1357


今日完成

  • 概述
    • 存储服务器硬件:8块1TB组成raid10磁盘阵列
    • 定义:fastDFS是一个底层使用C语言编写并且开源的, 分布式文件系统
    • 作用:可以统一管理存储服务器集群, 统一管理存储读取文件
    • 不用自己部署,很麻烦(详见原理图)
  • 安装/启动:单节点FastDFS(乐优购)
    • 安装
      • 位置:java需要的资料\乐优购资料\day8
      • 将如下文件,上传到/usr/local/leyou目录下
      • 安装gcc:yum -y install gcc
      • 安装解压命令:yum install -y unzip zip
      • 安装libevent:yum -y install libevent
      • 安装libfastcommon-master
        • 解压刚ibfastcommon-master.zip:unzip libfastcommon-master.zip
        • 进入解压完成的目录:cd libfastcommon-master
        • 编译:./make.sh
        • 安装:./make.shinstall
      • 安装fastdfs
        • tar -zxvf FastDFS_v5.08.tar.gz
        • cd FastDFS
        • ./make.sh
        • ./make.sh install
      • 查看是否安装成功
        • ll /etc/init.d/ | grep fdfs
          • fdfs_trackerd 是tracker启动脚本
          • fdfs_storaged 是storage启动脚本
        • ll /etc/fdfs/
          • tarcker.conf.sample 是tracker的配置文件模板
          • storage.conf.sample 是storage的配置文件模板
          • client.conf.sample 是客户端的配置文件模板
    • 配置并启动tracker服务
      • 新建目录:mkdir -p /leyou/tracker
      • 将模板文件复制:cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
      • 修改复制后的配置文件tracker.conf:base_path=/leyou/tracker 
      • 关闭防火墙:chkconfig iptables off
      • 启动和停止
        • 一般方式
          • 启动tracker服务器: /etc/init.d/fdfs_trackerd start
          • 停止tracker服务器: /etc/init.d/fdfs_trackerd stop
        • 服务方式启动(推荐):service fdfs_trackerd start
        • 检查FastDFS Tracker Server是否启动成功:ps -ef | grep fdfs_trackerd
        • 设置tracker服务开机启动:chkconfig fdfs_trackerd on
    • 配置并启动storage服务
      • 新建目录:mkdir -p /leyou/storage
      • 将模板文件复制:cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
      • 修改复制后的配置文件storage.conf
        • base_path=/leyou/storage                 # 数据和日志文件存储根目录 
        • store_path0=/leyou/storage           # 第一个存储目录 
        • tracker_server=192.168.200.128:22122      #  tracker服务器IP和端口 
      • 关闭防火墙:chkconfig iptables off
      • 启动和停止
        • /etc/init.d/fdfs_storaged start
        • /etc/init.d/fdfs_storaged stop
      • 设置storage服务开机启动:chkconfig fdfs_storaged on
      • 查看是否成功:ps -ef | grep fdfs
    • 使用nginx
      • 安装fastdfs-nginx-module
        • 解压:tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
        • 进入src目录:cd fastdfs-nginx-module/src/
        • 修改config:删除对应local
        • 配置nginx与FastDFS关联配置文件
          • 复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录:cp /usr/local/leyou/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
          • 修改/etc/fdfs/mod_fastdfs.conf
            • connect_timeout=10                       # 客户端访问文件连接超时时长(单位:秒)
            • tracker_server=192.168.200.128:22122    # tracker服务IP和端口
            • url_have_group_name=true                # 访问链接前缀加上组名
            • store_path0=/leyou/storage            # 文件存储路径
          • 复制 FastDFS 的部分配置文件到/etc/fdfs 目录
            • cd /usr/local/leyou/FastDFS/conf/
            • cp http.conf mime.types /etc/fdfs/
      • 安装Nginx的插件
        • 如果没有安装过nginx
          • 安装nginx的依赖库:yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel
          • 解压安装包
            • cd /usr/local/leyou
            • 解压:tar -zxvf nginx-1.10.0.tar.gz
          • 配置nginx安装包,并指定fastdfs-nginx-model
            • cd nginx-1.10.0
            • ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/leyou/fastdfs-nginx-module/src
          • 编译并安装:make && make install
        • 如果已经安装过nginx(可重新解压一遍,用如上方法)
          • 进入nginx目录:cd /usr/local/leyou/nginx-1.10.0/
          • 配置FastDFS 模块(这次配置时,要添加fastdfs-nginx-moudle模块):./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/leyou/fastdfs-nginx-module/src
          • 编译,注意,这次不要安装(install):make
          • 替换nginx二进制文件
            • 备份:mv /usr/bin/nginx /usr/bin/nginx-bak
            • 用新编译的nginx启动文件替代原来的:cp objs/nginx /usr/bin/
        • 启动nginx
          • 配置nginx整合fastdfs-module模块,修改opt/nginx/config/nginx.conf文件:将文件中,原来的server 80{ ...} 部分代码替换

            server {        listen       80;        server_name  image.leyou.com;    # 监听域名中带有group的,交给FastDFS模块处理        location ~/group([0-9])/ {            ngx_fastdfs_module;        }        location / {            root   html;            index  index.html index.htm;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }
          • 启动命令
            • cd /usr/local/leyou/nginx-1.10.0
            • nginx # 启动nginx
            • nginx -s stop # 停止nginx
            • nginx -s reload # 重新载入配置文件
            • 查看nginx是否已启动成功:ps -ef | grep nginx
        • 可能会碰到的问题:启动失败
          • 改成start也是这个错误
          • 先停止:/usr/bin/nginx -s stop
          • 再次开启nginx
      • 开机启动(未成功)
        • 路径:java需要的资料\乐优购资料\day8\nginx
        • 修改权限:chmod 777 /etc/init.d/nginx
        • 添加到服务列表:chkconfig --add /etc/init.d/nginx
        • 设置开机启动:chkconfig nginx on
      • 这台机器开启方法
        • 先停止:/usr/bin/nginx -s stop
        • cd /usr/local/leyou/nginx-1.10.0
        • nginx
        • ps -ef | grep nginx
  • 原理(工作流程)
    • 三个部分: client客户端(我们的项目) + trackerServer管理端(高可用)+ storageServer存储端
      • client客户端(我们的项目)
        • 使用fastDFS的jar包中的api来存储文件,调用fastDFS
      • trackerServer管理端
        • 管理storageServer存储端集群
        • 管理端如果死掉存储端无法使用:所以管理端都是做双机热备(高可用), 就是一台主机, 一台备机, 他们之间做 #心跳检测机制
        • #心跳检测机制:平时主机工作, 备机向主机发送ping命令, 主机接收到后返回pong命令, 如果一段时间内没有返回, 备机会认为主机死掉会替代主机工作——>这样可以保证管理端的 #高可用
        • 如果客户端请求量很大,管理端还有负载均衡的功能(负载:每秒接收的请求量), 可以平均分配请求给存储端. 这样就可以承载高并发的存储需求.
      • storageServer存储端
        • 负责具体存储文件
        • 保证存储端的高可用:两台为一组, 一台主机一台备机, 之间双机热备, 做 #心跳检测机制
        • #容灾配置:存储端做冗余存储,向存储端主机存储内容, 主机会向备机发送内容,主机和备机存储的内容是一样的, 所以主机即使坏掉, 备机也有同样的内容可以使用
        • 存储端理论上存储容量是无限的, 因为两台为一组机器可以无限扩展
    • 流程
      • 上传
        • 1 Client通过Tracker server查找可用的Storage server
        • 2 Tracker server向Client返回一台可用的Storage server的IP地址和端口号。
        • 3 Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并进行文件上传
        • 4 上传完成,Storage server返回Client一个文件ID,文件上传结束
      • 下载
        • Client通过Tracker server查找要下载文件所在的的Storage server。
        • Tracker server向Client返回包含指定文件的某个Storage server的IP地址和端口号。
        • Client直接通过Tracker server返回的IP地址和端口与其中一台Storage server建立连接并指定要下载文件。
        • 下载文件成功
    • 流程图
  • 优点
    • 1 管理端有负载均衡的功能, 可以承载高并发的存储需求
    • 2 存储端可以无限扩展, 理论上存储容量是无限的, 扩展性好
    • 3 存储端和管理端都使用的 #心跳检测机制, 保证了服务器的高可用
    • 4 存储端做了冗余存储, 所以即使有机器坏掉也不会丢数据, 使用 #容灾配置
  • 缺点
    • fastDFS结构复杂, 会使项目中的复杂度变高
    • 搭建fastDFS会使用很多服务器, 比较贵
  • Demo演示:fastDFSDemo
    • 这里的虚拟机是已经配置好的,打开虚拟机后查看此链接:http://192.168.200.128/group1/M00/00/01/wKjIgFWOYc6APpjAAAD-qk29i78248.jpg,若显示出图像则成功
    • 加入jar包
      • 命令(重要仓库没有):mvn install:install-file -DgroupId=org.csource.fastdfs -DartifactId=fastdfs  -Dversion=1.2 -Dpackaging=jar -Dfile=d:\setup\fastdfs-1.2.jar
      • Maven
    • 配置文件
      • fdfs_client.conf:只需要改这行
    • 测试:TestFastDFS
      • 1. 加载配置文件:只能写绝对路径
      • 2. 创建管理端对象
      • 3. 通过管理端对象获取连接
      • 4. 创建存储端对象:storageServer给开发者用的,我们只需要填入null
      • 5.创建文件属性信息对象数组:自己需要添加的信息
      • 6.上传文件
    • 结果:访问 http://192.168.200.128/group1/M00/00/01/wKjIgF22ZTGAJBJJAABSFwFFfxw335.jpg

明日计划

开始复盘


返回列表 返回列表
评论

    分享到