LAMP 环境通常指Linux 环境下,由Apache MySQL/MariaDB PHP 以及其它相关组件组成的网站服务器架构。目前以LAMP组成的Web 应用程序平台广泛被应用,70%以上的访问流量由LAMP提供,所以我们也认同LAMP是最强大的网站解决方案。
关于LAMP的环境部署文档随处可搜,腾讯官网环境部署介绍可参阅:
手动搭建LAMP环境:https://cloud.tencent.com/document/product/213/38402
镜像部署LAMP环境:https://cloud.tencent.com/document/product/213/38364
而LAMP为何如此流行,还是受益于其开源,该架构优势归纳如下三点:
1:架构下软件程序开源,提供经济的软件成本
2:开源社区积累丰富,应用程序稳定,可以快速上手
3:兼容性好,LAMP架构由各自独立的程序架构在一起使用,拥有了很好的兼容度
跳过部署,我们今天交流的是“LAMP 云架构实践” ,围绕如何在云上架构安全,弹性,高可用的LAMP Web应用架构进行一些实践分享。我是基于我的认识和项目经验把LAMP 场景进行了细分,也是方便一些刚接触的同学好理解,当然如果不足之处,欢迎指导交流。
一、单节点web架构
对于轻量/非关键业务的web 应用(例如官网、论坛、博客等web应用),通常还是单节点部署架构;
在单节点web架构,我们有两种部署方式;虚拟主机部署和轻量应用服务器部署;
1.1. 虚拟主机部署
采购S5或SA2系列CVM完成LAMP环境部署并发布站点,这是最简单的架构。
在这种简单架构下,一般承载非关键业务应用,但从运维角度提高应用的稳定性,我们通常有如下几点实践建议;
l对于单CVM节点制定快照策略(自动周期性创建快照及快照清理)
lCVM添加“云硬盘”,通过自动化备份脚本备份MySQL 数据库至“云硬盘”(云硬盘和CVM是挂载关系,当CVM故障下,我们云硬盘数据安全)
l添加“云监控”,免费版本云监控可对CVM进行基础资源监控,设置告警通知策略,当CVM的CPU /内存/网络/磁盘空间 等资源出现负荷,可提前进行扩容操作;
1.2. 轻量应用服务器部署
轻量应用服务器我们在之前的文章中有所介绍,轻量应用服务器从销售角度,算是一种“打包”的产品模式,在产品角度,是为轻量/非关键web应用提供的解决方案。我们在创建轻量应用服务器的时候,我们可以看到有预置的“LAMP 应用镜像”,可以快速的完成部署和上线。
通过镜像模板,可以省去部署过程,基于轻量轻盈服务器的“性价比”,可以进一步优化成本。
二、经典三层架构:Web前端 APP应用 数据库后端
相当于单节点架构,经典三层架构是把web应用通过前中后角色进行了拆分,环境独立的情况下,对于应用的排错、负载等方面得到提升。我们就在云环境下分如下两种部署模式介绍;
2.1.IAAS 部署模式
依然是纯IAAS 的资源部署,原本一台服务器拆分为三台服务器分别部署WEB/APP/MYSQL服务器角色。在云环境下我们有如下几点改进:
如架构图展示;
- Web前端主要面对Public 公网流量访问,后端APP和MYSQL主要内网进行应用通信,从而减少互联网暴露,提高网络安全防护;
- 安全组是云环境下“网络防火墙”,分别设定独立的安全组策略,修改常用端口,减少对外端口开放,控制风险。
- 为Web Server 添加EIP (弹性IP),弹性IP支持绑定和解绑,当web server故障无法恢复时,我们可以新建Web Server ,讲EIP 绑定新Web Server , 快速恢复访问。同时EIP 是预留固定公网IP ,Domain 域名映射不需要修改。
2.2.IAAS COS RDS 部署模式
对于传统架构,云环境下可以更好的提出“云化”方案,这里我们实践通常将CVM部署MYSQL 替换成 RDS for MySQL 云数据库,增加COS存储类型存放静态web页面和音视频文件。
该架构优化的收益有如下几点:
- MySQL 云数据库属于PAAS服务,稳定性,扩展性,冗余等方面都由于自建Mysql 服务器,可以提供更稳定的数据库服务
- 目前web类应用加载了大量高清图片以及音视频文件,通过COS存储可以分摊CVM的带宽压力,同时COS支持CDN直接加速,用户的加载体验更好。
- 目前COS 不仅是静态页面/图片/音视频存储的最佳选择,同时集成了大量的AI数据处理能力,例如图片压缩、水印、语音识别、二维码识别等数据处理能力,部分可以直接通过开关功能即可实现,部分可以支持API方式处理。
三、经典三层架构下高可用架构
所有架构都是随着业务要求而完善的,从单节点,到多层架构,再到高可用架构都是应对业务需求的增长。从业务最初对功能的需求,后期会逐步关注稳定性,用户体验,安全性的方面。
基于高可用的需求下,我们通常优化如下几部;
- Web前端实现多节点部署,通过ELB AUTOSCALE (自动伸缩) 云监控, 实现随着业务的不可预期负载进行自动的计算节点伸缩,经济 稳定性得到一定的保障
- 基于微服务的架构思想,APP应用开始拆分多模块,也有企业以业务应用中台为建设方向,去应对多系统、高负载的需求。
- 后端MySql云服务器可以快速的实现多副本、容灾架构。依托读写分离、增加缓存数据库等方案可以快速优化数据库方案。
当然除了负载问题,在大应用平台下,客户还会比较关注安全加固和互联网安全防护,这里就不做过多介绍了,下次独立章节做介绍交流。
如上架构的场景介绍,是遵循从小到大,从简到繁的过程,当然还有很多细节没有详尽介绍,希望未来有更多交流的机会 。