利用Haproxy+Varnish+OpenResty+FastDFS构建企业级图片缓存系统
2017-07-17Linux撒加3497°c
A+ A-本方案核心基于轻量级分布式文件系统FastDFS构建,实现类似大部分公司对于图片的存储、缩放需求,一般URL类似这样https://xxx.xxx.xxx/group1/MXX/XX/XX/xxxxxxxxx.jpg_580x435.jpg。
方案中各开源组件的角色
1、OpenResty+LUA负责URL的解析以及对图片的原图本地缓存及缩放
2、Varnish负责缓存OpenResty上的原图及缩放图
3、Haproxy负责对Varnish进行负载均衡
4、Keepalived负责对Haproxy实现厘秒级failover的双机热备
5、FastDFS负责图片的存储
方案关键点
1、FastDFS Storage分3个Group,总共可提供裸容量为86.4T的容量,格式化后总容量为79.2T,用于存储数据的容量最大不超过95%。
2、OpenResty服务器可以根据实际需要增加PCIe-SSD硬盘来做图片的本地缓存及缩略图的存放
3、Varnish服务器首选使用内存作为缓存的malloc,当缓存数据超过物理内存时可以考虑增加PCIe-SSD硬盘作为Varnish的缓存malloc
4、Haproxy-->Varnish-->Openresty均启用长连接,降低TW/CLOSE-WAIT的连接数量。
5、Openresty+LUA处理图片可以通过fastdfs_download_file或者直接通过lua-resty-fastdfs访问FastDFS Tracker服务器来下载原图。
技术要点
1、Haproxy使用cpu-map实现多process功能、tcp-keepalive机制、SO_REUSEPORT、HTTP/2 APLN
2、Varnish启用多thread-pool、HTTP/2
3、Openresty启用SO_REUSEPORT功能、HTTP/2
4、服务器使用最新intel网卡驱动,并且做中断绑定
5、Keepalived启用VRRP V3、vmac、garp、snmp、virtual_routes、virtual_rules
6、启用Haproxy、OpenResty的TCP Fast Open功能(可选)