aliyun docker_在阿里云(Aliyun)上自动进行Docker应用程序部署

aliyun docker

DCHQ是一家总部位于旧金山的初创公司,提供混合云和企业应用程序自动化功能,该公司宣布其对阿里巴巴云产品( Aliyun )的支持。

DCHQ现在允许用户在阿里云上自动进行云服务(包括计算,网络和存储)的配置和自动扩展。 一旦配置了基础架构,DCHQ将专门从事应用程序部署自动化–提供捕获非云本机应用程序(例如Oracle,SAP等)以及微服务体系结构的复杂依赖性所需的服务发现和数据绑定框架。

在此博客中,我们将介绍通过DCHQ调配的Aliyun云实例上多层Docker Java应用程序的部署自动化。

什么是DCHQ?

DCHQ跨任何云或容器基础架构无缝部署和管理现有企业应用程序云原生应用程序 -包括VMware vSphereOpenStackAliyun,AWSMicrosoft Azure等。

它提供了企业应用程序的“即时”容器化,包括Oracle数据库集群,SAP等。 这样,DCHQ可以将非云原生应用程序转换为完全可移植的应用程序,这些应用程序可以利用云扩展,存储冗余以及最重要的是部署敏捷性的优势。

DCHQ支持高级多层应用程序,提供数据绑定和注入功能,以捕获跨应用程序组件的复杂依赖关系。 它还提供了一个无限灵活的插件框架,可以在20多个应用程序生命周期状态下调用该框架,以提供服务发现和自动应用程序更新。

该平台是为企业量身定制的,可以通过基于角色的访问控制,基于资源利用率的配额策略,将应用程序管理扩展到其他业务用户的权限,可以轻松管理的批准策略以及用于启用资源的成本配置文件来明确关注点帐单。

应用程序建模框架使用组件概要文件,存储概要文件,DBaaS概要文件和配置脚本概要文件来启用模块化应用程序蓝图。 部署应用程序后,用户可以访问监视,警报,连续交付,应用程序备份,扩展/扩展,浏览器内终端以访问容器,日志流和应用程序更新。

5977199_orig

DCHQ概述

485786_orig

DCHQ平台功能

8839509_orig

DCHQ工作流程

管理Docker基础架构中的挑战

随着Docker编排的所有进步,DevOps工程师和基础架构运营商仍然面临以下问题:

  • 如何自动配置支持Docker的基础架构?
  • 如何将跨不同云的服务器分组到映射到业务组,开发团队或应用程序项目的集群中?
  • 如何监视这些群集并深入了解不同组或用户的资源消耗?
  • 如何在群集中的服务器之间建立网络,以便多个主机之间的容器可以相互通信?
  • 如何定义自己的基于容量的放置策略,以便可以使用群集中的所有计算?
  • 如何自动扩展集群以满足开发人员对基于容器的新应用程序部署的需求?

DCHQ提供托管和内部部署版本,可解决所有这些挑战,并为基础架构运营商或DevOps工程师提供最先进的基础架构设置,自动扩展,群集和放置策略。

在开始之前,您将需要访问DCHQ:

首先,用户可以通过导航到Cloud Providers然后单击+按钮以选择Aliyun(Alibaba),为Aliyun注册Cloud Provider。 唯一必需的字段是:

  • 访问密钥
  • 密钥

可选字段允许您强制执行精细的访问控制,并将此提供程序与配额策略相关联。

  • 授权用户 -这些用户被允许使用此Cloud Provider进行基础架构配置。 有资格的用户无权管理或删除此云提供商,并且将无法查看任何凭据。
  • 标题为蓝图 -这些是可与该云提供商一起使用的Machine Compose模板。 例如,如果租户管理员希望限制用户在认证的操作系统上配置4GB计算机,则用户将无法使用该云提供商来配置任何其他计算机。
  • VM限制 -这是可与该云提供商一起使用的最大虚拟机数
  • 配额策略 -这些是用于对VM数量或VM成本设置配额的预定义策略。 可以选择多个配额策略来自定义每个用户或每个用户组的控件。

7177781_orig

可以从阿里云控制台的“ AccessKeys ”部分生成访问密钥和秘密密钥。

2233912_orig

