文档首页 > > 最佳实践> 应用编排+容器技术实现快速部署Magento电商网站

应用编排+容器技术实现快速部署Magento电商网站

分享
更新时间: 2019/06/19 09:18

通过Magento电商应用模板,您可以快速部署一个Magento电子商务网站容器应用。Magento电子商务网站包含一个前端组件,和一个mysql数据库。本章节将指导您修改“Magento电商应用”公共模板,基于应用编排和容器技术实现快速部署Magento电商网站,修改后的模板支持在创建堆栈时对容器使用的CPU和内存进行申请与限制。

在此演练中,您将完成以下步骤:

  1. 了解基本概念:在操作之前,建议您先了解本次演练用到的一些基本概念。
  2. 修改公共模板:修改“Magento电商应用”公共模板,增加magento前台应用的CPU和内存的申请与限制参数。
  3. 创建Magento电商网站应用堆栈:通过修改后的模板创建容器应用。最终将创建的应用部署到集群中。
  4. 清除资源:为了防止您为不需要的服务付费,建议您删除堆栈,清理资源。

前提条件

请确保已有华为云帐号,且在部署容器前,需确保至少已包含一个可用容器集群和一个2C4G的节点。

您可登录CCE控制台,单击“资源管理 > 节点管理”,查看到节点状态为“可用”,弹性IP已绑定。获取该弹性IP值。

说明:

容器集群和节点可使用编排部署容器集群进行创建,详情请参见使用AOS设计器快速部署容器集群

图1 查看是否存在可用节点

了解基本概念

修改模板之前,请了解一下Magento电商应用模板的基本构成。

# 应用模板所基于的类型定义版本
tosca_definitions_version: huaweicloud_tosca_version_1_0
# 输入参数定义
inputs:
  app-name:
    default: magento
    description: 应用名称
    label: magento
  magento-EIP:
    description: magento服务对外暴露访问地址
    label: magento
  magento-EPORT:
    default: 32080
    description: magento服务对外监听端口
    label: magento
    type: integer
    ... ...
# 映射表定义
mappings:
  region_map:  #定义不同region镜像和规格的映射
    cn-east-2:
      magento-image: '192.168.12.22:20202/aos-samples/magento:1.9.1.0'
      mysql-image: '192.168.12.22:20202/aos-samples/mysql:latest'
    ... ...
#设计器用来存放图标的位置信息等内容
metadata:
  Designer:
    08c3c168-5b00-4a70-b9f2-b74f3e276d9d:
      size:
        width: 60
        height: 60
      position:
        x: 240
        y: 190
      z: 1
    ... ...
#应用拓扑定义
node_templates:
  magento:  #元素名称
    metadata:
      Designer:
        id: e66e332a-3466-4638-9896-f7d2e93a1ae3
    properties:  #元素属性
      k8sManifest:
        apiVersion: apps/v1
        kind: Deployment
        metadata:
          labels:
            app:
              get_input: app-name
          name:
            get_input: app-name
        ... ...
    requirements:  #元素依赖
      - dependency:
          node: mysql-service
      - dependency:
          node: mysql-conf
      - dependency:
          node: magento-config
    type: HuaweiCloud.CCE.Deployment  #元素类型
    ... ...
# 输出参数定义
outputs:
  ingress-admin_password:
    description: Password of super user.
    value: magentorocks1
  magento-addr:
    description: Access URL for magento service.
    value:
      concat:
        - 'http://'
        - get_input: magento-EIP
        - ':'
        - get_input: magento-EPORT
  magento-admin_username:
    description: Super user name.
    value: admin

