云服务器内容精选

  • 目录结构 软件包需要确保在解压缩后能够正常执行生命周期指定的命令脚本。 建议软件包目录结构如下: ├── scripts/ │ │ ├── pre-stop.sh │ │ ├── stop.sh │ │ ├── uninstall.sh │ │ ├── install.sh │ │ ├── start.sh │ │ ├── check.sh │ │ ├── post-start.sh ├── packages/ │ │ ├── xxx.jar/xxx.war ├── config/ ├── appspec.yml
  • 组件部署方式说明 组件部署方式 说明 容器部署 云容器引擎部署:云容器引擎CCE提供高度可扩展的、高性能的企业级Kubernetes集群,支持运行Docker容器。借助云容器引擎,您可以在云平台上轻松部署、管理和扩展容器化应用程序。 虚拟机部署 虚拟机,即弹性 云服务器ECS ,是由CPU、内存、操作系统、云硬盘组成的基础的计算组件。弹性云服务器创建成功后,您就可以像使用自己的本地PC或物理服务器一样,在云上使用弹性云服务器,将组件部署在虚拟机上。
  • 组件来源说明 组件来源 说明 源码仓库 参考仓库授权创建授权,然后设置代码来源。 Jar包 支持以下上传方式: 从CodeArts软件发布库选择对应软件包。需要提前将软件包上传至CodeArts软件发布库,相关操作请参考上传软件包。 从SWR软件仓库选择对应的软件包。需要提前将软件包上传至软件仓库,相关操作请参考上传软件包。 从OBS对象存储选择对应的软件包。需要提前将软件包上传至OBS桶中,相关操作请参考上传对象 。 War包 支持以下上传方式: 从CodeArts软件发布库选择对应软件包。需要提前将软件包上传至CodeArts软件发布库,相关操作请参考上传软件包。 从SWR软件仓库选择对应的软件包。需要提前将软件包上传至软件仓库,相关操作请参考上传软件包。 从OBS对象存储选择对应的软件包。需要提前将软件包上传至OBS桶中,相关操作请参考上传对象 。 Zip包 支持以下上传方式: 从CodeArts软件发布库选择对应软件包。需要提前将软件包上传至CodeArts软件发布库,相关操作请参考上传软件包。 从SWR软件仓库选择对应的软件包。需要提前将软件包上传至软件仓库,相关操作请参考上传软件包。 从OBS对象存储选择对应的软件包。需要提前将软件包上传至OBS桶中,相关操作请参考上传对象 。 镜像包 容器应用需要基于镜像创建。支持“我的镜像”(私有镜像)、“开源镜像”、“共享镜像”、“第三方镜像”。 若选择“我的镜像”,您首先需要将镜像上传至镜像仓库,请参考上传镜像。 若选择“第三方镜像”,您需要已获取第三方镜像的地址。镜像地址格式为: {第三方镜像仓库IP地址}:{第三方镜像仓库访问端口号}/{镜像存储路径}/{镜像名称}:{镜像版本号} 或者: {镜像名称}:{镜像版本号} 若没标注镜像版本号,则默认为最新版本号latest。 目前仅支持获取第三方公开镜像。
  • 技术栈简介 技术栈包含组件运行所依赖的操作系统、框架和运行时,由技术栈名称、类型、状态、版本等属性构成。其中,版本号遵从语义化版本控制规范。 ServiceStage为您提供并管理技术栈生命周期,您只需聚焦具体业务开发,提升您的应用托管体验。 技术栈各生命周期阶段定义如下: Preview:Beta版本技术栈发布。 GA(General Availability):正式版本技术栈发布。 EOL(End of Life):技术栈生命周期结束。 技术栈状态定义如下: Preview:生命周期处于Preview阶段的技术栈。 Supported:生命周期处于GA阶段的技术栈。 Deprecated:生命周期处于GA阶段、但是已经发布了EOL公告的技术栈,或者ServiceStage服务不主推的技术栈。 技术栈的详细信息请参见表1。
  • 组件简介 组件是组成应用的某个业务特性实现,以代码或者软件包为载体,可独立部署在环境下运行。 关于应用,请参考应用概述;关于环境,请参考环境概述。 组件和应用、环境的关系,如图1所示。 图1 组件和应用及环境的关系 在ServiceStage上创建应用和环境后,可以在应用和环境中创建并部署组件。同一个应用下,最多可支持创建1000个组件。 您可以根据实际业务需求设置组件技术栈及组件来源,创建并部署组件。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 name 否 String 应用名称。 字符集:支持中文、英文字母、数字、中划线、下划线、点、空格和中英文圆括号。 约束:实例下唯一。 remark 否 String 应用描述。 favorite 否 Boolean 收藏的应用。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 id String 应用ID。 name String 应用名称。 字符集:支持中文、英文字母、数字、中划线、下划线、点、空格和中英文圆括号。 约束:实例下唯一。 remark String 应用描述。 roles Array of strings 应用权限角色。 read:应用下资源只读权限,至少要存在此权限,包括API调试。 access:应用下资源的访问管理权限。 delete:应用下资源的删除权限。 modify:应用下资源的修改权限,包括API发布、下线。 admin:应用和应用下资源的权限。 仅提供admin时,会自动应用其它所有权限。 未提供read时会自动应用read权限。 create_time String 创建时间。 update_time String 更新时间。 created_user created_user object 创建用户信息。 last_updated_user last_updated_user object 最后更新用户信息。 owner Boolean 是否是应用拥有者。 key String 应用认证访问KEY,未提供时随机生成。 字符集:支持中文、英文字母、数字、中划线、下划线、@号和点,以字母或中文或数字开头。 约束:实例下唯一。 favorite Boolean 是否收藏应用,收藏的应用会在列表里优先显示。 表5 created_user 参数 参数类型 描述 user_id String 创建应用的用户ID。 user_name String 创建应用的用户名称。 表6 last_updated_user 参数 参数类型 描述 user_id String 最后修改者的用户ID。 user_name String 最后修改者的用户名。 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误消息。 error_details String 具体错误消息。 request_id String 请求处理ID。
  • 响应示例 状态码: 200 OK { "id" : "b2e6b145-4f3f-4a80-aa45-f4b8029f95a3", "name" : "AppName", "remark" : "example", "roles" : [ "read, access, delete, modify, admin" ], "create_time" : "2019-12-06T06:49:04.000Z", "update_time" : "2019-12-06T06:49:04.000Z", "created_user" : { "user_id" : "string", "user_name" : "string" }, "last_updated_user" : { "user_id" : "string", "user_name" : "string" }, "owner" : true, "key" : "TEI9****8UM", "favorite" : true } 状态码: 403 Forbidden { "error_code" : "ROMA.00000101", "error_msg" : "error summary", "error_details" : "some error details here", "request_id" : "13760c1fe8655e61209b75665e9bef43" }
  • 准备资源 为了方便后续的操作,需要您提前准备好如下资源: 创建一个 虚拟私有云VPC ,请参考创建虚拟私有云和子网。 创建一个CCE集群(如果只是试用场景,“集群规模”选择“50节点”,“集群master实例数”选择“否”即可),请参考购买集群。 CCE集群所在VPC为1所创建的VPC。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的E CS 节点,并且绑定弹性公网IP。为CCE集群添加节点,请参考创建节点。 CCE集群不能被其他环境绑定。 已在 域名 提供者处注册并获取公网域名,请参考创建公网域名。 本例基于ServiceStage绑定GitHub源码仓库,实现源码构建、归档、应用创建。需要先到GitHub官网注册账号,请参考在GitHub上创建帐户。
  • ServiceStage最佳实践汇总 本文汇总了基于应用管理与运维平台(ServiceStage)常见应用场景的操作实践,为每个实践提供详细的方案描述和操作指导,帮助您轻松掌握不同应用场景下ServiceStage的使用方法。 表1 ServiceStage最佳实践一览表 最佳实践 说明 使用ServiceStage托管和治理天气预报微服务应用 通过天气预报应用,展示了微服务架构设计理念的应用场景,以及使用ServiceStage管理运行环境、构建应用和治理微服务的最佳实践。 开启ServiceComb引擎专享版安全认证 ServiceComb引擎专享版支持基于RBAC(Role-Based Access Control,基于角色的访问控制)策略的安全认证,并支持开启/关闭安全认证。 引擎开启了安全认证之后,要求所有连接该引擎的微服务都要配置安全认证账号和密码。否则,微服务将注册失败,导致业务受损。 本章节介绍未开启安全认证的ServiceComb引擎专享版,开启安全认证并确保已接入引擎的微服务组件业务不受影响,即如何平滑开启安全认证。 ServiceComb引擎仪表盘中的数据通过ServiceStage对接到 AOM 接入ServiceComb引擎的Java Chassis应用,在ServiceComb引擎仪表盘上的实时监控数据默认保留5分钟。如果需要持久化存储历史监控数据用于后续查询分析,可以使用ServiceStage的自定义指标监控功能,将微服务显示到ServiceComb引擎仪表盘中的数据对接到AOM。 本章节以软件包部署应用为例,指导您完成将ServiceComb引擎仪表盘中的数据通过ServiceStage对接到AOM。 使用ServiceStage零代码修改实现微服务注册引擎迁移 本章节指导您将使用Java Chassis微服务框架开发并注册在ServiceComb引擎专业版上的微服务应用组件,零代码修改迁移注册到ServiceComb引擎专享版。 使用ServiceStage托管Spring Boot应用 Spring Boot是一个基于Spring框架的开源应用程序开发框架,可以帮助您快速构建可独立运行的、生产级别的应用程序。 本最佳实践使用Spring官方提供的样例代码,帮助您快速在ServiceStage上快速部署、访问和升级Spring应用。 使用GitLab对接Jenkins自动构建并升级部署到ServiceStage的组件 代码开发完成后,每次上线前都需要先在Jenkins上打包成镜像包或Jar包,再将镜像包上传到SWR镜像仓库或者将Jar包上传到OBS对象存储,然后再使用ServiceStage升级组件版本配置。该流程较为繁琐,频繁发版本测试导致开发和运维效率低、用户体验差。 如果您的代码在GitLab上管理,使用ServiceStage进行应用托管并且已经部署了组件,则可以通过使用GitLab对接Jenkins自动构建打包,升级已经部署在ServiceStage上的组件版本配置。 本实践通过输出在Jenkins构建打包完成之后自动升级组件的shell脚本,实现了代码合入后自动构建打包并在ServiceStage上升级部署。 使用ServiceStage全链路流量控制实现Spring Cloud应用全链路灰度 在一个存在多个微服务组件的应用体系中,对其中一个微服务组件进行版本升级发布时,会涉及到其他微服务组件版本的变动升级。所以要求在灰度验证时能够使得灰度流量同时经过涉及到的所有微服务组件灰度版本。 但是在真实业务场景中,由于业务的微服务组件规模和数量很大,一条请求链路可能会经过很多个微服务组件。新功能发布时也可能会涉及到多个微服务组件同时变更,并且业务的微服务组件之间依赖错综复杂。频繁的组件版本发布、以及组件多版本并行开发导致流量治理规则日益膨胀,给整个系统的可维护性和稳定性带来了严重挑战。 对于以上问题和挑战,通过全链路流量控制功能将应用组件的相关版本隔离成一个独立的运行环境(即泳道),通过设置流控路由规则,可以将满足规则的请求流量路由到目标版本应用。 使用ServiceStage基于发布管理实现组件跨可用区搬迁和顺序升级 在实际业务中,考虑到机房故障问题,需要将服务部署在不同的可用区中以提高可用性。 但是,在不同可用区部署组件时每个组件都必须按需配置一遍,存在操作复杂、容易出错的问题。而且需要在组件创建完成后立即部署运行,并不支持创建后按需部署的需求。如果组件配置错误,会导致部署失败,需要删除后重新创建并部署。 使用ServiceStage的发布管理功能可以更好的实施组件迁移和搬迁: 基于ServiceStage发布管理的批量克隆发布单实现组件的跨可用区搬迁。 基于ServiceStage发布管理的批量升级发布单实现组件跨可用区的升级,并指定在不同可用区组件的升级顺序。
  • 实践概述 在实际业务中,考虑到机房故障问题,需要将服务部署在不同的可用区中以提高可用性。 但是,在不同可用区部署组件时每个组件都必须按需配置一遍,存在操作复杂、容易出错的问题。而且需要在组件创建完成后立即部署运行,并不支持创建后按需部署的需求。如果组件配置错误,会导致部署失败,需要删除后重新创建并部署。 使用ServiceStage的发布管理功能可以更好的实施组件迁移和搬迁: 基于ServiceStage发布管理的批量克隆发布单实现组件的跨可用区搬迁。 基于ServiceStage发布管理的批量升级发布单实现组件跨可用区的升级,并指定在不同可用区组件的升级顺序。 父主题: 使用ServiceStage基于发布管理实现组件跨可用区搬迁和顺序升级
  • 准备资源 创建一个虚拟私有网络VPC,请参考创建虚拟私有云和子网。 创建一个1.15以上版本的CCE集群(如果只是试用场景,“集群管理规模”选择“50节点”,“高可用”选择“否”即可),请参考购买集群。 集群中至少包含1个规格为8vCPUs、16GB内存或者2个规格为4vCPUs、8GB内存的ECS节点,并且绑定弹性公网IP。 集群所在VPC为1创建的VPC。 CCE集群不能被其他环境绑定。 创建不开启安全认证的2.4.0及以上版本的ServiceComb引擎专享版,请参考创建微服务引擎。 如果ServiceComb引擎所在VPC与1创建的VPC不一致,需正确配置VPC连通。 创建微服务应用网关,请参考创建应用网关。 如果微服务应用网关与环境所在VPC不一致,需正确配置VPC连通。 本例基于ServiceStage绑定GitHub源码仓库,实现源码构建、归档、应用创建,需要先到GitHub官网注册账号。
  • 响应参数 状态码为200时 表2 响应参数 参数 参数类型 描述 count Integer 应用数量。 applications Array of objects 应用列表信息,详情请参见表3。 表3 application字段数据结构说明 参数 参数类型 描述 id String 应用ID。 应用的唯一标识,格式为UUID。 name String 应用名称。 session_hold_time Integer 会话保持时间,单位分钟(min)。 若该值为-1,表示会话一直保持。 type String 应用类型。 应用类型枚举值: vr:表示VR应用。 3d:表示3D应用。 launch_path String 应用启动路径。 create_time String 应用创建时间。 时间格式例如:2020-05-20T03:30:52Z status String 应用状态。 应用状态枚举值: active:正常 creating:创建中 create_failed:创建失败 updating:修改中 update_failed:修改失败 deleting:删除中 delete_failed:删除失败 adding:添加中(添加云服务器) add_failed:添加失败 repairing:修复中 repair_failed:修复失败 description String 应用描述。 icon_name String 应用的图标名称。 cluster_id String 集群ID 。 应用所属集群的唯一标识,格式为UUID。 policy_type String 设备连接策略规则(黑、白名单)。 black_list:表示黑名单。 white_list:表示白名单。 package_list Array of objects 应用的安装包信息列表,详情请参见表4。 表4 package字段数据结构说明 参数 参数类型 描述 bucket_name String 安装包所在OBS桶名称。 示例:cloudvr package_name String 安装包名称。 示例:cvrapp.zip package_size String 安装包大小。 示例:100MB bucket_region String OBS桶所在区域。 示例:cn-north-4 状态码为400时 表5 响应参数 参数 参数类型 描述 error_code String 返回的错误码,如CVR.0001。 error_msg String 错误的英文描述。
  • 响应示例 状态码为200时 { "count": 1, "applications": [ { "id": "fe8e97a0-4350-11eb-8bb9-fa1640a9b002", "name": "appname", "type": "vr", "session_hold_time": 3, "launch_path": "", "create_time": "2020-12-21T05:54:31Z", "status": "active", "description": "1234", "icon_name": "image_default.png", "policy_type": "black_list", "cluster_id": "50adbf76-412a-11eb-821b-fa1640a9b002", "package_list": [ { "bucket_name": "cvr1", "package_name": "1.zip", "package_size": "324.83MB", "bucket_region": "cn-north-4" }, { "bucket_name": "cvr2", "package_name": "2.zip", "package_size": "324.83MB", "bucket_region": "cn-east-3" } ] } ] 状态码为400时 { "error_code" : "string", "error_msg" : "string" }
  • 请求参数 表1 查询参数 参数 是否必选 参数类型 描述 name 否 String 根据应用名称进行模糊搜索。 id 否 String 根据应用ID进行精确搜索。 limit 否 Integer 每页显示的条目数量。 默认为1000,最大值为1000。 offset 否 Integer 偏移量,表示从此偏移量开始查询。 默认为0,最大值为1000。 status 否 String 应用的状态。 status的取值范围如下: active:正常 creating:创建中 create_failed:创建失败 updating:修改中 update_failed:修改失败 deleting:删除中 delete_failed:删除失败 adding:添加中(添加云服务器) add_failed:添加失败 repairing:修复中 repair_failed:修复失败 说明: 使用取值范围以外的status字段进行查询,将返回错误码。