开源地址:https://github.com/happyfish100
余庆大佬用 c语言 编写的一款开源的分布式文件系统。
为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,注重高可用、高性能等指标
冗余备份: 纵向扩容
线性扩容: 横向扩容, 增加容量
可以很容易搭建一套高性能的文件服务器集群提供文件==上传、下载==等服务。
应用场景:
冗余备份(通过文件内容生成key值,在上传同一个文件时,不会重复存储,这就省了很大的空间)
负载均衡:
浏览器访问服务器(192.168.110.11:8080),如果全校都访问这个网站的时候,就会很卡,怎么办? 多开几个端口(一个端口的负载能力有限),再访问的时候,指向不忙的端口(8081、8082)和集群有点像,
负载就是请求的数量;均衡就是给你平均的分配,结合就是负载均衡。
线性扩容:直接加配置文件,就可以多一个服务器的存在,早期如果想加服务器,就需要重复写相关代码,扩容非常方便。
举个例子:
小老板(客户端)想要存他的货,存货肯定是要把货存到仓库里面,但是不能让小老板自己去找仓库,因为那么多仓库,小老板不知道哪个可以用以及哪个有空闲可以存我的货。
所以,自己去找就很费时费力。况且,仓库是面向很多个小老板,这么多小老板如果每次都是自己去找仓库,就会很费时间。所以,安排一个仓库管理员,这个是干什么的呢? 小老板想存东西,找这个管理员,让管理员告诉小老板,哪个仓库可以用,然后小老板就去指定仓库存东西去了。
这个仓库管理员没事就去巡逻,挨个仓库走一遍看哪个仓库有空闲可以用,工作:定时的遍历去查询仓库,看这个仓库能用不能用(收集仓库的状态)。仓库才是真正存数据的地方。
小老板存完数据之后,仓库就会给他一个凭证,告诉他你的东西存在了哪个仓库,以后可以直接过来取。
线性扩容就是加仓库。
凭证:组名 虚拟磁盘路径(设置才有,不设置没有) 数据两级目录(文件路径) 文件名(通过加密防止文件名重复)
1)下载 libfastcommon.zip
下载地址:https://github.com/happyfish100/libfastcommon/releases
2)解压缩 libfastcommon.zip
3)进入到 libfastcommon 的目录中
4)执行 ./make.sh
5)执行 sudo ./make.sh install
1)下载 fastdfs.zip
下载地址:https://github.com/happyfish100/fastdfs/releases
2)解压缩 fastdfs.zip
3)进入到 fastdfs 的目录中
4)执行 ./make.sh
5)执行 sudo ./make.sh install
ls -al /usr/bin/fdfs*
1)拷贝文件
sudo cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
2)在 /home/conan/
目录中创建目录 fastdfs/tracker
mkdir –p /home/conan/fastdfs/tracker
3)编辑 /etc/fdfs/tracker.conf
配置文件
sudo vim /etc/fdfs/tracker.conf
修改内容:
base_path=/home/conan/fastdfs/tracker
1)拷贝文件
sudo cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
2)在 /home/conan/fastdfs/
目录中创建目录 storage
mkdir –p /home/conan/fastdfs/storage
3)编辑 /etc/fdfs/storage.conf
配置文件
sudo vim /etc/fdfs/storage.conf
修改内容:
base_path=/home/conan/fastdfs/storage
store_path0=/home/conan/fastdfs/storage
tracker_server=自己ubuntu虚拟机的ip地址:22122
执行以下两条指令
sudo fdfs_trackerd /etc/fdfs/tracker.conf
sudo fdfs_storaged /etc/fdfs/storage.conf
1)
sudo cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
2)编辑 /etc/fdfs/client.conf
配置文件
sudo vim /etc/fdfs/client.conf
修改内容:
base_path=/home/conan/fastdfs/tracker
tracker_server=自己ubuntu虚拟机的ip地址:22122
3)上传文件测试
sudo fdfs_upload_file /etc/fdfs/client.conf 要上传的图片文件路径
例如:
sudo fdfs_upload_file /etc/fdfs/client.conf /home/conan/1.jpg
如果返回类似 group1/M00/00/00/rBIK6VcaP0aARXXvAAHrUgHEviQ394.jpg
的文件 id
则说明文件上传成功。
1)下载 nginx.tar.gz:http://nginx.org/en/download.html
2)解压缩 nginx.tar.gz
3)下载 fastdfs-nginx-module.zip:https://github.com/happyfish100/fastdfs-nginx-module/releases
4)解压缩 fastdfs-nginx-module.zip
5)下载库(更换阿里源)
首先你需要去更换阿里源,因为ubuntu自带的源没有这个库
怎么更换?我在 安装ubuntu系统 这一文章中有讲到,没有更换的可以去这里看一下:
更换完成之后,执行以下命令
sudo apt update
sudo apt install libpcre3 libpcre3-dev
如果没有下载这个的话,执行下面的命令会报错:
6)进入解压的 nginx
目录中
执行
sudo ./configure --prefix=/usr/local/nginx/ --add-module=fastdfs-nginx-module解压后的目录的绝对路径/src
我这里是:
sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/conan/fastdfs/fastdfs-nginx-module-1.22/src
这时如果还报以下错误:
./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using --without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using --with-zlib=<path> option.
解决方案
1)找一个临时目录,下载命令:wget http://www.zlib.net/zlib-1.2.11.tar.gz
2)解压:zlib-1.2.11.tar.gz
3)进入 zlib-1.2.11
文件夹
cd zlib-1.2.11
4)安装
./configure
make
make install
安装完成,回到 nginx
目录中,再次执行
sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/conan/fastdfs/fastdfs-nginx-module-1.22/src
安装完成:
如果安装过程中报以下错误:(错误原因是因为nginx编译的时候把警告当错误处理,事实上这个警告并不影响)
解决方案
找到 nginx
目录下的 objs
目录下的 Makefile
sudo vim Makefile
删掉里面的 -Werror
然后回到 nginx
目录中,再次执行:
sudo ./configure --prefix=/usr/local/nginx/ --add-module=/home/conan/fastdfs/fastdfs-nginx-module-1.22/src
执行完上述命令之后,
执行:
sudo make
然后执行:
sudo make install
5)拷贝
sudo cp fastdfs-nginx-module解压后的目录中src下mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
6)修改内容
sudo vim /etc/fdfs/mod_fastdfs.conf
修改对应内容为:
connect_timeout=10
base_path=/home/conan/fastdfs/tracker
tracker_server=自己ubuntu虚拟机的ip地址:22122
url_have_group_name=true
store_path0=/home/conan/fastdfs/storage
7)拷贝文件
sudo cp 解压缩的fastdfs目录中的conf中的 http.conf /etc/fdfs/http.conf
也可以先进入到解压缩的 fastdfs
目录中的 conf
中
sudo cp http.conf /etc/fdfs/http.conf
8)拷贝文件
sudo cp 解压缩的fastdfs目录中的conf中的 mime.types /etc/fdfs/mime.types
也可以先进入到解压缩的 fastdfs
目录中的 conf
中
sudo cp mime.types /etc/fdfs/mime.types
1)添加配置信息
sudo vim /usr/local/nginx/conf/nginx.conf
在 http 部分中添加配置信息如下:
server {
listen 8888; # nginx服务器端口
server_name localhost; # ip地址
location ~/group[0-9]/ { # 组名
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html; # 错误页面
location = /50x.html {
root html;
}
}
sudo /usr/local/nginx/sbin/nginx
我们之前上传过文件得到的一个凭证,复制那个凭证
如果没有保存,重新上传一个即可(重启系统需要重新启动tracker和storage)
在浏览器中输入:
ip地址:8888/凭证
比如:
192.168.180.130:8888/group1/M00/00/00/wKi1gl7F7jmAJC73AAB66dOYt_o243.jpg
就可以看到图片啦
欢迎访问我的个人网站:
李培冠博客:lpgit.com