Я использую 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" : "*"
}
]
}