跨混合云或本地开发机器的服务器可以与群集关联,这是基础架构的逻辑映射。 用户可以通过导航到“ 群集”页面,然后单击+按钮来创建群集。

集群具有高级选项,例如:

  • 租赁 –用户可以指定此群集中服务器上部署的应用程序何时到期,以便DCHQ可以自动销毁那些应用程序。
  • 放置策略 –用户可以从多种放置策略中进行选择,例如基于接近度的策略,轮询或默认策略,这是基于容量的放置策略,它将Docker工作负载放置在具有足够计算资源的主机上。
  • 网络 -用户可以选择Docker网络或Weave作为软件定义的网络,以促进跨多个主机的跨容器通信
  • 配额 –用户可以指示此群集是否遵守分配给用户和组的配额配置文件。 例如,在DCHQ.io中,将为所有用户分配8GB的内存配额。
  • 自动扩展策略 –用户可以定义自动扩展策略,以在群集计算资源用尽时自动添加服务器,以满足开发人员对基于容器的新应用程序部署的需求
  • 粒度访问控制 –租户管理员可以定义对群集的访问控制,以指示谁可以通过“ 授权用户”向其部署Docker应用程序。 例如,开发人员可以注册他/她的本地计算机并将其标记为私有。 另一方面,租户管理员可以与特定用户组或所有租户用户共享群集。 另外,集群所有者可以指定哪些应用程序模板可以通过“ 授权蓝图”部署到该集群。 如果群集将在上游环境中使用,则只能在其上部署特定的应用程序模板(或“蓝图”)。

7739388_orig

选项1 :注册已运行的Aliyun实例

用户可以注册一个已经运行的阿里云实例。 可以通过导航到“ 计算机” ,然后单击“ +”按钮来完成。 然后,用户可以选择“ VM /裸机 ”工作流程并填写必填字段。

  • 名称 -您要注册的服务器的名称。 不一定需要是实际的主机名。
  • IP地址 -这是您正在注册的服务器的IP地址。
  • 群集 -新服务器将属于的群集。 确保在注册服务器或配置新服务器之前先创建集群。

3864083_orig

用户单击“ 保存”后 ,将显示一个自动生成的脚本。 您可以在要注册为root用户的主机上运行此脚本。 该脚本检查是否已安装Docker。 如果没有,那么将安装Docker,DCHQ代理和Weave(可选)。

这是Docker联网脚本的外观:

curl -Ls <dchq.agent.script.url> | bash -s <DCHQ服务器密钥> <dchq.agent.connect.ip> <dchq.agent.connect.port> docker.local <新服务器IP>

如果您使用的是本地DCHQ,则可以通过导航到系统设置来更改默认参数。

2384158_orig

请注意,如果已在此群集上启用编织 ,则脚本将遵循此格式。

卷曲   < dchq.agent.script.url > | bash -s < DCHQ服务器密钥 > < dchq.agent.connect.ip > < dchq.agent.connect.port > weave.local <weave密码> <weave.ip>

其中<weave.ip>是Weave集群中第一台服务器的IP地址

选项2 :预配启用Docker的Aliyun实例

用户可以通过定义一个简单的基于YAML的计算机撰写模板来在新创建的群集上配置Aliyun实例,可以从自助服务库中请求该模板。

(可选)在创建Machine Compose模板之前,用户可以将SSH密码安全地存储在凭据存储中。 可以通过导航到Cloud Providers ,然后单击+按钮选择Credentials来完成 。 需要提供用户名密码 。 保存此凭证项目后,然后在保存的新项目上单击“ 编辑 ”以复制该凭证项目的新生成的ID

1688688_orig

用户可以通过导航至App&Machine ,然后单击+按钮选择Machine Compose来为Aliyun创建Machine Compose模板。

这是用于在us-west-1区域中请求具有4GB内存的Ubuntu实例的模板。

# Medium - Instance name prefix.
Medium:
  region: us-west-1
  instanceType: ecs.s2.large
  # Ubuntu 14.04 64bit
  image: ubuntu1404_64_40G_aliaegis_20160222.vhd
  # mandatory - port 22 should be accessible
  securityGroup: sg-u11e46tlb
  # SSH ROOT username
  username: root
  # SSH ROOT password
  password: "{{credentials | 2cx18086x3de2cc7x153df15y392xdyc}}"
  # Optionally attach additional disks
  volumes:
    - !volume
      size: 10
      deleteOnTerminate: true
    - !volume
      size: 15
      deleteOnTerminate: true
  # Optionally add tags
  tags:
    platform: dchq
    env: test
  # Optionally execute scripts post provision.
  #plugins:
  #  - !plugin
  #    id: sx6o3

  # VM count
  count: 1

