Skip to main content

组件基础操作

组件基本操作

先就组件可进行的操作进行基础说明:

基础操作说明
构建构建操作将触发组件从构建源获取最新的代码或镜像构建组件的新版本,默认情况下构建成功后将触发滚动升级。
更新(滚动升级)更新操作将以最新的组件属性配置对集群中运行的组件实例进行滚动升级
启动具有至少一个可用构建版本的组件可以启动
停止组件停止即释放所有集群资源
访问运行中的组件可进行访问,如是 HTTP 组件将跳转访问网址,非 HTTP
Web 终端进入当前组件 Web 终端控制页面,选择需要控制的容器即可打开容器控制终端
重启运行中的组件可进行重启操作,正常情况下我们推荐使用更新操作来完成组件重启,若组件任何属性都未变化,无法使用更新。
修改所属应用组件可以灵活调整所属的应用
删除删除组件是一个危险的操作,请谨慎操作。组件删除后持久化数据默认会保留 7 天。

构建操作

适用场景:组件的任何状态

针对不同类型的组件,触发 构建 操作后,有着不同的含义,下表针对不同类型的组件加以说明:

组件类型说明
从源代码构建的组件拉取最新源代码,根据预先识别的语言类型进行组件版本构建并进行滚动升级
从 Docker 镜像构建的组件重新拉取指定镜像地址的镜像,构建出组件新版本并进行滚动升级
从云市应用构建的组件若云市应用不存在更新的版本,构建操作将提醒用户无需操作,若已存在多个更新版本,将提示用户选择需要获取的版本号。根据所选版本获取组件介质生成构建版本并进行滚动升级
  • Dockerfile 源码类组件就是将 Dockerfile 及所需要的文件放到 代码仓库(Git/Svn),通过源代码创建的服务。
  • 构建后,如果一切顺利,组件会自动切换为新版本并上线,构建操作默认并更新升级,也可在其他设置中去设置构建后不升级流程。
  • 滚动升级过程对于多节点的组件理论上无影响,对于单节点的组件如果正常配置了业务级的 健康检测 也可以做到无影响升级。
  • 处于关闭状态的组件,触发构建操作后,如果构建正常,平台会将组件运行起来。

云市组件升级支持的属性

在对云市组件进行升级的时候, 并不是所有的属性都支持升级; 在升级的时候, 各种属性的处理方式又会有所区别. 具体如下表所示:

属性是否支持升级元数据(升级方式)说明
实例可选项更新
内存可选项更新
依赖关系增加如果依赖的组件在同一个应用内, 则增加依赖关系; 否则不进行处理
端口更新, 增加对于端口的升级, 可以更新已有的端口信息, 也可以增加新的端口; 但是不能删除已有的端口
存储增加对于存储的升级, 只能增加新的存储; 不能对已有的存储进行删除, 或修改
健康检测更新对于健康检测的升级, 修改已有的健康检测信息, 不能删除, 或增加(一个组件只能有一个健康检测信息)
镜像更新直接更改为新的镜像
环境变量增加对环境变量的升级, 只支持增加新的环境变量; 不能修改, 或删除已有的环境变量
启动参数更新
依赖存储如果依赖的存储所在的组件在同一个应用内, 则增加依赖关系; 否则不进行处理
有无状态类型
标签

更新操作

使用场景:运行中组件

当组件的依赖、存储、环境变量、特性、健康监测等运行属性发生改变以后, 必须通过手工触发更新操作来将最新的属性配置应用的组件的运行环境中,在这更新过程中默认采用滚动升级的策略对组件实例进行升级。

对于滚动升级有两类控制策略:

  • 无状态组件

对无状态组件采用的是无序的先启动后停止的策略,即先启动新版本的运行实例,当其处于健康运行状态后关闭旧版本运行实例。需要注意的是,此过程会出现多版本同时工作的情况,若你的业务组件无法容忍多版本同时工作,请使用重启策略。

  • 有状态组件

对于有状态组件采用的是有序的先关闭后停止策略,即根据运行实例编号,从第一个实例开始先关闭实例然后启动新版本实例。

这种控制对于像数据库类的组件至关重要,因此请勿将数据库类组件部署为无状态组件。

启动操作

使用场景:构建成功,并处于关闭状态的组件

启动操作会启动上一次成功构建的组件版本,启动后可以在组件概览页面的 操作日志 看到平台调度与处理组件的详细操作日志,当调度完成后,组件就进入启动阶段,这时候可以通过 日志 页面查看组件的启动日志。

特别是对于第一次在 Rainbond 启动的组件,尤其需要关注如下几点:

  1. 组件启动或更新超时怎么办?

目前 Rainbond 对于异步任务确定了固定的超时时间,因此请注意,超时并不是失败,需要根据实际情况优化组件的配置,如果有超时,请按如下路径进行排查:

  • 查询 组件日志 确定组件的启动情况,若你的组件日志未输出到 stdout 或 stderr,请进入组件容器查询你的日志。比如一些 Java 类的组件,若分配的内存不足将导致启动非常缓慢, 亦或者从日志中发现组件运行环境是否正常,比如依赖了数据库,是否能够正常访问数据库等。
  • 如果源码构建的组件在启动后很长时间才进入正常的业务启动过程,请优化代码忽略掉多余的源代码文件减少运行代码解压时间 参考 slugignore 文件使用方式
  • 确定组件监听的地址不是 127.0.0.1 或 localhost
  • 若组件监听地址正确且已正常监听,请查询 组件健康检测 配置是否正确,一般若组件有多个端口时容易出现默认配置错误的问题。
  • 以上组件可能的故障如都已排除还是启动超时且一直处于启动中状态,请通过运维工具 grctl clustergrctl service get <service_name> -t <tenant_name> 查询集群和组件运行实际状态。
  1. 组件运行异常怎么办?

组件运行异常是指组件进程异常的退出了,一般有几下几种原因:

  • 组件代码故障,无法正常运行
  • 组件使用了不支持的镜像,比如基础操作系统镜像,无法在前台守护运行。
  • 组件内存分配不足导致 OOM
  • 组件健康检查配置错误,导致组件无法通过健康检查。

若是上述情况,请处理你的组件配置,组件运行过程中如果异常退出 Rainbond 会自动守护并重新启动你的组件

  1. 组件无法访问怎么办?

组件无法访问时请查看如下几类原因:

  • 组件未正常运行,根据运行状态和组件日志确认
  • 组件端口配置不正确,组件端口配置务必与组件真实监听的端口一致
  • 组件可访问端口未打开对外组件开关
  • 组件未配置正确可访问的域名

关闭操作

使用场景:运行中或运行异常的组件

触发关闭操作后,组件将首先从应用网关或 ServiceMesh 网络下线,然后关闭所有运行实例,释放集群资源。

重启操作

使用场景:运行中或运行异常的组件

触发重启操作后,平台会将现有的组件运行实例全部关闭,待关闭完成后进行启动。若出现关闭超时时 重启操作将退出,组件启动的控制权交予用户。

  • 重启组件并不会更新组件代码或镜像,需要和构建操作区分。
  • 重启操作会中断组件

访问操作

使用场景:运行中的组件 && (打开了对外组件 | 对内组件的端口)

针对不同协议的组件,点击访问按钮后所触发的命令也不一样:

组件协议点击访问按钮后的操作
HTTP浏览器新开窗口,打开组件的默认域名,如果绑定多个域名,会显示域名列表供用户选择
TCP弹出访问信息窗口
  • HTTP 协议组件
  • TCP 协议组件

复制推荐的访问地址到浏览器即可访问