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


1 http下载架构

fastdfs分布式架构 -- nginx扩展模块使用_第1张图片


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 
fastdfs分布式架构 -- nginx扩展模块使用_第2张图片



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

fastdfs分布式架构 -- nginx扩展模块使用_第3张图片

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

fastdfs分布式架构 -- nginx扩展模块使用_第4张图片


6.2 停止132storage,只开启133storage

a)停止192.168.101.132storage
# /usr/local/bin/stop.sh /usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf
fastdfs分布式架构 -- nginx扩展模块使用_第5张图片

b)上传w9.png图片。图片只能被存储到192.168.101.133的storage中
# /usr/local/bin/fdfs_test /etc/fdfs/client.conf upload w9.png 
fastdfs分布式架构 -- nginx扩展模块使用_第6张图片

c)访问img2.mydomain.com,本地命中图片。
http://img2.mydomain.com/group1/M00/00/00/wKhlhVe7DuSALxjTAAKHqXsWj4A287.png
fastdfs分布式架构 -- nginx扩展模块使用_第7张图片

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

fastdfs分布式架构 -- nginx扩展模块使用_第8张图片

你可能感兴趣的:(Linux常用软件安装与配置)