Назад | Перейти на главную страницу

CloudFormation с ELB и общедоступными DNS

Я использую Cloudformation для создания стека с балансировкой нагрузки.

Меня беспокоит то, что каждый раз при воссоздании стека общедоступный URL-адрес ELB будет меняться, что потребует изменения псевдонима домена маршрута 53 веб-сайта, чтобы он указывал на новый URL-адрес ELB.

Я могу добавить конфигурацию Cloudformation, чтобы автоматизировать это, но я опасаюсь, что сайт будет отключаться на несколько минут каждый раз при воссоздании стека из-за проблем с распространением DNS.

Насколько я понимаю, R53 обновит псевдоним примерно за 60 секунд, но кэширующие DNS-серверы могут не подчиняться TTL и обновление может занять несколько минут.

Можно одновременно запустить старый и новый стек, но тогда экземпляры RDS в каждом VPC нужно будет каким-то образом синхронизировать.

Также похоже, что в Cloudformation нет возможности связать существующий ELB со стеком, поэтому сохранение ELB отдельно от стека кажется нецелесообразным.

Так какое же правильное решение? Как я могу избежать заметного простоя при замене производственного стека новым созданным стеком CF?

вы можете использовать политику стека, чтобы предотвратить обновление стека для ресурса ELB.

документация здесь: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/protect-stack-resources.html

пример:

{
  "Statement" : [
    {
      "Effect" : "Deny",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*",
      "Condition" : {
        "StringEquals" : {
          "ResourceType" : ["AWS::ElasticLoadBalancing::LoadBalancer"]
        }
      }
    },
    {
      "Effect" : "Allow",
      "Action" : "Update:*",
      "Principal": "*",
      "Resource" : "*"
    }
  ]
}