Elasti c beanstalk, развернутый с помощью облачной информации, не обновляет цель проверки работоспособности - PullRequest
1 голос
/ 09 июля 2020

У меня есть среда Elasti c Beanstalk, развернутая через CloudFormation.

На данный момент это единственный веб-сервер за LoadBalancer, но в будущем он будет расширяться с помощью группы автоматического масштабирования. 1004 * Вот соответствующие фрагменты из моего шаблона

"BeanstalkEnvironment": {
    "Type": "AWS::ElasticBeanstalk::Environment",
        "Properties": {
        ...
            "OptionSettings": [
                ...
                {
                    "Namespace": "aws:elasticbeanstalk:application",
                    "OptionName": "Application Healthcheck URL",
                    "Value": "/health"
                },
                {
                    "Namespace": "aws:elasticbeanstalk:environment",
                    "OptionName": "EnvironmentType",
                    "Value": "LoadBalanced"
                },
                {
                    "Namespace": "aws:elasticbeanstalk:environment",
                    "OptionName": "LoadBalancerType",
                    "Value": "application"
                },
                {
                    "Namespace": "aws:elbv2:listener:default",
                    "OptionName": "ListenerEnabled",
                    "Value": "true"
                },
                {
                    "Namespace": "aws:elbv2:listener:443",
                    "OptionName": "ListenerEnabled",
                    "Value": "true"
                },
                {
                    "Namespace": "aws:elbv2:listener:443",
                    "OptionName": "Protocol",
                    "Value": "HTTPS"
                },
                {
                    "Namespace": "aws:elbv2:listener:443",
                    "OptionName": "SSLCertificateArns",
                    "Value": {"Ref": "Certificate"}
                },
                {
                    "Namespace": "aws:autoscaling:asg",
                    "OptionName": "MinSize",
                    "Value": "1"
                },
                {
                    "Namespace": "aws:autoscaling:asg",
                    "OptionName": "MaxSize",
                    "Value": "1"
                }
                ...
            ],
            "SolutionStackName": "64bit Amazon Linux 2 v3.0.3 running PHP 7.4",
        ...
        }
    }
}

Целевая группа балансировщика нагрузки по-прежнему использует / в качестве пути для проверки работоспособности. Поскольку мой веб-сервер перенаправляет /, проверка работоспособности не выполняется, поскольку он не получает требуемый код состояния 200. Если я вручную изменю целевой путь на /health, тогда проверка работоспособности будет работать должным образом.

Какая конфигурация мне не хватает, чтобы иметь возможность установить путь проверки работоспособности как часть шаблона CloudFormation для среды?

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Я думаю, что этот параметр aws:elasticbeanstalk:application предназначен для classi c балансировщика нагрузки (CLB).

Однако, поскольку вы используете ALB (балансировщик нагрузки приложения), вы должны использовать aws: elasticbeanstalk: environment: process: default .

Этот параметр позволяет вам установить (среди прочего):

  • HealthCheckPath: Путь , на который будут отправляться HTTP-запросы для проверки работоспособности.
  • MatcherHTTPCode: разделенный запятыми список HTTP-кодов (ов), которые указывают, что экземпляр исправен.
0 голосов
/ 09 июля 2020

Сразу после того, как я разместил вопрос, я сам нашел ответ.

Конкретно моя проблема заключалась в том, что я использую балансировщик нагрузки приложения.

Проверка работоспособности Application Load Balancer не работает. t используйте путь проверки работоспособности Elasti c Beanstalk. Вместо этого он использует указанный c путь, настроенный для каждого процесса отдельно. AWS Документация

Поэтому мне нужно добавить проверку работоспособности для процесса, на который перенаправляет балансировщик нагрузки приложения. К счастью, оба моих слушателя loadbalancer используют процесс по умолчанию, поэтому, если я обновлю путь проверки работоспособности процесса по умолчанию, он будет работать.

Итак, я изменил эту настройку параметров

{
    "Namespace": "aws:elasticbeanstalk:application",
    "OptionName": "Application Healthcheck URL",
    "Value": "/health"
},

на

{
    "Namespace": "aws:elasticbeanstalk:environment:process:default",
    "OptionName": "HealthCheckPath",
    "Value": "/health"
},

вместо этого. Вы можете найти это задокументированное здесь

...