6. 弹性扩展
- 弹性
弹性是 PaaS 平台的基本能力,弹性技术的好处有:
- 高性能:在业务访问规模上去时,服务器自动增加,保证性能
- 经济性:在业务规模降低时,自动收缩服务器,节省成本
- 高可用:如果有服务器宕机,自动进行故障隔离
- 平滑部署:实现热部署,不影响现有业务运行弹性伸缩提供包括动态伸缩,热部署,故障隔离三层含义.弹性示意(图十四)
我们的弹性技术是由CloudRouter 和 CloudMonitor,资源池3个部分组成.架构:
- CloudRouter是核心组件,是弹性调度的大脑,在用户的任务,资源分配中间起核心的调度协调的作用.
- CloudMonitor 负责项目服务器的状态数据收集,并提供接口供 CloudRouter 查询状态.
- 资源池是基于预创建的可用资源缓冲池.这里主要是指 VM 资源.VM 资源又分为多种配置,对于每种配置的资源,可在后台配置预先创建一定的数量.一旦服务需要资源,可立刻从池里获取.
- 弹性的策略. 当前我们的弹性策略是模块的所有 VM 的负载平均值.当负载平均值大于我们们指定的弹性阀值,则进行扩展,可设置每次扩展的服务器数量.同样,当平均值小于我们指定的阀值,则进行缩减.
在实际的业务场景中,可能有些业务是内部小型项目,不需要进行弹性,是否弹性是一个可选项.另外,还有一些项目,可能无法满足无状态的设计要求,不希望每次部署都更换服务器,我们也提供了在部署的时候,选择“就地部署”,就地部署的意思就是每次部署都使用同样的服务器.弹性调度策略配置:
7. NoOps
平台提供一系列日常运维管理工具,包括常见的服务器性能查询,日志查询,应用分析工具,数据源相关信息查询.大多数场景下,开发人员无需登录服务器.
- 日志管理
日志管理方面,我们提供了两种方式
- 文本日志.我们在每台vm上通过 Rsyslog 进程收集业务进程日志发到集中日志服务器.在集中日志服务器端,我们按项目名称存储,一个项目一个日志目录.日志目录权限管理,我们使用Linux 用户组权限设置,只有具备PaaS 平台项目管理权限的用户,才能查看该项目下的日志.
- Web 日志分析.PaaS 平台对接了公司级的 Web 日志分析系统,能够实时展示项目域名的日志访问量,带宽流量,请求状态等情况.
- 监控
平台监控主要是基于 Zabbix 做了一些 API 层面的定制开发,我们内部称之的为“CloudMonitor“.主要包括以下三个方面功能:
- 基础监控
VM:基础监控包括 CPU,内存,磁盘 IOUtils,磁盘空间使用率,网络流量,TCP链接数,进程数等.监控信息如图:
- 数据源:对 Mysql,Memcached 常规指标做了监控.
自定义监控.支持 TCP,DNS,PING,HTTP,支持自定义告警条件和策略.如图:
- 告警.平台告警由 CloudMonitor 组件负责,支持多种方式告警.CloudMonitor 组件是在Zabbix 的事件接口上,定期获取事件,按业务维度进行汇总分析发送给业务开发负责人和运维负责人.做了一定程度的事件聚合,比如宿主机 Down 机,宿主机上的 vm 相关信息关联起来,从业务开发负责人看:某 vm Down 机是由于某宿主机引起;从运维层面看,某宿主机 Down,影响了这些 vm,这些 vm 运行了这些业务.
- 工具组件
在自助运维场景中,开发人员需要对项目,域名,IP 信息进行查询,平台提供相应的工具.
- 可用性反馈
平台的可用性反馈,主要是对平台各个层面的服务可用性,进行系统化,自动化评估.这里主要介绍下我们的业务的可用性度量实践方法.
我们称为“Monitor.X监控规范”具体描述如下:
- X代表语言.(注:若是 PHP 项目,文件后缀为 monitor.php;若为 node.js,则文件名为,monitor.js).
- 路径要求:url规则为http://项目域名/monitor/monitor.X)项目域名取配置管理里面,设置域名框中,去掉 包括 test 字符串后的第一个域名.
- 输入参数:接口不用输入参数.
- 输出说明:接口输出只分为两种,正常和不正常.
- 正常:状态码为200,且输出包括字符串“200”
- 非正常:状态码200或者非200,且输出字符串不包括200. (可以用作错误提示内容).
- 对于状态码200,同时信息也包括200字符串,但是实际是服务不可用的情况,需要程序员特殊处理返回信息.
- 接口内部实现要求:要覆盖系统的核心业务逻辑(业务自身把握);有多个业务逻辑时,也是统一在一个接口返回(调用顺序由业务控制).
(编辑:ASP站长网)
|