1064054_orig

Machine Compose模板支持的参数总结如下:

  • 描述 :蓝图/模板的描述
  • instanceType :云提供者特定的值(例如ecs.s2.large)
  • 地区 :云提供商的特定价值(例如us-west-1)
  • 图像 :必填–完全限定的图像ID /名称(例如ubuntu1404_64_40G_aliaegis_20160222.vhd)
  • username :用于连接服务器的用户名
  • password :这可以引用存储在凭据存储中的密码或私钥。 将需要存储在“云提供商”页面中的凭据项目的ID。 这是可接受的格式: “ {{凭据| 2c91802a520x3622x01520xa6393098322}}”
  • securityGroup :特定于云提供商的值(例如sg-u11e46tlb)
  • :这允许您置备附加到新实例的其他磁盘。 卷中支持的参数是。
    • size :这是新磁盘的大小,以GB为单位
  • count :虚拟机总数,默认为1。

在安全组中打开所需的入站端口很重要。

除了这些受支持的参数之外,您还将注意到该模板引用了“插件”。 可以按以下方式调用插件:

  plugins:
- !plugin
id: <plugin-id>

可以通过导航到插件 ,然后单击+按钮来创建该插件。 插件是一个简单的脚本,可以在正在配置的服务器或Docker容器上运行。 服务器插件可用于多种配置要求:

  • 安装人偶模块,厨师食谱,Ansible Playbook等。
  • 从安全存储位置检索私有Docker注册表所需的CA证书。

Machine Compose模板具有其他高级选项。

  • 费用配置文件 -这些是您可以在策略 > 费用配置文件下创建的费用配置文件 。 您可以每小时/每周/每月定义每个资源的成本。 您可以将多个成本配置文件附加到单个模板,例如,实例类型,使用的EBS存储等的不同成本配置文件。
  • 授权用户 -这些用户被允许使用此模板来配置Aliyun实例。 有权使用的用户无权管理或删除此模板,只能使用它。

8043612_orig

保存Machine Compose模板后,用户可以从自助服务库中请求此计算机。 用户可以单击“ 自定义” ,然后选择用于配置Aliyun实例的Cloud ProviderCluster

1003684_orig

设置Aliyun实例后,用户可以监视关键统计信息,例如CPU,内存,磁盘利用率,提取的图像和正在运行的容器。 可以通过导航到“ 计算机” ,然后从“ 管理”下拉菜单中选择“ 监视”来完成此操作。

还可以访问预配置计算机的浏览器内终端。 可以通过导航到“ 计算机” ,然后从“管理”下拉菜单中选择“ 终端”来访问它。

2362326_orig

3550723_orig

现在您的集群已设置完毕,您现在可以在新创建的服务器上运行任何Docker应用程序。 可以通过导航到“ 库” ,然后在任何已发布的应用程序模板上单击“ 定制”来完成。 然后,您可以选择一个集群并单击运行

Docker Compose是一个YAML模板,用于定义可以在任何地方运行的任何启用Docker的Linux主机上运行的多层或多映像分布式应用程序。

登录到DCHQ(托管的DCHQ.io或本地版本)后,用户可以导航到App&Machine,然后单击+按钮以创建新的Docker Compose模板。

这是包含以下组件的示例模板:
Nginx-用于反向代理和负载平衡
Tomcat-运行Java应用程序的应用程序服务器 • Solr-用于应用程序中的全文本搜索 • MySQL-基础数据库

Nginx:
  image: nginx:latest
  publish_all: true
  mem_min: 50m
  host: host1
  plugins:
    - !plugin
      id: 0H1Nk
      restart: true
      lifecycle: on_create, post_scale_out:AppServer, post_scale_in:AppServer
      arguments:
        # Use container_private_ip if you're using Docker networking
        - servers=server {{AppServer | container_private_ip}}:8080;
        # Use container_hostname if you're using Weave networking
        #- servers=server {{AppServer | container_hostname}}:8080;
