fastdfs分布式架构 -- nginx扩展模块使用

 

1 http下载架构

 

 

 

2  fastdfs分布式架构设计安装

 

   安装详解:http://blog.csdn.net/clevercode/article/details/52267080。

 

3 FastDFS扩展模块

 

3.1 原理解析:http://blog.csdn.net/clevercode/article/details/52276077。

 

3.2 FastDFS扩展模块要点:
1 使用扩展模块来解决文件同步延迟问题
2 在每台storage server上部署web server,直接对外提供HTTP服务
3 tracker server上不需要部署web server,开启http服务。
4 如果请求文件在当前storage上不存在,通过文件ID反解出源storage,直接请求源storage
5 目前已提供apache和nginx扩展模块 FastDFS扩展模块不依赖于FastDFS server,可以独立存在!


3.3 模块工作机制: 
1 对请求URL中的文件名进行反解,得到文件创建时间、文件大小和源storage server IP地址 
2 如果文件在本地存在,直接返回文件内容;否则转3 
3 文件在本地不存在的情况处理: 
1)如果 (当前时间 - 文件创建时间) > 文件同步延迟阀值(如一天) 或者 源storage server IP地址在本机IP中(即当前文件上传到的源storage server为本机),则返回404 NOT FOUND 
2)如果配置为redirect模式,直接重定向到源storage server IP对应的URL;否则为proxy模式,调用FastDFS client API从源storage server IP获取该文件并返回给客户端
4 nginx的fdfs扩展模块后,就使用nginx的负载均衡,向tracker server获取两个参数而已,这两个参数是: 
storage_sync_file_max_delay:文件同步的最大延迟,缺省为1天 
storage_sync_file_max_time:同步单个文件需要的最大时间,缺省为5分钟。

 

 

4 配置storage(192.168.101.132)上的nginx

 


4.1 配置nginx扩展(mod_fastdfs.conf)
# cp /usr/local/src/nginx/fastdfs-nginx-module/src/mod_fastdfs.conf  /etc/fdfs/
# vi /etc/fdfs/mod_fastdfs.conf


base_path=/data0/fastdfs
tracker_server=192.168.101.135:22122
group_name=group1
url_have_group_name = true
store_path0=/data0/fastdfs/storage/storage0




4.2 配置nginx.conf
# vi /usr/local/nginx/conf/nginx.conf


add_header srv-id 132;


server_name  img1.mydomain.com;


location /group1/M00 {
    root /data0/fastdfs/storage/storage0/data;
    ngx_fastdfs_module;
}

 

 

 

 

 

 

启动

# /usr/local/nginx/sbin/nginx

5 配置storage(192.168.101.133)上的nginx

 


5.1 配置nginx扩展(mod_fastdfs.conf)
# cp /usr/local/src/nginx/fastdfs-nginx-module/src/mod_fastdfs.conf  /etc/fdfs/
# vi /etc/fdfs/mod_fastdfs.conf


base_path=/data0/fastdfs
tracker_server=192.168.101.135:22122
group_name=group1
url_have_group_name = true
store_path0=/data0/fastdfs/storage/storage0




5.2 配置nginx.conf
# vi /usr/local/nginx/conf/nginx.conf


add_header srv-id 133;


server_name  img2.mydomain.com;


location /group1/M00 {
    root /data0/fastdfs/storage/storage0/data;
    ngx_fastdfs_module;
}

 

 

 

 

启动

# /usr/local/nginx/sbin/nginx

 

6 测试

 

配置host(C:\Windows\System32\drivers\etc\hosts)

192.168.101.132 img1.mydomain.com
192.168.101.133 img2.mydomain.com


6.1 132与133都开启storage
a)上传w8.png。可以看到被轮询上传到了192.168.101.132storage中。
# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload w8.png 




b)访问img1.mydomain.com,本地命中图片。
http://img1.mydomain.com/group1/M00/00/00/wKhlhFe7DCeAcOvYAAaxqYLWRQk392.png



c)访问img2.mydomain.com,本地命中图片。
http://img2.mydomain.com/group1/M00/00/00/wKhlhFe7DCeAcOvYAAaxqYLWRQk392.png




6.2 停止132storage,只开启133storage

a)停止192.168.101.132storage
# /usr/local/bin/stop.sh /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf


b)上传w9.png图片。图片只能被存储到192.168.101.133的storage中
# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload w9.png 


c)访问img2.mydomain.com,本地命中图片。
http://img2.mydomain.com/group1/M00/00/00/wKhlhVe7DuSALxjTAAKHqXsWj4A287.png


d)访问img1.mydomain.com,本地132没有,解析源ip到133服务器去取。
http://img1.mydomain.com/group1/M00/00/00/wKhlhVe7DuSALxjTAAKHqXsWj4A287.png

 

技术交流

CleverCode是一名架构师,技术交流,咨询问题,请加CleverCode创建的qq群(架构师俱乐部):517133582。加群和腾讯,阿里,百度,新浪等公司的架构师交流。【架构师俱乐部】宗旨:帮助你成长为架构师!

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值