OVH公共云上的自动化Docker应用程序部署

本文介绍了如何使用DCHQ在OVH公共云上实现Docker应用程序的自动化部署。DCHQ允许用户自动配置和扩展云服务,并简化了Docker基础架构的管理和监控。通过3个步骤,包括创建云提供商、设置OVH集群和注册实例,用户可以部署多层Docker Java应用程序,如Nginx-Tomcat-Solr-MySQL。DCHQ还提供了服务发现、高可用性部署和资源监控等功能,确保应用程序的高效运行。
摘要由CSDN通过智能技术生成

总部位于旧金山的初创企业DCHQ提供混合云和企业应用程序自动化服务,该公司宣布支持OVH公有云 ,这是一种基于OpenStack的产品,在法国和加拿大设有数据中心。

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

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

什么是DCHQ?

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

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

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

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

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

DCHQ概述

9437803_orig

DCHQ平台功能

7455040_orig

DCHQ工作流程

6459078_orig

管理Docker基础架构中的挑战

随着Docker编排的所有进步,DevOps工程师和基础架构运营商仍在努力解决以下问题:

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

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

设置Docker OVH集群的3个简单步骤

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

步骤1 –使用OpenStack端点为OVH创建云提供商

在为OVH注册Cloud Provider之前,用户需要在OVH上完成以下步骤。

为OpenStack添加用户

1.登录OVH管理控制台: https : //ca.ovh.com/manager/login/

2.单击公共云并创建一个新项目 (如果尚未创建)

3.单击项目管理和合并。

4.单击OpenStack

5.单击添加用户以生成一个新令牌。

6.保存ID密码

7.单击配置图标,然后选择“正在下载OpenStack配置文件 ”。 重要信息 -确保已在计划启动实例的区域中完成此任务。

打开该文件并复制OS_TENANT_NAME 。 注册Cloud Provider时,将需要它以及ID和密码。

8768527_orig

8336964_orig

为OpenStack项目创建私钥

导航到“访问和安全性”页面,并使用先前为OpenStack创建的ID和密码登录。 https://horizo​​n.cloud.ovh.net/project/access_and_security/

单击“ 密钥对 ”选项卡。 确保顶部选择的区域与计划启动实例的区域匹配。

单击创建密钥对并保存生成的PEM文件。

8980671_orig

注册OVH公共云的云提供商

用户可以导航到Cloud Providers ,然后单击+按钮以选择OpenStack,从而为OVH Public Cloud注册Cloud Provider。 以下是必填字段:

  • 端点网址: https//auth.cloud.ovh.net/v2.0
  • 用户名: OS_TENANT_NAME:ID (例如6756121681216381:p4yVY12A6tXN)。 可以从OpenStack配置文件(openrc.sh)中检索OS_TENANT_NAME。 该ID来自为OpenStack创建的用户。
  • 密码:这是为OpenStack创建的用户的密码。

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

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

1712363_orig

第2步–为OVH创建集群

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

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

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

4116529_orig

步骤3 –注册已运行的OVH实例或设置新的OVH公共云实例

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

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

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

6501008_orig

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

这是Docker联网脚本的样子:

curl -Ls <dchq.agent.script.url>| bash -s <DCHQ Server Key><dchq.agent.connect.ip><dchq.agent.connect.port> docker.local <New Server IP> 

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

991552_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地址

可以使用我们的REST API以编程方式自动执行此任务,以创建“ Docker服务器”( https://dchq.readme.io/docs/dockerservers

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

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

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

9711418_orig

用户可以导航到Machines ,然后单击+按钮选择OpenStack

如果Cloud Provider已正确注册,则地区,风味和图像菜单应加载可用的OVH选项。

以下是三个可用区域(截至2016年4月11日)。

  • 加拿大的博哈努瓦
  • 法国的坟墓
  • 法国史特拉斯堡

2991825_orig

做出选择后,单击Machine Compose按钮以生成YAML模板。

3374287_orig

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

用户可以从先前的UI工作流复制并粘贴生成的Machine Compose模板-但是,还需要用户名,keyPair和password参数。

这是用于请求BHS1地区(即加拿大)具有2GB内存(VPS-SSD-1)的Ubuntu 14.04实例的模板。

8242252_orig

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

  • description :蓝图/模板的描述
  • instanceType :特定于云提供商的值(例如BHS1 / 550757b3-36c2-4027-b6fe-d70f45304b9c)
  • 地区 :特定于云提供商的值(例如BHS1)
  • 图片 :必填–完全合格的图片ID /名称(例如BHS1 / 6ea6402b-accd-487f-9ff5-175ecebfd10b)
  • username :用于连接服务器的用户名
  • password :这可以引用存储在凭据存储中的密码或私钥。 将需要存储在“云提供商”页面中的凭据项目的ID。 这是可接受的格式: “ {{凭据| 2c91802a520x3622x01520xa6393098322}}”
  • keyPair :这是用于OpenStack的密钥对的名称
  • count :虚拟机总数,默认为1。

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

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

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

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

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

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

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

133070_orig

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

4852374_orig

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

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

680338_orig

3587612_orig

在预配的OVH实例上部署Docker Java应用程序(Nginx-Tomcat-Solr-MySQL)

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

查看我们已发布的Docker应用程序模板-包括多层Java堆栈,LAMP,LAOP和LAPP堆栈,Node.js,Rails,Python,Mongo副本集,Couchbase群集,MEAN.JS,WordPress,Drupal等。 https://www.dchq.io/landing/products.html#/library?org=DCHQ

创建应用程序模板

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}}

5023878_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}}将转换为实际的外部端口,该端口将允许中间件层与数据库建立连接。
  • {{图片名称| 环境变量名称}} –允许您将一个图像的环境变量的值输入另一个图像的环境变量。 这里的用例是无止境的-因为大多数多层应用程序将具有跨映像依赖关系。

使用服务发现插件和host参数部署高可用性Java应用程序

您会注意到, 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] -在扩展另一个容器集群后执行插件

在OVH上部署Java应用程序

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

8492927_orig

访问已部署的应用程序

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

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

4458895_orig

1847868_orig

监控容器的性能

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

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

2812849_orig

扩展应用程序

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

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

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

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

7982755_orig

6161200_orig

访问容器的浏览器内终端

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

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

8482717_orig

8848857_orig

立即下载DCHQ内部部署

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值