Fastdfs
定位:
分布式实时文件存储系统,适合存储图片、文档,文件大小是4KB<size<500M,效率最高
分布式,是多个主机
角色:
1、客户端:client
2、跟踪服务器:tracker server
3.存储服务器:storage server
上传流程图
Storage server:是以组的形式存在,每一组的节点数据完全一样,起到数据冗余备份的作用
不同组的节点数据不一样
环境:
主机 | ip |
---|---|
客户端 | 192.168.10.10 |
tracher1 | 192.168.10.20 |
tracher2 | 192.168.10.30 |
group1-1 | 192.168.10.40 |
group1-2 | 192.168.10.50 |
group2-1 | 192.168.10.60 |
group2-2 | 192.168.10.70 |
安装fastdfs 所有主机都要安装
[root@localhost ~]# yum -y install gcc* automake autoconf zlib zlib-devel openssl openssl-devel pcre pcre-devel
[root@localhost ~]# tar -zxf fastdfs.tar.gz -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/libfastcommon/
[root@localhost libfastcommon]# ./make.sh && ./make.sh install && cd ..
[root@localhost src]# cd fastdfs
[root@localhost fastdfs]# ./make.sh && ./make.sh install && cd ..
[root@localhost src]# cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
[root@localhost src]# cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
[root@localhost src]# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
[root@localhost src]# cp fastdfs/conf/http.conf /etc/fdfs/
[root@localhost src]# cp fastdfs/conf/mime.types /etc/fdfs/
[root@localhost src]# systemctl stop firewalld
[root@localhost src]# setenforce 0
[root@localhost src]# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
[root@localhost src]# mkdir -p /home/yuqing/fastdfs
安装nginx 在第一台和最后四台上安装
[root@localhost ~]# tar -zxf nginx-1.15.4.tar.gz
[root@localhost ~]# cd nginx-1.15.4/
[root@localhost nginx-1.15.4]# ./configure --add-module=/usr/local/src/fastdfs-nginx-module/src && make && make install
[root@localhost nginx-1.15.4]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
[root@localhost nginx-1.15.4]# nginx -v
nginx version: nginx/1.15.4
客户端:
[root@localhost ~]# vim /etc/fdfs/client.conf
10 base_path=/home/yuqing/fastdfs
#修改添加
14 tracker_server=192.168.10.20:22122 #指定tracker的ip
15 tracker_server=192.168.10.30:22122
tracher1主机
[root@localhost ~]# vim /etc/fdfs/tracker.conf
8 bind_addr=192.168.10.20 #本机ip
11 port=22122
22 base_path=/home/yuqing/fastdfs
tracher2主机
vim /etc/fdfs/tracker.conf
8 bind_addr=192.168.10.30
11 port=22122
22 base_path=/home/yuqing/fastdfs
group1-1主机
[root@localhost ~]# vim /etc/fdfs/storage.conf
11 group_name=group1
15 bind_addr=192.168.10.40 #本机ip
41 base_path=/home/yuqing/fastdfs
110 store_path0=/home/yuqing/fastdfs
119 tracker_server=192.168.10.20:22122 #tracher1的ip地址
120 tracker_server=192.168.10.30:22122 #tracher2的ip地址
285 http.server_port=8888
因为后面几台主机的修改内容一样,所以直接将配置文件拷贝到后面几台group主机上即可
[root@localhost ~]# scp /etc/fdfs/storage.conf root@192.168.10.50:/etc/fdfs/storage.conf
[root@localhost ~]# scp /etc/fdfs/storage.conf root@192.168.10.60:/etc/fdfs/storage.conf
[root@localhost ~]# scp /etc/fdfs/storage.conf root@192.168.10.70:/etc/fdfs/storage.conf
group1-2主机
[root@localhost ~]# vim /etc/fdfs/storage.conf
15 bind_addr=192.168.10.50
group2-1主机
[root@localhost ~]# vim /etc/fdfs/storage.conf
11 group_name=group2
15 bind_addr=192.168.10.60
group2-2主机
[root@localhost ~]# vim /etc/fdfs/storage.conf
11 group_name=group2
15 bind_addr=192.168.10.70 #本机ip
group1-1主机
[root@localhost ~]# vim /etc/fdfs/mod_fastdfs.conf
10 base_path=/home/yuqing/fastdfs
40 tracker_server=192.168.10.20:22122
41 tracker_server=192.168.10.30:22122
48 group_name=group1
54 url_have_group_name = true #路径当中是否包含组名
58 store_path_count=1
63 store_path0=/home/yuqing/fastdfs
114 group_count = 2
#取消119-123行的注释
119 [group1]
120 group_name=group1
121 storage_server_port=23000
122 store_path_count=1 #改为1
123 store_path0=/home/yuqing/fastdfs
#取消129-133行的注释
129 [group2]
130 group_name=group2
131 storage_server_port=23000
132 store_path_count=1
133 store_path0=/home/yuqing/fastdfs
将配置文件远程拷贝到后三台
[root@localhost ~]# scp /etc/fdfs/mod_fastdfs.conf root@192.168.10.50:/etc/fdfs/mod_fastdfs.conf
[root@localhost ~]# scp /etc/fdfs/mod_fastdfs.conf root@192.168.10.60:/etc/fdfs/mod_fastdfs.conf
[root@localhost ~]# scp /etc/fdfs/mod_fastdfs.conf root@192.168.10.70:/etc/fdfs/mod_fastdfs.conf
group2-1主机
[root@localhost ~]# vim /etc/fdfs/mod_fastdfs.conf
48 group_name=group2
group2-2主机
[root@localhost ~]# vim /etc/fdfs/mod_fastdfs.conf
48 group_name=group2
客户端:
[root@localhost ~]# vim /etc/fdfs/mod_fastdfs.conf
10 base_path=/home/yuqing/fastdfs
40 tracker_server=192.168.10.20:22122
41 tracker_server=192.168.10.30:22122
group1-1主机 修改nginx配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
36 listen 8888;
#添加
42 location ~/group[0-9]/MOO/ { #当访问的是storge里面的组
43 ngx_fastdfs_module; #就进入到连接的fastdfs的模块中
44 }
将配置文件拷贝到后三台主机
[root@localhost ~]# scp /usr/local/nginx/conf/nginx.conf root@192.168.10.50:/usr/local/nginx/conf/nginx.conf
[root@localhost ~]# scp /usr/local/nginx/conf/nginx.conf root@192.168.10.60:/usr/local/nginx/conf/nginx.conf
[root@localhost ~]# scp /usr/local/nginx/conf/nginx.conf root@192.168.10.70:/usr/local/nginx/conf/nginx.conf
客户端
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
#添加
34 upstream fdfs_group1{
35 server 192.168.10.40:8888 max_fails=3 fail_timeout=20s;
36 server 192.168.10.50:8888 max_fails=3 fail_timeout=20s;
37 }
38 upstream fdfs_group2{
39 server 192.168.10.60:8888 max_fails=3 fail_timeout=20s;
40 server 192.168.10.70:8888 max_fails=3 fail_timeout=20s;
41 }
50 location ~/group1/ {
51 proxy_pass http://fdfs_group1;
52 }
53 location ~/group2/ {
54 proxy_pass http://fdfs_group2;
55 }
[root@localhost ~]# nginx
tracher1主机和tracher2启动服务
[root@localhost ~]# /etc/init.d/fdfs_trackerd start
Reloading systemd: [ 确定 ]
Starting fdfs_trackerd (via systemctl): [ 确定 ]
group1-1、group1-2和group2-1、group2-2主机启动服务
[root@localhost ~]# nginx
ngx_http_fastdfs_set pid=26266
[root@localhost ~]# /etc/init.d/fdfs_storaged start
Reloading systemd: [ 确定 ]
Starting fdfs_storaged (via systemctl): [ 确定 ]
客户端验证:
随便找一张图片拖拽到主机里
上传
[root@localhost ~]# fdfs_upload_file /etc/fdfs/client.conf /root/1.png
group2/M00/00/00/wKgKPGAJa3eAMfBkAABDjkNSWOw829.png
可以通过192.168.10.10/group2/M00/00/00/wKgKPGAJa3eAMfBkAABDjkNSWOw829.png访问页面验证
下载:
[root@localhost ~]# fdfs_download_file /etc/fdfs/client.conf group2/M00/00/00/wKgKPGAJa3eAMfBkAABDjkNSWOw829.png
删除:
[root@localhost ~]# fdfs_delete_file /etc/fdfs/client.conf group2/M00/00/00/wKgKPGAJa3eAMfBkAABDjkNSWOw829.png