模板的各属性解释如下:

  • inputs

    可选项,用于定义基于模板创建堆栈时的可变部分。一个模板最多支持定义60个inputs输入参数。每个input输入参数,均需定义唯一的名称,以便在使用时通过get_input内置函数获取到具体的值。若重复定义了input,后面定义的将会覆盖之前定义的。

    作用范围:node_templates与outputs,即输入参数可以在node_templates的属性及outputs的value中进行传参。

    inputs格式

     <输入参数名称>:
        type: <类型>
        default: <默认值>
        constraints:<约束>
        description:<描述>
        label:<标签>
        invisible: <是否回显>
  • mappings

    可选项,用于定义映射表。在基于模板创建堆栈时,可以根据输入的变量信息,通过get_in_map方法提取特定变量对应的内容。一个模板最多支持定义10个映射。

    mappings格式:

     <映射名称>:
        <映射对象名称>:
           <映射对象属性名称>: <映射对象属性值>
           <映射对象属性名称>: <映射对象属性值>
           ...
        ...
     ...
  • node_templates

    必填项,用于定义该模板中编排的元素对象集合,其中所有对象均为元素。一个元素可以是一个应用、一个云服务资源。

    node_templates格式

    <元素名称>:
      type: <元素类型>
      porperties: <元素属性>
      requirements: <元素依赖>
      condition: <条件名称>
    • 元素名称:命名必须唯一,由小写字母、数字和中划线“-”组成,长度为[1, 48]。
    • 元素类型:用于指定编排对象的具体类型,来自元素类型列表。
    • 元素属性:属性信息基于元素类型展开,每种元素类型会有其相应的属性。属性的变量可以来自inputs获取,也可以通过get_attribute得到运行时的信息。当一个元素没有需要特别声明的属性时,可以不定义properties。
    • 元素依赖:可选字段,若元素与其他元素之间没有关系,则不需要定义。元素的依赖关系来自所定义的元素类型。针对具体的类型可以定义相关的依赖。
    • 条件名称:可选字段,用于控制node_templates中的元素是否创建。具体方法详见conditions说明。
  • outputs

    可选项,用于定义模板生成堆栈运行时的输出参数。每个输出参数都需要定义唯一的名称。

    outputs格式:

    <输出参数名称>:
      description: <描述>
      value: <值>
  • tosca_definitions_version

    必填项,用于标识模板的版本信息

关于模板的更多信息请参阅模板参考

修改公共模板

为了节约容器运行的资源及防止容器超载,可对容器使用的CPU和内存进行申请与限制。本节通过编排公共模板,增加magento前台应用和mysql数据库应用的CPU和内存的申请与限制参数。

  • 申请:表示容器运行所需最少资源。
  • 限制:若担心容器超载,导致系统故障,建议设置容器配额的最高限制,确保容器资源不会超额。
  1. 登录AOS控制台,选择左侧导航栏的“模板市场”,单击“公共模板”
  2. 在“行业场景模板”下,单击Magento电商应用,查看模板详情。

    图2 选择公共模板

    在模板详情中,展示了该模板的概述,以及模板图示。magento应用组中包含了一个magento前台应用和mysql数据库应用。且magento依赖于mysql应用,需要将数据存储到mysql中。

  3. 单击“复制模板”,复制模板文件到“我的模板”。

    图3 复制模板

  4. 修改“模板名称”,本例为“my-business-app”,单击“确定”,系统跳转到“my-business-app”模板详情页面。

    图4 修改模板名称

  5. 单击操作列的“设计器打开”,根据业务需要编排模板信息。以下以增加magento前台应用的CPU和内存的申请与限制参数为例编排模板。

    图5 设计器打开模板

  6. 单击画布中magento Deployment元素,在“组成部分”页签,如图所示位置增加以下参数。

    图6 magento元素properties
     name: magento-container
     resources:
       requests:
         cpu:
           get_input: requestMagentoCPU
         memory:
           get_input: requestMagentoMemory
       limits:
         cpu:
           get_input: limitMagentoCPU
         memory:
           get_input: limitMagentoMemory
     ports:
       - containerPort: 80
         protocol: TCP

    各属性解释如下:

    • resources:定义容器资源规格。
    • requests:给容器分配的资源配额。
    • limits:容器能够使用的资源上限。
    • cpu:容器使用的CPU需求。
    • memory:容器使用的Memory需求。
    • get_input:用于获取模板文件中inputs区域中定义的输入参数的值。

  7. 单击“生成/更新inputs”,页面左下角“操作日志”中返回“生成/更新inputs成功”表示生成inputs参数成功。
  8. 单击画布空白部分,在“输入”页签添加输入参数的描述和标签。

    图7 magento元素inputs

    inputs:
      app-name:
        default: magento
        description: 应用名称
        label: magento
      mysql-service-name:
        default: magento-mysql
        description: mysql数据库服务的名称
        label: mysql
      requestMagentoCPU:
        description: MagentoCPU申请
        label: magento  
      requestMagentoMemory:
        description: Magento内存申请
        label: magento
      limitMagentoCPU:
        description: MagentoCPU限制
        label: magento
      limitMagentoMemory:
        description: Magento内存限制
        label: magento
      magento-EIP:
        description: magento服务对外暴露访问地址
        label: magento

    各属性解释如下:

    • inputs:定义基于模板创建堆栈时的可变部分。
    • requestMagentoCPU:定义输入参数Magento应用的CPU申请。
    • requestMagentoMemory:定义输入参数Magento应用的内存申请。
    • limitMagentoCPU:定义输入参数Magento应用的CPU限制。
    • limitMagentoMemory:定义输入参数Magento应用的内存限制。
    • description:参数描述信息。
    • label:参数的标签,此处定义的标签可在创建堆栈时进行分类展示。

  9. 单击校验模板是否正确,页面左下角“操作日志”中返回“校验模板成功”,表示模板正确。
  10. 单击,保存模板。

