小米新版应用引擎v1.3已在生态云各区域上线
小米生态云基于Kubernetes开发的新版应用引擎自从上线后稳定运行了近一年的时间,支撑了许多生态链公司的云端应用。
为了更好的服务生态链公司,满足更多的应用场景,我们开发了新版应用引擎的v1.3版本,已经在生态云的所有区域上线。v1.3版本在命令行工具、应用部署和灰度升级以及日志方面等做了很多重大更新,快来了解一下吧!
命令行工具
v1.3版本后,命令行工具支持所有常用的Web Console上的操作,可以嵌入到CI/CD流程中,实现对应用的自动化管理。
除了应用管理(创建/修改/删除/查询/启停/灰度升级),命令行工具还支持绑定和解绑自动扩容策略、查看实时日志、获取应用的内存和CPU指标等一系列功能。输出格式除了表格式输出,还支持JSON格式,方便自动化运维。
更多信息,请参考文档:http://docs.api.xiaomi.com/app-engine-v2/cli-v2.html。
应用部署
支持多个端口
应用引擎之前创建应用时,仅支持容器暴露一个端口。如果应用的镜像有多个端口,应用引擎不能对其很好的支持。 v1.3版本后,在创建应用时,可以选择多个容器端口和内部服务端口。多端口完美支持内部访问域名和外部服务。
一个很常见的多端口例子是,一个应用同时提供面向客户的商品页面和面向运营的管理页面。
自助设置HTTP/HTTPS服务的白名单
v1.3版本后,在创建应用时,可以设置允许访问的公网IP的白名单(以半角逗号分割的多个CIDR网段)。如果白名单为空,将允许所有公网IP访问。
白名单设置常用于企业内部管理应用,可以提供更安全的访问机制。
健康检查功能
v1.3版本后,创建应用的时候可以自定义健康检查,包括:服务启动状态检查、服务健康状态检查。
服务启动状态检查
服务启动状态检查可以告诉系统容器何时可以开始接受流量,提供服务。
有时候,应用程序可能需要在启动过程中加载大量数据或者配置文件,这段时间,应用无法提供服务。
一个很常见的例子是,部署tomcat应用时,tomcat进程启动和tomcat初始化完成会有一个明显时间间隔。
开启容器启动状态检查后,系统会按照界面指定的方式探测实例的就绪状态,如果实例未就绪,就不会把实例加入负载均衡列表。
目前,启动状态检查支持三种探测方式(HTTP GET/ TCP端口/自定义命令),支持了超时和重试次数选择。如果达到指定时间和次数还未就绪,系统会自动删除重建实例。
服务健康状态检查
服务健康状态检查可以告诉系统何时重新启动容器。
使用Docker部署应用时,一个很常见问题是如果容器使用了进程管理工具或者容器内有多个进程,导致容器中的init进程不是实际的工作进程。当工作进程发生异常退出时,由于工作进程的退出不会导致容器的退出,系统无法检测应用的不健康状态,也无法进行自动重启。这样很容易导致服务超时、不可用。
有时候,即使工作进程运行正常,但由于某些其他原因(例如不能连接数据库服务,或者发生死锁),也会导致服务的不可用。
很多情况重新启动容器可以使应用恢复正常。
开启容器服务健康状态检查后,系统会在运行过程中,根据指定的探测方式,判断容器的运行状态。
如果服务探针按照设置的规则探测到容器里面的服务已经不可用,则会将该实例从服务提供列表中移除,并且删除并重建容器。
目前,服务监控状态检查也提供三种探测方式(HTTP GET/ TCP端口/自定义命令),支持超时和失败重试次数的选择。
容器的退出设置
应用提供服务时,如果一个实例正在处理一些请求,这时候收到停止退出的指令,有些请求可能会超时或者丢失。 容器退出设置提供容器优雅停止功能,在停止容器前,能够让容器里面的服务能有一定的时间处理、保存执行现场,优雅的退出程序。
容器退出可以指定执行两种命令(HTTP GET/自定义命令),也可以指定等待时间然后立即停止容器。
磁盘大小
v1.3版本以后,应用实例所占用磁盘大小也会显示在实例信息中。请确保不在容器中保存本地文件,包括应用的日志(应该写到标准输出和标准错误)。如果磁盘占用过大(超过4G),系统会重启实例。
日志方面的增强
可定制日志的存储目标
应用引擎之前的日志支持三个存储目标:实时日志、日志下载、Splunk分析,并且是固定不能更改的。
但三个存储目标有着不同的对应场景:实时日志适合调试,在日志量较少的情况下,有着很显著作用;日志下载每小时生成一个文件,保留时间较长,适合查看过去的日志; Splunk分析适合生成报表,进行统计分析,而且Splunk有资源限制。 v1.3版本以后,用户可以根据应用情况,自由勾选需要的存储目标,这样既避免了资源浪费,又能更好的满足实际需求。
日志输出内容增加实例名称
在以往的日志中,没有记录实例的标识信息,如果应用有多个实例,查看日志的时候无法区分是哪个实例产生的。 v1.3版本以后,日志内容加入了实例名称字段。这样在排查问题时候,就可以快速定位到具体的实例。
新的日志存储目标
v1.3版本后,新增加一个日志存储目标:日志导出到FDS。
在应用详情中勾选了日志导出到FDS后,系统会在生态链公司账号下的FDS中创建一个名称形如appengine-v2-fds-log-<org-name>的Bucket,<org-name>是生态链公司的org名称。
日志导出到FDS也是每小时生成一个文件,但和日志下载不同的是,在FDS中,不同实例会分别生成一个文件,以防在过多实例时,单个文件的日志量太大而导致的查找困难。
注意:日志导出到FDS使用的是新版的FDS,请在FDS界面上方点击切换到新版使用这个功能。
实时日志优化
v1.3版本的实时日志,优化了日志刷新和旧日志查看方面的一些问题:前端页面不再以不停刷新的方式显示日志,加入了自动滚动的选项,选中后,页面底端会一直滚动显示最新日志;优化了页面的配色,改为黑底白字;实时日志新增一种新的查看方式:从过去时间查看,用户可以选择过去一个小时内的一个时间点,查看到当前的日志(超过一小时请到日志下载等其他途径查看)。
域名访问日志
v1.3版本后,创建应用时,如果暴露为外部HTTP/HTTPS服务,可以勾选是否开启针对该域名的accesslog选项。如果勾选,系统会把该域名的日志自动收集到Splunk中,可以在Splunk服务中搜素host = access.log 获取相应内容。
操作日志
操作日志记录了用户所有的添加、删除和修改操作。如果发生了意外的破坏性操作,管理员可以进行回溯和查找。
灰度升级优化
灰度升级,或者蓝绿部署,是一种可以保证系统在不间断提供服务的情况下上线的部署方式。 应用引擎之前对灰度升级的支持是不完全的,同一个域名和路径只能对应到一个应用。
v1.3版本后,通过灰度升级功能,可以在同一个访问方式(域名+路径)下,同时对应新老两个应用。 升级时在不停止老应用的同时,部署新版本进行测试,如果没有问题,逐步减少老应用的实例,增大新应用的实例,最后将流量完全切换到新应用上来。 在这个过程中,用户完全感受不到服务的停止,从而保证了升级时候的服务质量。
新的自动扩容度量值
v1.3版本后,自动扩策略支持按照HTTP/HTTPS服务的响应时间进行扩容,保证应用的响应时间和服务质量。
其他功能的优化
停止应用后,重新启动应用,应用会保持停止之前的实例数,而不是1
用户管理中,删除应用引擎v2的Space资源时,需要预先清空该Space中下的所有资源,避免误操作。
更多小米新版应用引擎功能更新
扫码关注☟☟