贝博恩创新科技网

Apache Stratos教程从哪开始学?

Apache Stratos 完整教程

目录

  1. 什么是 Apache Stratos?
  2. 核心概念与架构
  3. 为什么选择 Apache Stratos?
  4. 环境准备
  5. 安装与部署 Stratos
  6. 核心功能实践
    • 1 创建第一个 Cartridge (应用)
    • 2 部署应用
    • 3 绑定公有 IP
    • 4 自动伸缩
    • 5 多租户
  7. 常见问题与解决方案
  8. 学习资源与社区

什么是 Apache Stratos?

Apache Stratos 是一个开源的 Platform as a Service (PaaS) 框架,它旨在简化云应用程序的部署、管理和扩展,您可以将其想象成一个“操作系统”或“中间件”,它运行在底层基础设施(如 IaaS)之上,为开发者提供了一个标准化的环境来运行他们的应用。

Apache Stratos教程从哪开始学?-图1
(图片来源网络,侵删)

核心目标:

  • 简化运维: 开发者无需关心服务器配置、网络、负载均衡等底层细节。
  • 提高效率: 实现应用的快速部署、伸缩和生命周期管理。
  • 多租户支持: 在同一个平台上安全地隔离和管理不同用户(租户)的应用。
  • 异构云支持: 能够管理部署在不同云环境(如 AWS, Azure, OpenStack)中的应用。

重要提示: Apache Stratos 项目已于 2025 年 11 月 毕业,并进入 Apache 软件基金会 的存档项目 状态,这意味着它不再进行积极的开发和维护,尽管如此,它仍然是学习和理解 PaaS 架构、多租户、自动伸缩等核心概念的绝佳案例,许多商业 PaaS 产品(如 WSO2 Stratosphere,一个商业产品)的理念都源于此。


核心概念与架构

理解 Stratos 的关键在于掌握其核心组件:

1 Cartridge (墨盒)

这是 Stratos 中最核心的概念,一个 Cartridge 代表一个可部署的应用或服务。

Apache Stratos教程从哪开始学?-图2
(图片来源网络,侵删)
  • 类型:
    • Web Cartridge: Tomcat, Nginx, PHP,用于托管 Web 应用。
    • Service Cartridge: MySQL, MongoDB, Cassandra,作为数据库或缓存服务。
  • 模板: 每个 Cartridge 都定义了一个模板,描述了如何启动、配置和管理该类型的应用实例。

2 Cartridge Instance (墨盒实例)

一个 Cartridge 的具体运行实例,您可以启动 3 个 Tomcat Cartridge Instances 来构成一个集群。

3 Stratos Component (Stratos 组件)

Stratos 平台自身由多个独立的、分布式的组件构成,每个组件负责特定的功能。

  • Cloud Controller: 核心控制器,负责接收来自 API 或管理员的请求,并协调整个平台的操作。
  • Cartridge Agent: 部署在每个服务器实例上的轻量级代理,负责与 Cloud Controller 通信,执行启动、停止、状态检查等具体任务。
  • Service Bus: (通常使用 WSO2ESB 或 Apache Synapse) 负责组件间的消息通信。
  • Identity Server: 负责用户认证、授权和租户管理。
  • Load Balancer: 负责将外部流量分发到后端的 Cartridge Instances。
  • Iaas Controller: 负责与底层 IaaS (如 OpenStack, AWS) 交互,管理虚拟机的生命周期。

4 Tenant (租户)

使用 Stratos 平台的组织或个人,每个租户拥有自己隔离的资源空间。

5 统一网关

所有外部流量的入口点,它会根据请求的域名、路径等信息,将流量智能地路由到后端正确的 Cartridge Instance 或负载均衡器。

6 架构图

+-----------------+      +-----------------+      +-----------------+
|   End User/App  | <--> |   Stratos UI    |      |   Stratos API   |
|                 |      | (管理界面)      |      | (RESTful API)   |
+-----------------+      +-----------------+      +--------+--------+
                                                             |
                                                             v