创建Magento电商网站应用堆栈

修改后的模板支持在创建堆栈时设置资源限制,可以分别为magento前台应用和mysql数据库应用的CPU和内存进行申请与限制。

  • CPU配额:
    表1 CPU配额说明

    参数

    说明

    CPU申请

    容器使用的最小CPU需求,作为容器调度时资源分配的判断依赖。但申请不限制容器的最大可使用CPU。

    CPU限制

    容器能使用的CPU最大值。

    建议配制方法:节点的实际可用分配CPU量>=当前实例所有容器CPU限制值之和>=当前实例所有容器CPU申请值之和,节点的实际可用分配CPU量请在CCE控制台资源管理 > 节点管理中对应节点的“可用CPU(Core)”列下查看。

  • 内存配额:
    表2 内存配额说明

    参数

    说明

    内存申请

    容器使用的最小内存需求,作为容器调度时资源分配的判断依赖。

    内存限制

    容器能使用的内存最大值。当内存使用率超出设置的内存限制值时,该实例可能会被重启进而影响应用的正常使用。

    建议配制方法:节点的实际可用分配内存量>=当前实例所有容器内存限制值之和>=当前实例所有容器内存申请值之和,节点的实际可用分配内存量请在CCE控制台资源管理 > 节点管理中对应节点的“可用内存(GB)”列下查看。

  1. 在左侧导航栏中,选择“我的模板”。在模板列表中可查看到保存成功的模板my-business-app

    单击my-business-app模板后的“部署堆栈”

  2. 输入堆栈信息。

    • 堆栈名称:自定义堆栈名称,例如my-magento
    • 描述:可不填写。
    • 选择集群:选择已创建的集群。
    • 命名空间:保持默认default。
    • 在magento页签中配置magento应用输入参数,如图8。下图红框中为修改公共模板节中新增参数。
      图8 magento应用输入参数
      表3 配置magento应用输入参数

      参数

      说明

      参数值

      limitMagentoCPU

      通过修改公共模板增加的输入参数,Magento应用的CPU限制。

      根据应用实际情况填写,数值后无需加上单位,默认单位为G,例如:1。

      limitMagentoMemory

      通过修改公共模板增加的输入参数,Magento应用的内存限制。

      根据应用实际情况填写,数值后加上单位M,例如:2048M。

      magento-EIP

      节点的弹性IP

      请从前提条件中获取弹性IP数值,例如10.0.0.0。

      magento-EPORT

      节点端口

      请输入30000-32767之间的整数,请保证集群内唯一。可保持默认32080。

      requestMagentoCPU

      通过修改公共模板增加的输入参数,Magento应用的CPU申请。

      根据应用实际情况填写,数值后无需加上单位,默认单位为G,例如:0.5。

      requestMagentoMemory

      通过修改公共模板增加的输入参数,Magento应用的内存申请。

      根据应用实际情况填写,数值后加上单位M,例如:1024M。

  3. 单击“下一步”,查看堆栈信息,确认无误后,单击“创建堆栈”

    可查看到当前堆栈为“创建中”,预计需要5分钟创建成功。

  4. 待堆栈创建成功,单击“堆栈详情”,可查看到堆栈状态为“正常”,“堆栈元素”中已存在六个云服务。

    图9 堆栈创建成功

  5. “输出参数”页签中,可查看到三个输出参数。

    图10 输出参数

  6. 在浏览器中输入输出参数中获取的“magento-addr”,例如http://10.0.0.0:32080。可访问magento应用。

    图11 访问magento应用

清除资源

为了防止您为不需要的服务付费,建议您删除堆栈,清理资源。

  1. 登录AOS控制台。
  2. 在左侧导航栏中,单击“我的堆栈”。
  3. 勾选已创建成功的堆栈,单击“删除堆栈”,根据界面提示删除堆栈。
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区