【问题标题】:Elastic Beanstalk host specific application configurationElastic Beanstalk 主机特定应用程序配置
【发布时间】:2014-01-11 03:54:24
【问题描述】:

我有一个 Java Web 应用程序,我正在尝试重构它以使用弹性 beanstalk 做事方式。该应用程序将是负载平衡的,并且(目前)有 2 个主机,而不利用自动缩放。问题是节点之间存在细微的配置差异,特别是对某些 Web 服务的身份验证是使用不同的凭据完成的,以有效地使吞吐量翻倍,因为存在每个帐户的限制限制。

目前我的应用程序将配置与存档分开处理,因此它在固定主机上相对简单,其中配置保留在相对静态的文件路径中,并且只需要部署 war 文件。

沿着弹性 beanstalk 路径走下去,我认为我必须在可部署工件中包含所有配置选项,以及如何让应用程序加载相关主机特定配置。我遇到的问题是决定在应用程序中加载哪个配置。我可以使用有关主机的物理方面,即可以有效加载相关配置的 IP 地址或实例 ID;

/config-<InstanceID-1>.properties 
/config-<InstanceID-2>.properties

这种方法是完全有缺陷的,因为如果我在 beanstalk 中创建一个全新的环境,它需要我更新项目中的所有配置文件以反映新创建的 Instance-id。

有没有人想出一个在beantalk中做到这一点的好方法?

【问题讨论】:

    标签: java amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    如果您必须拥有两种不同类型的节点,那么您应该为您的应用程序考虑 SOA 架构。

    创建两个环境,environment-aenvironment-b。通过 AWS Web 控制台设置环境的所有属性,或者可以重用现有的配置文件并为每个环境设置特定的配置文件名。

    #environment-a
    PARAM1 = config-environment-a.properties
    
    #environment-b
    PARAM1 = config-environment-b.properties  
    

    您共享相同的代码库并使用 -e 修饰符推送到任一环境。

    #push to environment-a
    $ git aws.push -e environment-a
    
    #push to environment-b
    $ git aws.push -e environment-b
    

    您还可以创建 git 别名以同时推送到两个环境:-)

    现在,SOA 方法的主要好处是您可以单独扩展和管理这些环境。简洁大方。

    如果您想要更复杂且不那么优雅,请使用简单的令牌分发服务。在每次环境初始化时,向 Amazon SQS 发送两条消息。每条消息都应包含配置名称。然后从 SQS 中拉出这些消息,每个实例将从队列中得到一个。无论消息包含哪个配置名称,都使用该配置配置您的节点。 :-)

    希望对你有帮助。

    更新后 @vcetinick 评论:

    对于应该很简单的事情来说,一切似乎仍然相当复杂。

    这就是为什么我建议单独的环境。您可以制作自己的注册服务,当节点启动时,它会向服务注册,并作为回报获取配置参数。您将可用配置保存在持久数据库中。如果节点死亡并且服务收到另一个注册请求,注册服务可以快速检查已注册的所有节点(因为它们都在注册过程中留下了自己的信息),如果任何一个节点没有响应,它的配置数据就会重新分配给新节点。现在你手上有single point of failure :-)

    同样,可能还有其他方法可以解决该问题。

    【讨论】:

    • 感谢您的回复,就我而言,唯一的问题是,将配置中真正的 2 个用户名和密码差异拆分为 2 个环境似乎有点不合理。当节点 3 和 4 再次出现添加环境时......我喜欢 SQS 的想法,但是是的,必须在应用程序配置之前加载 SQS 服务,以便使用正确的配置初始化应用程序,但如果实例已关闭电源突然,需要以某种方式将配置元素推回队列。对于应该很简单的事情来说,一切似乎仍然相当复杂。
    • @vcetinick:更新了答案-评论太长了:-)
    猜你喜欢
    • 2013-11-25
    • 2018-04-14
    • 2014-11-16
    • 2014-09-25
    • 2020-12-15
    • 2018-06-13
    • 2017-04-19
    • 2017-01-17
    • 2019-02-23
    相关资源
    最近更新 更多