发表于: 2019-12-05 21:24:44
1 1363
今日完成
- 概述
- 存储服务器硬件: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
- 安装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 是客户端的配置文件模板
- ll /etc/init.d/ | grep fdfs
- 配置并启动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
- 配置nginx整合fastdfs-module模块,修改opt/nginx/config/nginx.conf文件:将文件中,原来的server 80{ ...} 部分代码替换
- 可能会碰到的问题:启动失败
- 改成start也是这个错误
- 先停止:/usr/bin/nginx -s stop
- 再次开启nginx
- 改成start也是这个错误
- 如果没有安装过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
- 安装fastdfs-nginx-module
- 安装
- 原理(工作流程)
- 三个部分: client客户端(我们的项目) + trackerServer管理端(高可用)+ storageServer存储端
- client客户端(我们的项目)
- 使用fastDFS的jar包中的api来存储文件,调用fastDFS
- trackerServer管理端
- 管理storageServer存储端集群
- 管理端如果死掉存储端无法使用:所以管理端都是做双机热备(高可用), 就是一台主机, 一台备机, 他们之间做 #心跳检测机制
- #心跳检测机制:平时主机工作, 备机向主机发送ping命令, 主机接收到后返回pong命令, 如果一段时间内没有返回, 备机会认为主机死掉会替代主机工作——>这样可以保证管理端的 #高可用
- 如果客户端请求量很大,管理端还有负载均衡的功能(负载:每秒接收的请求量), 可以平均分配请求给存储端. 这样就可以承载高并发的存储需求.
- storageServer存储端
- 负责具体存储文件
- 保证存储端的高可用:两台为一组, 一台主机一台备机, 之间双机热备, 做 #心跳检测机制
- #容灾配置:存储端做冗余存储,向存储端主机存储内容, 主机会向备机发送内容,主机和备机存储的内容是一样的, 所以主机即使坏掉, 备机也有同样的内容可以使用
- 存储端理论上存储容量是无限的, 因为两台为一组机器可以无限扩展
- client客户端(我们的项目)
- 流程
- 上传
- 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建立连接并指定要下载文件。
- 下载文件成功
- 上传
- 流程图
- 三个部分: client客户端(我们的项目) + trackerServer管理端(高可用)+ storageServer存储端
- 优点
- 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:只需要改这行
- fdfs_client.conf:只需要改这行
- 测试:TestFastDFS
- 1. 加载配置文件:只能写绝对路径
- 2. 创建管理端对象
- 3. 通过管理端对象获取连接
- 4. 创建存储端对象:storageServer给开发者用的,我们只需要填入null
- 5.创建文件属性信息对象数组:自己需要添加的信息
- 6.上传文件
- 结果:访问 http://192.168.200.128/group1/M00/00/01/wKjIgF22ZTGAJBJJAABSFwFFfxw335.jpg
明日计划
开始复盘
评论