什么是企业级分布式应用服务 EDAS

2019-07-07 2 42

企业级分布式应用服务EDAS是一个应用托管和微服务管理的PaaS平台,提供应用开发、部署、监控、运维等全栈式解决方案,支持Dubbo、Spring Cloud等微服务运行环境,

d32aa3ce9849126e29e38d38.png


阿里云EDAS功能

EDAS支持多种服务框架,提供应用托管、应用生命周期管理、服务治理、应用开发、微服务管理、配置管理、应用监控、应用诊断、组件中心及系统管理。

应用托管

您的应用可以部署到 EDAS 的集群(主要为 ECS 集群和容器服务 Kubernetes 集群)及无服务器的 EDAS Serverless 中。如果您有多套环境,还可以使用命名空间进行隔离。


9f277d2cd9f580e33f210039.png

应用生命周期管理

应用部署完成后,可以通过 EDAS 控制台进行其它应用生命周期管理操作。

服务治理

EDAS 集成了众多服务治理组件,以便应对突发的流量洪峰和服务依赖所引发的雪崩问题,提高平台的稳定性。

应用开发

EDAS 支持基于原生 Spring Cloud、原生 Dubbo 以及 HSF 开发的应用托管到 EDAS 中。

微服务管理

EDAS 提供服务和服务间调用链的查询功能,帮助您管理分布式系统的中的每一个组件和服务。

配置管理

EDAS 已经集成了应用配置管理 ACM。您可以在 EDAS 中使用 ACM 对应用配置进行集中管理和推送,还可以基于命名空间在不同环境间进行配置的隔离和同步。

应用监控

实时监控应用的 IaaS 层资源和服务的健康状态,帮助您快速发现、定位问题。同时支持开通高级监控(业务实时监控 ARMS)。

应用诊断

基于 HSF 框架开发的应用部署并运行在容器(EDAS-Container)中。EDAS 提供了基于容器的诊断功能,为您提供相应数据来诊断应用运行问题。

组件中心

组件中心围绕分布式、微服务体系,重点建设服务集成和整合能力,进而实现 PaaS 平台开放的生态体系。您需要借助组件,完成相关功能。

系统管理

主子账号体系: 通过主子账号体系。您能够根据自己企业的部门划分、团队划分和项目划分在 EDAS 平台上建立对应的主子账号关系;同时,ECS 资源也以主子账号关系进行划分,便于用户进行资源的分配。

角色与权限控制:应用的生命周期管理通常涉及研发、运维和机器资源等角色,不同的角色对于应用的管理操作各不一致。因此 EDAS 提供了角色和权限控制机制,方便用户为不同的账号定义各自的角色,并分配相应的权限。

服务鉴权:为保证您每一次分布式调用的稳定与安全。在服务注册、服务订阅以及服务调用等每一个环节,都进行严格的服务鉴权。


常见问题

EDAS 支持 Java 之外的其它编程语言吗?

EDAS 中提供的大多数框架都是基于 Java 开发。其他编程语言的支持情况罗列如下:

  • HSF 和 Dubbo 框架还提供 C++、PHP 版本的客户端,可以用来访问 Java 提供的后端服务。
  • EDAS 支持任何编程语言开发的镜像来部署的 Kubernetes 应用和 容器服务的 kubernetes 应用。
  • EDAS 的配置管理和服务发现使用 HTTP 协议,您可以基于 HTTP 协议自己开发客户端以使用 EDAS 的这两个服务。

EDAS 能单独输出部署到我公司内网吗?

可以,请提交工单!会有专门的架构师联系您。提交工单的相关操作请参考:

如何通过工单解决产品使用问题?

子用户(客服人员)如何提交工单

是否允许创建多个子账号?

可以。需要申请阿里云账号作为 RAM 主账号(即付费账号),然后 RAM 主账号可以创建多个 RAM 子账号。

将 RAM 账号设为报警联系人后,如何设置联系方式?

在创建 RAM 账号时设置的联系方式目前无法在 EDAS 中使用。如果把 RAM 账号设为报警联系人,请按以下步骤设置联系方式:

用 RAM 账号登录 EDAS 控制台。

在账号管理>个人资料中,可以更新个人资料,包括联系人名称、电话、邮箱。

单击保存后,即可将 RAM 账号信息保存在 EDAS 中。

如何绑定子账号

在 EDAS 控制台 左侧的导航栏中,选择账号管理 > 子账号管理,在用户管理页面右上角单击绑定用户,跳转到 RAM 控制台。

在 RAM 控制台左侧的导航栏中,单击用户管理,再在用户管理页面的右上角单击新建用户,创建出来的 RAM 用户就是本主账号的子账号。

返回 EDAS 控制台,通过主账号可以对该子账号进行权限分配、资源分配等。

谁能对子账号进行应用的授权?