AppServer:
  image: tomcat:8.0.21-jre8
  mem_min: 600m
  host: host1
  cluster_size: 1
  environment:
    - database_driverClassName=com.mysql.jdbc.Driver
    - database_url=jdbc:mysql://{{MySQL|container_hostname}}:3306/{{MySQL|MYSQL_DATABASE}}
    - database_username={{MySQL|MYSQL_USER}}
    - database_password={{MySQL|MYSQL_ROOT_PASSWORD}}
    - solr_host={{Solr|container_private_ip}}
    - solr_port=8983
  plugins:
    - !plugin
      id: oncXN
      restart: true
      arguments:
        - file_url=https://github.com/dchqinc/dchq-docker-java-solr-mongo-cassandra-example/raw/master/dbconnect.war
        - dir=/usr/local/tomcat/webapps/ROOT.war
        - delete_dir=/usr/local/tomcat/webapps/ROOT
Solr:
  image: solr:latest
  mem_min: 300m
  host: host1
  publish_all: false
  plugins:
    - !plugin
      id: doX8s
      restart: true
      arguments:
        - file_url=https://github.com/dchqinc/dchq-docker-java-solr-mongo-cassandra-example/raw/master/names.zip
MySQL:
  image: mysql:latest
  host: host1
  mem_min: 400m
  environment:
    - MYSQL_USER=root
    - MYSQL_DATABASE=names
    - MYSQL_ROOT_PASSWORD={{alphanumeric|8}}

1676129_orig

用户可以通过引用另一个图像的环境变量来创建跨图像环境变量绑定。 在这种情况下,我们进行了几种绑定-包括database_url = jdbc:mysql:// {{MySQL | container_hostname}}:3306 / {{MySQL | MYSQL_DATABASE}} –其中,数据库容器内部IP地址可根据请求动态解析时间,用于确保Tomcat可以与数据库建立连接。

以下是受支持的环境变量值的列表:

  • {{字母数字| 8}} –创建一个随机的8个字符的字母数字字符串。 这对于创建随机密码最有用。
  • {{图片名称| ip}} –允许您输入容器的主机IP地址作为环境变量的值。 这对于允许中间件层与数据库建立连接非常有用。
  • {{图片名称| container_hostname}}{{Image Name | container_ip}} –允许您输入容器的名称作为环境变量的值。 这对于允许中间件层与数据库建立安全连接(不暴露数据库端口)最有用。
  • {{图片名称| container_private_ip}} –允许您输入容器的内部IP作为环境变量的值。 这对于允许中间件层与数据库建立安全连接(不暴露数据库端口)最有用。
  • {{图片名称| port_Port Number}} –允许您输入容器的端口号作为环境变量的值。 这对于允许中间件层与数据库建立连接非常有用。 在这种情况下,指定的端口号必须是内部端口号,即不是分配给容器的外部端口。 例如,{{PostgreSQL | port_5432}}将转换为实际的外部端口,该端口将允许中间件层与数据库建立连接。
  • {{图片名称| 环境变量名称}} –允许您将一个图像的环境变量的值输入另一个图像的环境变量。 这里的用例是无止境的-因为大多数多层应用程序将具有跨映像依赖关系。

您会注意到, cluster_size参数允许您指定要启动的容器数量(具有相同的应用程序依赖性)。 在这种情况下,可以通过指定cluster_size来部署Tomcat应用程序服务器集群。

host参数允许您指定要用于容器部署的主机。 如果在创建集群时选择了Weave作为网络层,则可以这样做。 这样,您可以确保跨不同主机(或区域)的应用程序服务器群集的高可用性,并且可以遵守关联性规则,以确保例如在单独的主机上运行数据库。 以下是host参数支持的值:

  • host1,host2,host3等–在数据中心(或集群)中随机选择一个主机进行容器部署
  • IP地址1,IP地址2等 -允许用户指定用于容器部署的实际IP地址
  • 主机名1,主机名2等 -允许用户指定用于容器部署的实际主机名
  • 通配符 (例如“ db- ”或“ app-srv- ”)–指定要在主机名中使用的通配符

