MegaEase Cloud: 2023 年 03 月重大更新

前情提要

2023 年 2 月,我们发布了 MegaEase Cloud 平台。在该平台上,用户只需将自己的主机添加进来,就可以轻松部署各种开源基础软件服务,如 MySQL、Redis、MongoDB、Kafka、ElasticSearch、Docker、Kubernetes 等。同时,您还可以方便地对这些服务进行运维,例如:监控、告警、日志、配置、扩容、缩容、克隆……等。此外,我们还支持 Docker Compose 和 Kubernetes 的应用部署。通过使用我们支持的 Zipkin 协议 SDK 或 Service Mesh,您也可以立即获得 APM 功能。

今天,我们对 MegaEase Cloud 进行了如下一系列的重大更新:

  • 基础软件更新升级
    • 新增 NginxMinIO 服务
    • 提供 Kubernetes 离线部署能力
  • 集成 Cloudflare
    • Zero Trust + MinIO 的 CDN 能力
    • Easegress 与 CDN 的 灰度发布Tracing 能力
  • 监控指标梳理和优化
    • 对标 DataDogPrometheus
  • 持续集成能力
    • 提供 Docker 镜像仓库服务
    • 通过 Github Action 自动化部署应用

目前整个平台还在公测期间,所以这些新增的功能都可以免费使用!

一、基础软件更新

1.1 新增 Services

  • Nginx 服务Nginx 是一个轻量级的 HTTP 反向代理服务,广泛用于后端 HTTP 服务的反向代理和负载均衡。通过 MegaEase Cloud 平台,您可以在多台主机上同时部署 Nginx 服务。我们会收集部署成功的 Nginx 服务的监控指标和访问日志,并提供扩容、缩容等功能。

    此外,MegaEase Cloud 平台还可以对多台机器上的 Nginx 服务配置进行统一管理。我们对全局配置和本机配置进行了区分,所以您可以灵活配置不同主机上的 Nginx 服务。

  • MinIO 服务MinIO是一个开源的、与 AWS S3 兼容的高性能分布式对象存储服务。通过 MegaEase Cloud 平台,您可以轻松容易地部署一个单实例或是分布式的 MinIO 服务。分布式的 MinIO 需要您的机器按其规范准备并挂载相应的磁盘,一旦部署完成,日志,监控,扩缩容,Web 控制台等功能一应俱全。

    此外,我们还为 MinIO 服务打通了 CDN 服务,参看后面的 Cloudflare 集成。

现在,整个 MegaEase Cloud 开源基础软件的版图如下(注:他们全都是主机部署,不是容器化部署)

这些个基础软件基本都支持 ubuntu/centos 的主流操作系统,以及x86_64, arm64平台。

1.2 Kubernetes 离线部署能力

在上一个版本中,我们部署 Kubernetes 时直接使用了其官方提供的 Ansible 脚本 KubeSpray ,然而,在中国区部署时,网络原因会导致部署失败。为了解决这个问题,我们开发了离线部署 Kubernetes 的功能。

您只需在部署 Kubernetes 时启用此选项,并选择一台已经安装了 Docker 的主机作为 Kubernetes 的系统镜像源即可。这样,即使我们无法访问海外互联网,也可以顺利部署 Kubernetes 集群了。

二、Cloudflare 集成

2.1 MinIO 集成

我们利用 Cloudflare 的 Zero Trust 机制,在 MinIO 的机器上创建一个 Cloudflare Tunnel,然后通过我们的一个域名 <租户名+实例 ID.megaease.net> 将 MinIO 的文件对象代理到 Cloudflare 的 CDN 上。

通过使用这种开源和免费的 CDN 方案来取代昂贵的 AWS S3 + Cloudfront 方案,中小企业可以在云服务基础设施上节省大量费用。

2.2 Easegress 集成

我们通过利用 Cloudflare 在 HTTP 头部添加用户信息(如:地理位置),使得 Easegress 能够实现更真实的灰度发布。