+-----------------------------------------------------------+------------------+
|                      Stratos Core (PaaS Controller)                            |
|  +----------------+   +----------------+   +----------------+   +-------------+ |
|  | Cloud Controller|<->| Service Bus    |<->| Identity Server|<->| Load Balancer| |
|  |                |   |                |   |                |   |             | |
|  +----------------+   +----------------+   +----------------+   +------+------+   |
|         ^                   ^                   ^                      |        |
|         |                   |                   |                      |        |
|  +----------------+   +----------------+   +----------------+          |        |
|  | Iaas Controller|   | Cartridge Agent|   |   ...其他组件   |          |        |
|  | (管理VM/网络)   |   | (在VM中运行)    |   |                |          |        |
|  +----------------+   +----------------+   +----------------+          |        |
|         |                   |                                              |        |
|         v                   v                                              |        |
|  +--------------------------------------------------+                      |        |
|  |      Underlying Infrastructure (IaaS)             |                      |        |
|  |  (e.g., OpenStack, AWS, vSphere, Physical Servers) |                      |        |
|  +--------------------------------------------------+                      |        |
+-----------------------------------------------------------------------------+

为什么选择 Apache Stratos?

尽管项目已归档,但其设计思想依然有价值:

  • 成熟的架构: 完整地实现了 PaaS 的所有核心功能。
  • 强大的多租户能力: 细粒度的资源隔离,适合企业级应用。
  • 自动化与编排: 自动部署、伸缩、故障恢复,极大减轻运维负担。
  • API 驱动: 提供完整的 REST API,方便与 CI/CD 工具链集成,实现 DevOps。
  • 可扩展性: 模块化设计,易于添加新的 Cartridge 类型或与新的 IaaS 集成。

环境准备

Stratos 的部署相对复杂,通常需要一个至少 4vCPU, 8GB RAM 的虚拟机来运行其所有组件。

1 软件要求

  • 操作系统: CentOS 7 / RHEL 7 (推荐)
  • Java: JDK 1.8
  • Maven: 3.x
  • Git
  • 防火墙: 需要开放多个端口,详见官方文档。
  • 底层基础设施: 准备一个 OpenStack 或其他 IaaS 环境,用于创建 Cartridge 实例,如果没有,可以使用 Stratos 自带的 MinikubeDocker 模式进行快速体验(功能有限)。

2 下载源码

# 克隆 Stratos 仓库 (建议使用最后一个稳定版本,如 4.1.0)
git clone https://github.com/apache/stratos.git
cd stratos
# 切换到最新的稳定标签
git checkout 4.1.0

安装与部署 Stratos

Stratos 的构建和部署过程通过 Maven 脚本完成。

1 构建项目

在 Stratos 根目录下执行:

mvn clean install -DskipTests

这个过程会下载所有依赖项,编译源码,并打包成可部署的产品,耗时较长。

2 运行分布脚本

构建完成后,使用以下脚本启动所有 Stratos 组件:

./distribution/server/scripts/stratos-server.sh

首次运行时,它会自动下载并解压必要的二进制文件,然后启动所有服务。

3 验证安装

  1. 检查日志: 查看以下日志文件,确认所有组件都已成功启动。
    • repository/logs/wso2carbon.log
    • repository/logs/stratos-agent.log
    • repository/logs/stratos-cloud-controller.log
    • repository/logs/stratos-load-balancer.log
  2. 访问管理控制台:
    • 打开浏览器,访问 https://<stratos-server-ip>:9443/carbon
    • 默认用户名/密码:admin/admin
  3. 访问租户控制台:
    • 访问 https://<stratos-server-ip>:9443/
    • 这是租户登录和使用的界面。

核心功能实践