DCHQ中的服务发现框架提供了事件驱动的生命周期阶段,该阶段执行自定义脚本以重新配置应用程序组件。 在向外扩展可能需要为其重新配置负载平衡器或可能需要重新平衡副本集的群集时,这至关重要。

您会注意到,在以下不同阶段或事件中正在执行Nginx插件:

  • 创建Nginx容器后 ,在这种情况下,应用程序服务器的容器IP将注入默认配置文件中,以促进对正确服务的负载平衡
  • 在扩展或扩展应用程序服务器群集时 -在这种情况下,应用程序服务器的更新后的容器IP将注入默认配置文件中,以促进对正确服务的负载平衡
  • 当应用程序服务器停止或启动时 -在这种情况下,应用程序服务器的更新后的容器IP将注入默认配置文件中,以促进对正确服务的负载平衡

因此,这里的服务发现框架既要进行服务注册 (通过跟踪容器IP和环境变量值), 也要进行服务发现 (通过在某些事件或阶段执行正确的脚本)。

插件中的生命周期参数使您可以指定执行插件的确切阶段或事件。 如果未指定生命周期,则默认情况下,该插件将执行on_create 。 以下是受支持的生命周期阶段:

  • on_create —创建容器时执行插件
  • on_start-在容器启动后执行插件
  • on_stop-在容器停止之前执行插件
  • on_destroy-在销毁容器之前执行插件
  • post_create —在容器创建并运行后执行插件
  • post_start [:Node] -在另一个容器启动后执行插件
  • post_stop [:Node] -在另一个容器停止后执行插件
  • post_destroy [:Node] -在另一个容器销毁后执行插件
  • post_scale_out [:Node] -在扩展另一个容器集群后执行插件
  • post_scale_in [:Node] -在扩展另一个容器集群后执行插件

可以通过导航到“ 库” ,然后在任何已发布的应用程序模板上单击“ 定制”来完成。 然后,您可以选择一个集群并单击运行

9182384_orig

部署应用程序后,用户可以访问监视,警报,连续交付,应用程序备份,扩展/扩展,浏览器内终端以访问容器,日志流和应用程序更新。

要访问该应用程序,用户只需单击Nginx的公开端口即可。

598013_orig

4983015_orig

一旦应用程序启动并运行,用户就可以监视正在运行的容器的CPU,内存和I / O,以在这些指标超过预定义的阈值时获得警报。 DCHQ还监视运行应用程序的基础Aliyun实例-捕获CPU等指标。 内存和磁盘利用率。

用户可以执行历史监视分析,并将问题与容器更新或构建部署相关联。 这可以通过单击统计链接来完成。 可以选择一个自定义日期范围来历史查看CPU,内存和I / O。

5395378_orig

如果正在运行的应用程序变得资源受限,则用户可以扩展应用程序以满足不断增加的负载。 此外,例如,用户可以在工作时间安排向外扩展,在周末安排向外扩展。

要将Tomcat服务器集群从1扩展到2,用户可以单击正在运行的应用程序的“ 操作”菜单,然后选择“ 扩展” 。 然后,用户可以为群集指定新的大小,然后单击“立即运行”

执行横向扩展时,将使用服务发现框架来更新负载平衡器。 插件将在Nginx上自动执行,以更新Nginx的default.conf文件,以便它知道添加的新应用程序服务器。 这是因为我们已指定post_scale_out:AppServer作为此插件的生命周期事件。

应用程序时间轴可用于跟踪对应用程序进行的每个更改,以进行审核和诊断。 可以从正在运行的应用程序页面底部的可扩展菜单中访问它。 在这种情况下,服务发现框架将在Application Server集群扩展后立即自动执行Apache HTTP Server插件。

3088297_orig

5662683_orig

在Live Apps页面上,容器名称旁边应有一个命令提示符图标。 这允许用户使用安全的通信协议通过代理消息队列进入容器。 租户管理员可以定义命令白名单,以确保用户不会对正在运行的容器进行任何有害更改。

例如,对于Nginx容器,我们使用命令提示符来确保在横向扩展完成后自动添加了新的容器IP。

7487422_orig

7492858_orig

翻译自: https://www.javacodegeeks.com/2016/04/automated-docker-application-deployment-alibaba-cloud-aliyun.html

aliyun docker

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值