EDAS 只支持由主帐号对子账号进行应用的授权。

Agent 安装之后没有上报,界面未显示 Agent 的版本号。

查看 /home/admin/edas-agent/logs/std.log,如果出现 Java not found 或其他异常,请执行 java --version确认是否是 1.7 版本。如果是 Java1.5,请先使用 rpm -e 对应安装 rpm 名称 命令移除之后,再重新安装 Agent。

Agent 安装后控制状态“未知”或“异常”

请查看 ECS 上 /home/admin/edas-agent/logs 目录下的 std.log 和 agent.log 日志文件:

std.log 是 Agent 安装过程中的日志

agent.log 是 Agent 的运行日志

根据错误排查问题,一般有如下原因:

如果日志中有 “Permission denied” 或 “Not such file” 字样,这可能是没有相关文件目录权限导致,需要确认 admin 账号是否具有 /home/admin 目录下所有文件的权限,然后重新安装 agent。

检查 ECS 实例名和 /etc/hosts 文件中的是否一致,如果不一致,修改后重启 agent 即可:

/home/admin/edas-agent/bin/shutdown.sh

/home/admin/edas-agent/bin/startup.sh


什么是 Docker 实例?和 ECS 独占实例有何区别?

EDAS 的应用部署有两种类型:

ECS 独占实例

在一台独立的 ECS 机器上,仅允许部署单独一个应用。

Docker 实例

使用 Docker 技术,EDAS 实现了在单个 ECS 实例上部署多个应用。在一台 ECS 机器上创建多个 Docker 实例,每一个 Docker 实例中可部署一个应用。

注意:单个应用在同一 ECS 上只能部署一个实例

购买了 EDAS 之后,是否需要另行购买 ECS?

EDAS 是分布式应用的构建和管理平台,本身不包含 ECS 资源,您需要另行购买 ECS。购买之后,EDAS 能够自动同步您账号下的 ECS 资源并进行使用和管理。

EDAS 的 Java 版本是哪个版本,我能够选择吗?

EDAS 提供7,8 两个版本的 Java,默认使用的是 Java 7,您也可以在安装 EDAS Agent 过程中,进行 Java 版本的选择。具体用法如下:

install.sh -ak -sk [-java <7(default)|8>]

例如如下指定使用 JDK 7:

wget -q -O /root/install.sh http://edas-sh.oss-cn-shanghai-internal.aliyuncs.com/install.sh && sh /root/install.sh -ak “您的 AK” -sk “您的 SK” -t install.nonce.at.1499069083770 -Java 7

例如如下指定使用 JDK 8:

wget -q -O /root/install.sh http://edas-sh.oss-cn-shanghai-internal.aliyuncs.com/install.sh && sh /root/install.sh -ak “您的 AK” -sk “您的 SK” -t install.nonce.at.1499069083770 -Java 8

如果 Agent 的心跳进程停了,会有什么样的后果?

如果相应的 ECS 上没有安装应用程序,则不会有任何的影响。如果已经安装了应用,则在应用的机器列表中(在应用管理中选择对应的应用进入基本信息之后,屏幕下方会列出该应用下的所部署的 ECS 列表),相应的 ECS 的实时状态会变成 Agent 异常 ;且此时,任何针对该 ECS 的部署、启动、停止等命令均是无效的。

登录到该机器执行,sudo -u admin /home/admin/edas-agent/bin/startup.sh 将 Agent 启动。排查 Agent 异常退出的原因:

查看 /home/admin/edas-agent/logs/agent.log 中是否有错误信息。

确定系统内存是否足够,如果系统内存紧张,会导致系统 oom kill。具体请搜索:Linux oom kill。如果出现 oom kill,建议查看系统内存使用情况,调整内存分配。

如果 Ali-Tomcat 突然容器退出,该如何处理?

登录 EDAS 控制台启动对应的应用。排查 Ali-Tomcat 异常退出的原因:

查看 /home/admin/tomcat(安装目录)/logs/catalina.out 中是否有错误信息。

确定系统内存是否足够,如果系统内存紧张,会导致系统 oom kill。具体请搜索:linux oom kill。如果出现 oom kill,建议查看系统内存使用情况,调整内存分配策略。

资源未及时同步怎么办?

请在控制台单击资源管理 > ECS > 同步 ECS 按钮进行同步。

同步之后还是无数据, 请访问 https://ak-console.aliyun.com 查看 ak,sk 是否是启用状态。

ak,sk 正常则需要联系技术支持人员进行排查。

为什么安装 EDAS Agent 的过程中会将原有安装的 Java 卸载掉?

