首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Juju魅力的持续部署

使用Juju魅力的持续部署
EN

Ask Ubuntu用户
提问于 2014-12-31 12:45:31
回答 1查看 197关注 0票数 1

我正在探索使用Juju部署应用程序基础设施的可能性。

我的应用程序是使用Play框架构建的,并在Java虚拟机上运行。我设想了以下设置:

  • SSL卸载的代理服务器(如果不太难的话,可能是多余的)
  • 运行应用程序和JVM的主节点
  • 运行应用程序和JVM的辅助节点(热备用)

代理服务器只应在主节点关闭时使用辅助节点。应该只有一个接收请求的应用程序节点。水平缩放是我们不需要的,它使业务逻辑复杂化。

上述设置似乎相当可行。当我想到连续部署部分时,它(在我的脑海中)变得更加复杂。

我的应用程序是用私有Jenkins机器构建的,生成一个zip文件,其中包含应用程序(作为可运行的bash脚本)及其所有依赖项。

应采取下列步骤来部署该系统:

  • 将zip发送到服务器
  • 使用应用程序部署新的代理、主节点和辅助节点
  • 切换到新的代理

我想创造一个魅力,但我不知道如何进行。

是否有可能从魅力中部署一个魅力包?如果是,怎么做?

请注意,欢迎您提出任何建议。我不需要具体的实现,只需要指针和一般方向。

EN

回答 1

Ask Ubuntu用户

发布于 2015-01-02 03:16:56

向您的环境发送“构建”应用程序实际上是一种相当常见的技术,特别是对于那些使用诸如docker之类的工具的人。

通常,您希望为环境中的每个组件创建一个魅力。在这种情况下,您将拥有“代理”和“应用程序”。

因此,您将创建一个代理魅力,除了installstart钩子之外,还有一个relation-joinedrelation-broken钩子脚本。这些脚本将在连接关系时修改代理设置,以添加新的应用程序位置,然后在中断时删除应用程序位置。这将允许您保持代理的启动和运行,并随意交换应用程序服务器。

应用程序服务将有类似的钩子脚本将其位置发送到代理服务。对于需要部署到的应用程序压缩文件的位置,它还需要一个魅力配置选项。当应用程序install钩子运行时,它将在提供的位置解压压缩文件,然后在start钩子中运行它。

持续部署是朱朱真正闪耀的地方。首先,您需要一个引导环境juju bootstrap <your-env-name>juju switch <your-env-name>

Jenkins实例将构建代理zip和应用程序zip文件,然后将它们上传到服务器可以访问的位置。如果你在EC2上,这很可能是在S3上。然后,它将注意到当前正在运行的代理和应用程序服务的位置路径和构建号,以及服务名称。

然后,它将运行:

代码语言:javascript
复制
juju deploy your-proxy your-proxy-<build-number>
juju deploy your-application your-application-<build-number>
juju add-unit your-application-<build-number> -n 2

此时,您可能希望定期进行间隔检查,以查看代理和应用程序服务何时启动和运行。此时,您将希望将新的应用程序服务连接到代理,将流量切换到新的代理,并删除旧的服务。

代码语言:javascript
复制
juju add-relation your-proxy-<build-number> your-application-<build-number>
# add code here to switch to new proxy
juju destroy your-proxy-<old-build-number>
juju destroy your-application-<old-build-number> 

这假设您将在每次应用程序更改时重新构建代理。如果不是,那么只需从上面的命令中删除代理步骤。这还假设应用程序需要时间来启动,并且您不希望导致停机时间,这样简单的upgrade-charm挂钩就无法工作。

票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/567377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档