【问题标题】:Configure AWS Elastic Beanstalk instance to use 2 subnets将 AWS Elastic Beanstalk 实例配置为使用 2 个子网
【发布时间】:2021-08-24 01:10:47
【问题描述】:

我有 3 个运行 Spring 微服务的 AWS Elastic Beanstalk 实例。所有微服务都在相互发出 POST 请求,并使用 RDS 服务进行数据库。

我是否应该将数据库流量和微服务流量隔离到单独的子网中? 如果这是一个好的做法,是否可以为每个 AWS Elastic Beanstalk 实例的每个子网分配 2 个私有网络 IP?

【问题讨论】:

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


    【解决方案1】:

    我认为您不能使用 EBS 来执行此操作,因为实例会自动创建和终止。所以你应该尝试单独创建实例并在其上添加自动缩放策略。

    我通常做的是在公共子网中创建我的 EC2 实例,在私有子网中创建 RDS,并使用 RDS 安全组并添加 EC2 实例的弹性 IP,这样所有流量都通过 EC2 实例,所有流量都进入 EC2实例是来自 ELB 的 HTTPS。

    根据要求添加以下步骤: 好的,所以我假设您已经对如何创建服务器和 RDS 等有所了解。

    1. 为您的每个微服务创建一个 EC2 实例。
    2. 将 EIP 附加到每个实例。
    3. 添加 Auto-Scaling 策略以根据流量/CPU 利用率增加或减少实例。确保终止最新创建的实例。
    4. 为此实例添加 ELB 并添加 HTTPS/SSL 证书以保护您的流量。
    5. 在私有子网中创建 RDS,并在 RDS SG 中为 3306 端口添加实例 EIP。

    我认为你应该能够做到这一点。

    【讨论】:

    • 你能分享一下具体的步骤吗?看起来不错的解决方案。
    • @PeterPenzov 已更新答案,请查看
    • @PeterPenzov:你也会奖励赏金吗?
    • @PeterPenzov 谢谢队友
    【解决方案2】:

    在 EB 中的实例之间直接通信不是一个好习惯。原因是那个EB instances run in autoscalling group。因此它们可以随时被 AWS 终止和替换,从而导致它们的私有 IP 地址发生变化。

    IP 的更改迟早会破坏您的应用程序。应使用负载均衡器或私有 IP 访问 EB 中的实例。

    因此,如果您有一些仅供私人访问的实例,您可以将它们分离到内部 EB 环境中。

    【讨论】:

    • 您能否详细说明autoscalling group 以及您提到的问题?
    • @PeterPenzov 我用 EB 和自动缩放的链接更新了答案。当您写下您拥有“3 个 AWS Elastic Beanstalk 实例”时,是否意味着 3 个完全独立的 EB 环境?还是具有 3 个实例的单个 EB 环境?
    • 单一环境。
    • @PeterPenzov 所以你想让一个实例上的一个微服务与同一 EB 环境中另一个实例上的一些不同的微服务通信?
    • 是 - 一个子网与数据库通信,第二个子网与其他微服务通信。
    猜你喜欢
    • 2016-05-10
    • 2015-12-21
    • 2021-12-04
    • 2017-04-04
    • 2021-08-22
    • 2017-02-28
    • 2020-08-27
    • 2017-05-21
    • 2016-12-08
    相关资源
    最近更新 更多