【问题标题】:502 Bad Gateway after AMI Image creation from EC2 running Flask using Docker Compose使用 Docker Compose 从运行 Flask 的 EC2 创建 AMI 映像后出现 502 Bad Gateway
【发布时间】:2019-09-16 02:54:45
【问题描述】:

我的应用程序还为 NPM React 应用程序以及附加了 RDS 的 Flask 后端提供服务。它正在运行 Dualstack。 我能够追踪到我的网站出现了 502 错误网关。在我创建 AMI 映像以将 Ec2 实例复制到我的另一个帐户后一分钟。现在我部署了实例并尝试运行(尚未运行)。

AMI 创建的 Cloud Trail 日志

{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "",
        "arn": "",
        "accountId": "",
        "accessKeyId": "",
        "userName": "",
        "sessionContext": {
            "sessionIssuer": {},
            "webIdFederationData": {},
            "attributes": {
                "mfaAuthenticated": "false",
                "creationDate": "2019-09-13T02:30:45Z"
            }
        }
    },
    "eventTime": "2019-09-13T04:30:01Z",
    "eventSource": "ec2.amazonaws.com",
    "eventName": "CreateImage",
    "awsRegion": "ap-southeast-2",
    "sourceIPAddress": "***.66.79.65",
    "userAgent": "console.ec2.amazonaws.com",
    "requestParameters": {
        "instanceId": "****05818a11a690e",
        "name": "devport",
        "description": "Port to Developer version of new one",
        "noReboot": false,
        "blockDeviceMapping": {
            "items": [
                {
                    "deviceName": "/dev/xvda",
                    "ebs": {
                        "volumeSize": 20,
                        "deleteOnTermination": true,
                        "volumeType": "gp2",
                        "encrypted": false
                    }
                }
            ]
        }
    },
    "responseElements": {
        "requestId": "******-3cfb-49d0-917f-78641a0561cc",
        "imageId": "ami-*****bfa644e5a043"
    },
    "requestID": "*****-3cfb-49d0-917f-78641a0561cc",
    "eventID": "******-7780-4d61-900b-607378d7dc88",
    "eventType": "AwsApiCall",
    "recipientAccountId": ""
}

【问题讨论】:

    标签: amazon-web-services amazon-ec2 docker-compose load-balancing amazon-rds


    【解决方案1】:

    从实例创建 AMI 时,它有两个选项,要么在创建 AMI 期间重新启动,要么直接执行,但不建议使用第二个。

    因此,如果您没有检查 502 bad gateway,则在您重新启动容器之前,如果它没有自动重新启动。

    你只能share AMI当它的就绪状态。 所以在第 4 步时它会重启实例,在第 5 步之后它准备好共享。

    noReboot(布尔值)

    默认情况下,此属性设置为 false,这意味着 Amazon EC2 尝试在创建映像之前彻底关闭实例,并且 之后重启实例。设置为 true 时,Amazon EC2 不会 在创建映像之前关闭实例。当这个选项是 使用时,无法保证创建的映像上的文件系统完整性。 默认为 FALSE。

    【讨论】:

    • 感谢您的回答。 “noReboot”:跟踪日志中的错误。表示我没有检查重新启动。所以在从 AMI 创建和启动实例之后。我已经重新启动了从中复制的实例。但是它仍然是502。有没有其他方法可以将其重新启动到工作状态。
    • 502 bad gateway 意味着后端没有响应,您是否检查过您的容器正在运行?如果运行端口是否健康?
    • 它正在运行并且很健康。我的整个 ec2 被部署为 Terraform 模板,我复制了 AMI。是不是搞砸了。对不起,如果它太天真了。
    • 我发现我的 Nginx 服务在重启后停止了。我重新启动它一切都很好。谢谢朋友的帮助。
    • 你可以在 initd/boot time 中添加 nginx 以自动启动以避免将来发生这种情况:)
    猜你喜欢
    • 2016-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 2021-05-31
    • 1970-01-01
    • 2017-04-18
    • 2011-09-02
    相关资源
    最近更新 更多