在 安装 EDAS Agent 的过程中,除了安装 EDAS 运行环境需要的 Agent 之外,还会安装其依赖环境,如:JDK,由于目前 EDAS 支持 jdk1.7 与 jdk 1.8 两个 JAVA 版本,在安装 EDAS Agent 的过程中,提供了命令行参数选择;即如果指定了 -java 7 则安装 JDK 1.7,-java 8 则安装 JDK 1.8。默认会选择 1.7 进行安装。

在第一次安装的过程中,将会全部下载并初始化一遍,如果被安装的机器上已经安装有相应版本的 JDK,则不会重新安装,否则,会将之前的版本卸载之后重新下载相应版本安装。

之后的升级过程(第二次执行 install.sh 脚本),分为如下情况进行讨论:

执行参数加入了 -force 选项,则会将所有的组件卸载重新安装,包括 JDK。

执行参数没有加 -force 选项,默认只会重新安装 EDAS Agent 组件,然而,针对 JDK 的 -java 选项,又有两种情况需要处理:

如果指定的 JDK 版本与之前安装的版本一致,则不会执行任何操作。

如果指定的 JDK 版本与安装版本不一致,则会重新卸载安装并指定版本。


为什么在 Kubernetes 集群中添加实例初始化失败


可能的原因

VPC 内的交换机和安全组被删除。

ECS 是通过密钥登录的,EDAS 暂不支持该种 ECS 加入 Kubernetes 集群。

解决办法

检查 VPC 内交换机和安全组是否存在。

如果存在,请单击重试。

如果不存在,请重新创建后再在 Kubernets 集群中添加 ECS 实例。

登录 ECS 控制台,删除 SSH 密钥对后,再在 Kubernets 集群中添加 ECS 实例。


在一个 VPC 中,是否可以有多台机器安装日志采集器?

答:推荐使用多个采集器托管一个 VPC 集群内的机器,尤其是在大集群中。

安装完采集器之后,采集器所占用的带宽是否计费?

答:由于我们使用的是内网带宽,阿里云不会把这一部分流量计入账单的。

选择安装采集器的机器是否必须安装 EDAS Agent?

答:不是必须的,但是我们推荐在安装了 EDAS Agent 的机器上安装采集器。

如果不安装日志采集器,会有什么样的影响?

答:体现在 EDAS 的服务中,如果获取不到数据,所有和视图以及调用链相关的服务均变得不可用;这部分功能包括监控(基础监控、服务监控),报警,调用链,扩容缩容等。

在安装过程的最后阶段,老是出现 “setup sproxy failed” 字样,是否是真的失败了?

答:由于安装脚本只是简单的检查连接是否建立,而从模块启动到建立需要一个较长的时延,所以会出现这个问题。建议在安装完成一分钟之后,手动检测端口(8000)是否建立成功。

支持日志采集器的系统有哪些?

答:目前我们仅支持 CentOS 6.5/7.0/7.2 64 位 和 Ali-Linux 15.1 64 位的系统。

VPC 环境调用链查询不到,监控无数据。

答:

调用链和监控数据需要有访问请求流量才会产生,如果无客户访问网站,则不会有曲线。

确定机器的 8182 端口打开。执行 netstat -antp|grep 8182 查看是否端口开放。


重启服务器后 EDAS Agent 是否能自动重启?

是的,重启服务器后 EDAS Agent、应用都会自动重启。

EDAS Agent 为什么无法启动?

首先在服务器上使用 ping 命令检查 EDAS Console 服务器是否可达:

ping edas-internal.console.aliyun.com

其次请检查您的安全令牌文件是否被正确设置:

cat /home/admin/.spas_key/default

现在 EDAS 是否支持在同一台服务器上安装多个应用?

在 EDAS 产品中,应用的部署有两种类型:

ECS 独占实例:在一台独立的 ECS 机器上,仅允许部署单独一个应用。

Docker 实例:EDAS 使用 Docker 技术,在一台独立的 ECS 机器上创建多个 Docker 实例,允许在每一个 Docker 实例上部署一个应用。

应用部署时提供的发布包 URL 是不是可以随意设置?

应用部署包的 URL 必须保证您的服务器是可以下载的。

为什么应用操作(如启动应用、停止应用、部署应用等)会失败?

可能的原因

通常而言,应用操作失败都是由于 EDAS Agent 没有正常运行导致。


解决办法

EDAS 控制台,在左侧导航栏中选择资源管理 > ECS。

在实例列表页面中查看 agent 状态。

如果该实例上已经安装了 Agent,其状态为在线、Docker 在线等。

如果未安装 Agent 或安装失败,其状态为未知或异常。

对于 Agent 状态为异常的情况,请参考 Agent 安装后控制状态“未知”或“异常”,排查原因。

创建应用时,为什么我名下的 ECS 实例没有出现在实例选择列表中?

可能的原因

一般情况下,都是因为您所购买的 ECS 实例上没有安装 EDAS Agent,或者安装失败。

您可能没有将该 ECS 实例添加到您想要创建应用的集群中。

