阿里云 + 容器化 配套产品使用介绍

前言

本文主要探讨政务云下,使用容器方式部署服务时,整体配套的阿里云产品,同时介绍主要使用的基础产品及这些产品使用的一些建议。

下文对于阿里云产品的使用介绍基于目前的政务云版本,与公有云版本存在一定差异,仅供参考。


部署架构

阿里云 + 容器化 配套产品使用介绍

由于线上环境稳定要求较高,因此加入了拨测 和 监控报警服务,为项目单独开发,本文暂不做介绍。



产品介绍

EDAS(企业级分布式应用服务

使用方式

edas的发布主要有两种方式基于ESC集群部署和基于k8s集群部署(需要配合阿里云的容器服务使用)

同时,edas也提供了微服务的注册中心和配置中心

tips

  • 使用edas+acs实现无损发布(发布期间流量不中断)

滚动发布 + Readiness配置,配置健康检查的接口,只有通过了Readiness检测,流量才会打到此pod。

阿里云 + 容器化 配套产品使用介绍


ACS(容器服务)

使用方式

容器需要对外暴露服务时,是不可使用pod Ip + 端口的,这只在k8s集群内部可识别,正确的做法是使用容器服务配置服务,容器服务本身是提供了slb负载均衡的地址段的。(使用EDAS发布时,EDAS也可直接配置负载均衡,但需要关联SLB,较为不便,不推荐)

阿里云 + 容器化 配套产品使用介绍


SLB (负载均衡)

使用方式

基于k8s发布的服务,SLB中无法直接选择相应的服务器,需要手动添加服务ip地址(上面容器服务中配置服务的负载均衡地址)

阿里云 + 容器化 配套产品使用介绍


SLS(日志服务)

使用方式

集群部署时,日志分散在各个节点上,查看日志时,需要切换各个节点查看,极为不便(容器方式还需要多一步进入容器,更为麻烦)。

sls采集容器服务的日志时,需要把logtail配置到镜像内,同时采用机器组格式,多台服务器通过同一个自定义标识实现机器组弹性伸缩。(容器每次重启pod ip会变更,不适合使用固定IP)

# 获取安装logtail的脚本

wget http://data.cn-hangzhou-zwynet-d01.sls-pub.internet.cloud.zj.gov.cn/logtail.sh 

# 安装logtail

sh logtail.sh install 

# 修改机器组标识

echo dayu-compute-yufa > /etc/ilogtail/user_defined_id 

tips

  • sls的默认全文索引,基于分词查询的,可以根据需要配置分词符 默认配置中 . 并不是分词符

阿里云 + 容器化 配套产品使用介绍

以默认配置为例,以下日志搜IOException并不能搜到日志, 需要搜java.io.IOException,因为默认 . 并不是分词符,需要按完整分词搜索

阿里云 + 容器化 配套产品使用介绍


  • 基于格式化字段的搜索 如 ElapseTime > 1000,需要给该字段加数值索引,否则不生效

阿里云 + 容器化 配套产品使用介绍

阿里云 + 容器化 配套产品使用介绍


  • 基于分词符,索引的修改只能对后续接入的日志生效,并能不影响之前的数据
  • 同一个文件,只能被一个Logtail的配置收集,不支持同时被多个logtail配置收集
  • 不要使用极简模式(单行) 模式采集日志,异常栈会被认作是多行日志,集群模式下,会出现错序,使用极简-多行 或正则模式匹配行首即可




ARMS(应用实时监控服务)

使用方式

使用jar包方式部署时,不需要额外的配置即可接入arms;使用容器部署时,需要将探针拷贝到镜像中,同时指定相应的启动命令。

# 拷贝ARMS探针

COPY ArmsAgent.zip ArmsAgent.zip


# 启动命令

# 启动后端服务

java -javaagent:/data/arms/ArmsAgent/arms-bootstrap.jar -Darms.licenseKey=#{licenceKey} -Darms.appName=#{appName} -jar java.jar --spring.profiles.active=${activeProfile}


tips


  • 慢SQL巡检优化 (可以使用接口快照查看是由哪些接口引起的)

阿里云 + 容器化 配套产品使用介绍


  • 异常分析,可以辅助测试发现一些隐蔽的问题(可以使用接口快照查看是由哪些接口引起的)

阿里云 + 容器化 配套产品使用介绍


  • 调用链路,耗时分析优化 & 错误排查, 调用栈中会将每一步的耗时打印出来,另外,如果该接口出错,调用栈也会展示在哪个方法中抛出了异常

阿里云 + 容器化 配套产品使用介绍

上一篇:C语言-一维指针定义与使用


下一篇:Linux输入子系统:多点触控协议 -- multi-touch-protocol.txt【转】