i)查看应用【健康检查配置】是否正确。
进入“应用发布” -> “环境管理”,找实例所在环境以及环境关联的配置。
进入“部署配置”,找到上上一步那个配置后点编辑,找到编辑页面下方“健康检查配置”中“应用存活探针”,确认“应用存活探针”配置是否正确。
ii)结合查看应用日志,根据日志输出确认相关问题,请见本文档【如何查看应用日志】部分。
iii)结合【应用监控】,查看应用(实例)的各项指标,比如CPU,内存水位。结合应用日志,请开发者自己判断瓶颈是否可以通过实例扩容解决。
iv)尝试通过应用环境扩容解决。请参考具体操作:请见本文档的【如何给应用扩容】;如果由于资源不足导致容器无法正常启动(常见提示为Insufficient CPU Insufficient Memory),请参考本文档的【集群扩容】部分,先扩容容器集群。
核心应用所在集群已提前进行DNS扩容。如大促期间仍出现DNS解析问题,请立即联系@杭羽 对集群后台进行扩容和优化。
i)进入“应用发布”-> “部署配置”-> 修改已有配置点“编辑”,新建配置点“新建部署配置”,在配置页面底部点击“健康检查配置”Tab,在“应用就绪探针”部分进行相应配置。
ii)支持两种类型的就绪探针:http get和shell script。
a. shell script,脚本检查,在容器中执行配置中编写的脚本,脚本执行后退出返回0表示Success
b. http get,HTTP检查,向配置的url和端口发起一次HTTP请求,如果返回码为200表示Success
具体健康检查配置的说明可参考云应用如何配置健康检查。
i)首先请保证集群内有多台ECS,且ECS上的可用CPU内存资源足够应用实例部署。ECS节点资源详情请参考集群内节点的详情信息。操作路径:运维中心 -> 集群管理 -> 节点列表 -> 节点管理。
ii)理论上,一次发布的多个容器在ECS节点资源足够的情况下会尽量分散部署。也给可手动指定环境资源分配策略,让多容器尽量分布在不同的ECS节点上。参考文档:为环境手动分配计算资源策略。
iii)如果后期新加入ECS节点,而想把之前部署的比较密集分布的容器迁移到新的ECS节点上,可以在业务低峰期将业务重新发布一次,让系统将容器重新调度。
iv)还有一种方式,是在不重新执行环境发布的情况下,手动执行应用实例重建让集群将单个应用实例重新调度一次。请注意,应用实例重建会导致该实例在重建成功的时间段内不可用,且原实例内没有进行挂载的数据会丢失。请在业务低峰期,考虑清楚后果后谨慎操作。操作入口:应用 -> 实例列表 -> 重建实例。
应用监控的入口在「应用列表 -> 更多 -> 监控」。
进入监控页之后,可以把监控分为两个维度:
i)基础监控:基础监控的数据来源是阿里云云监控,是免费产品。可以看到某个环境下分组(分实例)的CPU,内存,Load等常用基础监控值。
ii)应用监控:应用监控的数据来源是阿里云ARMS,arms是收费产品,需要购买资源包才能看到监控数据。arms可以看到更细粒度的业务监控数据,比如QPS,HTTP监控,慢SQL监控,JVM监控等。参考文档:应用接入ARMS。
i)远程登录到容器,查看日志。
进入“应用发布”-> “环境管理”,找到实例所在环境,点击“管理资源”,在实例列表中点击“远程登录”,进入日志目录查看。
ii)查看应用发布日志。
进入“应用发布”-> “发布流程”,点击相应的环境,点击“发布记录”,找到最近一条发布单,点击“详情”,找到需要查看的发布阶段“进行中”或“已完成”,点击查看日志。
应用扩容是指针对应用的某个环境扩容应用实例,比如将应用实例个数从1个调整到2个。
请在「应用-环境管理」控制台执行扩缩容操作。
注:如果碰到应用扩容资源不足的问题(点击查看),请先去集群管理,扩容集群。再来扩容应用。
请在环境关联的部署配置中,修改CPU,内存配置。并且重新发布后生效。
i)首先通过查看系统日志,看下后端是否有明显的报错日志。如果有明显的报错,则需要自己根据异常来判断错误原因;
查看日志方式:
如果已接入SLS并且通过SLS采集了系统日志,可以通过SLS查看;
如果未接入SLS,可以通过下面的方式查看:应用发布 -> 环境管理 -> 管理资源 ,进入后点击应用实例后的 【远程登录】,然后查看自己的系统日志。
ii)如果未发现明显的异常日志,则一般是SLB的规格过低导致连接被断开或拒绝,此种情况需要升级SLB的规格。
观察SLB负载情况:观察SLB负载情况:
聚石塔控制台 -> 资源视图 -> 负载均衡。
升级SLB规格:升级SLB规格:
如果发布时系统流量太大导致发布不成功或卡住,一般表现为:
a) 外部流量比平时正常情况下要高出较多;
b) 应用实例刚开始能启动,但随后很快就被重启,发布单一直处于部署中状态;
i)先走应用实例扩容操作,保障应用水位处于一个相对较低的水位。
ii)(如果扩容成功,跳过此步)如果扩容起不来新的应用实例,说明已有的应用实例都处于假死状态,请按以下步骤解决:
a) 可以先将健康检查配置为肯定能成功的,比如:脚本类型的 return "success",优先保障pod能起来接收流量,并且调大应用实例数量,然后提交新的发布单;
b)如果调整健康检查后扔未能扩容成功,一般不会出现这种情况;极端情况下可以考虑将外部流量暂时摘除,不让流量进来。此时再去扩容,扩容成功后再将流量引入。注意:流量摘除后对外的服务也将完全不可用,此方案请慎重执行。
iii)如果有功能变动或bug修复,在扩容成功后,再提交新的发布,发布时请将分批数量设置大点,保证处于服务中的应用实例数量。
i)运维中心-集群管理-节点列表;
ii)查看节点实例信息;
这里可以看到节点的状态,检测每一项。例如:
如果磁盘空间超标为True,则说明节点磁盘不可用,检测磁盘使用情况,释放一些空间。
如果网络不可用为True,可能是集群的规模超过了上限,节点上无法分配容器IP,详情见:点击查看,由于集群规模创建时候指定就无法更改了,所以不能添加新ECS节点了,考虑对原有ECS做垂直弹升。
集群创建过程中可能遇到的问题,请参考:点击查看。
VPC路由表条目超限。需要去VPC控制台申请配额上限,扩容一台ECS需要一个路由表条目。点击查看详情。
找到创建集群使用的VPC,提交阿里云工单,申请一下该VPC下的EIP quota。
所选ECS已经加入了5个安全组,阿里云限制每台ECS最多加入5个安全组,加入集群需要加入另一个安全组。
解决办法:将ECS退出其他安全组,保证加入的安全组数量<=4。
特别地,如果是下列两种名字开头的安全组,可以直接退出该安全组。?
首先,确认下ECS是否和集群的VPC属于同一个。
其次,确认下ECS是否已经关联到聚石塔的应用,关联了应用的机器原则上不能添加进集群(机器会被重置)。
最后,确认ECS实例的状态,是否过期,是否为running状态。
① 进入聚石塔运维中心;
② 集群-管理-节点列表-添加已有节点;
③ 勾选要添加的节点;
④ 等待扩容执行,扩容完成节点状态变为“运行中”则表示添加成功;