解决办法

登录 EDAS 控制台,在左侧导航栏中选择资源管理 > ECS。

在实例列表页面中查看要创建应用的 ECS 的 agent 状态。

如果已经安装了 Agent,其状态为在线或 Docker 在线。

如果未安装 Agent 或安装失败,其状态为未知或异常。

如果 Agent 状态为未知,即该 ECS 实例上未安装 EDAS Agent,请安装 EDAS Agent。

如果 Agent 状态为异常,则该 ECS 实例上安装 EDAS Agent失败,请参考 Agent 安装后控制状态“未知”或“异常”,排查原因。

确保该 ECS 实例上已经安装 EDAS Agent 后,在 EDAS 控制台左侧导航栏中选择资源管理 > 集群,然后单击您要创建应用所在的集群名称,在集群详情页面查看你想要创建应用的 ECS 是否在该集群中。

如果已经存在,请提交工单或联系 EDAS 技术支持人员。

如果不存在,在页面右上角单击添加 ECS 实例。

为什么在 EDAS Console 上面机器实例的状态是“未知”?

EDAS Agent 会定期汇报心跳数据给 EDAS Console,如果 Agent 停止汇报状态,则某段时间后该机器将会被判定为未知状态。通常而言,该问题是由于 Agent 停止导致。

服务可以正常调用,但是服务列表不显示。

接口 API 中存在泛型,但是泛型没有指定具体的类型,导致解析服务列表失败,请修改对应的代码。

服务列表显示正常,但是调用失败怎么办?

查看服务提供者对应的分组是否已经创建,如果没有创建则会鉴权失败。

需要查看 /home/admin/logs/hsf/hsf.log,确认具体的错误码,根据错误码查询《HSF 常见问题》。

删除应用后是否可以恢复?

不可以,删除应用操作不可逆,所有的数据都会被清除。

如何进行分批发布或者分组发布

如果一个应用有多台实例,可以分批发布,可以分组发布,也可以基于不同分组进行分批发布。

应用创建完成后,在应用详情页面,单击部署应用。

在部署应用对话框中设置文件上传方式并上传 WAR/JAR 包,然后填写版本。

设置发布目标分组。

在发布目标分组右侧的下拉菜单中选择不同分组,即可进行分组发布。

如果下拉菜单中没有其它分组,比如 beta 分组,需要:

在应用详情页面的实例部署信息页签中单击创建新分组,在新建分组对话框中填写分组名(如 beta 分组),单击创建。

返回实例部署信息页面,在默认分组下的实例右侧单击更换分组,在更换分组对话框中选择新建的分组(beta 分组),单击更换。

然后依次将需要发布的实例添加到该分组中。

关于实例分组的详细操作,请参考实例分组管理。

在批次右侧的下拉菜单中,选择发布批次。

选择分批方式,然后单击发布。即可基于分组和批次进行应用发布了。

我的应用部署在多个机器上之后,集群中会话如何共享呢?

目前 EDAS 尚未提供分布式 Session 管理的功能,您可以借助一些分布式缓存系统(比如:OCS,Redis 等)来进行管理。

健康检查 URL 如何设置?

应用发布时会自动将您提供的 WAR 文件部署到 Tomcat 目录,所以缺省情况下健康检查 URL 需要附加 WAR 包名称,而且 War 包中的文件必须返回 200-400 HTTP 代码。比如,如果您的 WAR 包名称是 order.war, 其中包含一个文件 index.jsp, 则健康检查的 URL 可以设置为 http://127.0.0.1:8080/order/index.jsp。

我的应用部署在多个机器上之后,如何实现负载均衡,可以使用 SLB 吗?

EDAS 中提供 HTTP 服务的 Web 应用,需要使用 SLB 来进行负载均衡,您可以在 EDAS 的应用配置页面,进行 SLB 的配置。具体配置步骤,请参考应用设置中的配置负载均衡。

对于 EDAS 的 RPC 服务提供者对应的应用,您无需考虑负载均衡问题,EDAS 原生支持对 RPC 服务提供者的负载均衡。

什么是 Docker 实例?和 ECS 独占实例有何区别? 对商业化计费有何影响?

在 EDAS 产品中,应用的部署有两种类型:

ECS 独占实例:在一台独立的 ECS 机器上,仅允许部署单独一个应用。

Docker 实例:EDAS 使用 Docker 技术,在一台独立的 ECS 机器上创建多个 Docker 实例,允许在每一个 Docker 实例上部署一个应用。

在 EDAS 控制台上对应用进行操作无响应

原因:由于 EDAS Agent 进程退出导致,这个问题在新版 EDAS Agent 中已经修复。

解决方案:登录到客户机器,以 admin 账户执行 /home/admin/edas-agent/bin/startup.sh。如果应用还是无法操作,请单击重置。



相关文章