同时,我们为 Easegress 开发了一个 WASM 模块和一个 Rust 编写的 WASM 库,前者用于解析 User-Agent 以获取用户的设备类型和操作系统;后者参考了 uap-core 和 user-agent-parser 项目,可以同时用于 Easegress 和 Cloudflare。以下是相关文档:Canary Release Cookbook,  UA解析规则。欢迎试用!

此外,Easegress 的 Tracing 功能与 Cloudflare 进行了深度集成。如果您正在使用 Cloudflare,无需更改任何配置,就可以获取边缘网络信息,从而更快速地定位问题。有关详细信息,请参考这里:Tracing: Usage with Cloudflare

三、监控指标梳理优化

MegaEase Cloud 的监控系统主要是通过 Telegraf  收集指标和日志,指标和日志都存储在 ElasticSearch 中,并通过 Prometheus 实现报警。

为了帮助您理解各种指标的含义并快速定位问题,我们整理了一份文档,全面对比了 MegaEase Cloud、Datadog、Telegraf 和 Prometheus 在指标方面的差异,您可以随时点击 《 MegaEase Cloud 操作手册》查阅此文档。

经过对比梳理,我们得出下结论:

  • 指标覆盖量:各个平台相当。Datadog 对旧版本中间件指标的支持较好,而 Prometheus、Telegraf 等开源工具对新版本中间件指标的支持更好。

  • 中间件类型支持:Prometheus、Telegraf 等开源工具相较于 Datadog 支持更多的中间件类型。

  • 预定义图表:Datadog 对旧版本中间件的支持较好,Prometheus 对新版本中间件的支持更好,MegaEase Cloud 倾向于支持最新版本。

  • 指标查询: Prometheus 和 Datadog 都支持自定义查询语句,具有较高的灵活性。而 MegaEase Cloud 已经根据指标类型预定义了查询方式,较为固定。

四、持续集成

您可以通过以下步骤实现 CI/CD 能力:

1)启用镜像仓库。我们新增了一个 Docker Registry 服务,您可以点击导航栏上的"设置"图标,在"镜像仓库"中启用该服务。

2)推送镜像。您可以通过 Github Action 或自定义自动化构建程序(如 Jenkins)向这个仓库推送镜像。

name: MegaEase Cloud CI Workflow
on:
 push:
   branches:
      - main
jobs:
 megaease_cloud_ci_job:
   runs-on: ubuntu-latest
   steps:
      ... ...
      ... ...
      - name: Login to the registry
       uses: docker/login-action@v2
       with:
         registry: ${{ vars.megaease_registry_url }}
         username: ${{ vars.megaease_registry_username }}
         password: ${{ secrets.megaease_registry_password }}

     - name: Build and push image
       uses: docker/build-push-action@v3
       with:
         context: .
         file: ${{ vars.megaease_ci_dockerfile_path}}
         push: true
         tags: ${{ steps.meta.outputs.tags }}

3)持续集成。在创建使用该镜像的应用时,选择启用 CI/CD 选项,系统会自动检测镜像是否已推送到仓库。如果镜像已推送,则立即开始部署;如果尚未推送,则等待镜像上传。每当有新镜像上传时,系统将自动触发部署。

五、后续计划

如大家所见,MegaEase Cloud 的主要目标并非跨云,而是降低云计算的技术门槛和成本。我们通过一系列工具使用户能够轻松地使用开源软件自建基础软件架构和配套设施,从而大幅度降低成本。

目前,我们可以通过以下方式帮您大幅度降低费用:

1)使用标准且无定制的开源基础软件。

2)免费的 CDN 流量接入和内容分发。

3)提供应用 DevOps 和服务治理能力。

并且,在降低成本的同时,您还获得了相应的自主技术能力。有了这层 PaaS,我们可以与现有云厂商的底层 IDC 供应商合作,绕过云厂商,避免中间商赚取差价。

因此,接下来的计划是集成 IDC 的计算资源。在价格方面,我们将重点关注 GPU 资源。我们计划在 MegaEase Cloud 上推出 GPU 计算资源,并确保价格至少比现有公有云提供商便宜一半以上

敬请期待!

六、联系我们

如果您有什么样的想法或是想跟我们聊聊,欢迎通过下面的方式与我们联系!