1 创建第一个 Cartridge (应用)

  1. 登录 Stratos 管理控制台 (https://<stratos-server-ip>:9443/carbon)。
  2. 导航到 Cartridge -> Add Cartridge
  3. 选择一个类型,Tomcat Cartridge
  4. 上传 Cartridge 的 Packing 文件(通常在 modules/distribution/products/stratos-server/4.1.0/packaging/cartridges/ 目录下可以找到,如 wso2carbon.tomcar.cartridge.packing)。
  5. 填写其他必要信息,如名称、描述、类型(Web/Service)等。
  6. 点击 Add,系统会解析该 Cartridge 并使其在平台中可用。

2 部署应用

  1. 登录租户控制台 (https://<stratos-server-ip>:9443/)。
  2. 点击 Add Application
  3. 输入应用名称,点击 Next
  4. Add Cartridge 页面,选择刚刚创建的 Tomcat Cartridge。
  5. 选择 Single InstanceCluster,然后点击 Add
  6. Stratos 会自动向 IaaS 请求创建一个虚拟机,并在该虚拟机上部署和启动 Tomcat 实例,这个过程可能需要几分钟。
  7. 部署完成后,你可以在 Applications 页面看到你的应用,并获取其 URL

3 绑定公有 IP

默认情况下,Cartridge 实例可能只有私有 IP,要让外部用户访问,需要绑定一个公网 IP。

  1. 在租户控制台的 Applications 页面,找到你的应用。
  2. 点击应用名称,进入详情页。
  3. Network Configuration 部分,点击 Add Public IP
  4. 从你的 IaaS (如 OpenStack) 的网络中分配一个浮动 IP 给这个实例。
  5. 你就可以通过这个公网 IP 访问你的 Tomcat 应用了。

4 自动伸缩

Stratos 可以根据负载自动增加或减少 Cartridge 实例数量。

  1. 在应用详情页,导航到 Auto Scaling 选项卡。
  2. 点击 Add Policy
  3. 定义伸缩策略:
    • 触发条件: "CPU 使用率持续 5 分钟超过 80%"。
    • 执行动作: "增加 2 个实例"。
    • 冷却时间: 防止在短时间内频繁伸缩。
  4. 保存策略,当满足条件时,Stratos 会自动执行伸缩操作。

5 多租户

Stratos 的多租户是内置的。

  1. 注册新租户: 在租户控制台的登录页面,点击 Sign Up,填写信息即可注册一个新的租户。
  2. 登录: 使用新租户的凭据登录,你会发现这是一个完全独立的空间,你只能看到和管理自己部署的应用,无法看到其他租户的资源,这种隔离是由底层的 Identity Server 和资源分配策略保证的。

常见问题与解决方案

  • Q: 启动 stratos-server.sh 时,某些组件启动失败怎么办?

    • A: 首先检查 repository/logs/ 目录下的对应日志文件(如 wso2carbon.log),查找错误信息,常见原因包括端口被占用、内存不足、数据库连接失败等。
  • Q: 为什么我看不到 Cartridge 列表?

    • A: 确保你已经以管理员身份登录管理控制台,并且已经成功添加了你需要的 Cartridge,租户控制台只能使用管理员已添加的 Cartridge。
  • Q: 部署应用后,访问 URL 超时或无法连接?

    • A:
      1. 检查防火墙是否放行了 Stratos 和 Cartridge 实例所需的端口。
      2. 检查 Cartridge 实例是否成功启动,可以在 IaaS 控制台(如 OpenStack Dashboard)查看 VM 的状态和日志。
      3. 检查 Load Balancer 的配置是否正确,是否已将流量路由到后端实例。
  • Q: Stratos 项目已经归档了,我还能用它吗?

    • A: 可以,但需要意识到它不再有官方更新和安全补丁,它非常适合用于学习和实验 PaaS 概念,在生产环境中使用需要谨慎,并自行承担维护风险。

学习资源与社区

由于项目已归档,官方文档和社区资源可能不再更新,但依然非常有价值。

希望这份教程能帮助您顺利入门 Apache Stratos!

分享:
扫描分享到社交APP
上一篇
下一篇