как именно работает URL-адрес среды подкачки?

Недавно я использовал URL-адрес среды подкачки для обновления своего приложения Elastic Beanstalk, используя две среды. У меня есть запись CNAME по другому URL-адресу, сопоставленному с URL-адресом beanstalk. Затем я попытался нажать на производственную среду (которая теперь находилась по тестовому URL-адресу), а затем снова поменял местами, но это, похоже, не сработало правильно.

Я ожидаю, что своп сопоставит тестовую среду с рабочим URL-адресом, а это означает, что, когда я ранее отправлял тестовую среду для тестирования, теперь я должен отправить в производственную среду, а затем переключиться, чтобы сделать еще одно обновление с нулевым временем простоя. Это может быть очень запутанным, поэтому я надеялся, что кто-то сможет пролить свет на это, поскольку, похоже, информации об Elastic Beanstalk и обмене URL-адресами недостаточно.


person diogeneshamilton    schedule 18.07.2012    source источник
comment
Имейте в виду, что для распространения DNS-записей на DNS-серверы по всему миру может потребоваться несколько часов. Может быть, это так?   -  person Viccari    schedule 19.07.2012
comment
@Viccari - Почти уверен, что обмен доменами Beanstalk является внутренним для AWS (и я подозреваю, что он проходит через Route53, но я не могу это доказать). По сути, AWS просто сопоставляет app1.elasticbeanstalk.com с ELB app2... Я думаю. Это совершенно непрозрачный процесс. Следовательно, истечение срока действия кеша DNS не будет проблемой.   -  person Christopher    schedule 19.07.2012
comment
@diogenes — вы можете попробовать сценарий развертывания CLI с нулевым временем простоя AWS есть в документации. Если своп все еще не работает с их собственным примером, это предполагает, что что-то не так с процессом push, а не с свопом.   -  person Christopher    schedule 19.07.2012


Ответы (2)


обмен URL-адресами — это простая операция обмена CNAME между двумя Зеленая/готовая среда. Это не имеет ничего общего с Route 53 (или любым другим DNS). Единственное, что он делает, это просто обменивает два CNAME. Например, у вас есть одна среда foo-1 с CNAME foo-1.example.com, а другая foo-2 с CNAME foo-2.example.com. После операции подкачки среда foo-1 ответит на http://foo-2.example.com.

Эта операция необходима для развертывания новой версии вашего приложения с нулевым временем простоя. Ваш DNS укажет ваш www.example.com на foo-1, который будет изменен на лету с помощью свопа CNAME за несколько секунд. Пользователи не увидят никаких задержек, если ваше приложение умеет совместно использовать ресурсы (например, базу данных).

Вы можете взглянуть на jcabi-beanstalk-maven-plugin (я м разработчик). Этот подключаемый модуль Maven выполняет именно эту операцию подкачки CNAME полностью автоматически.

person yegor256    schedule 12.10.2012
comment
Если это не имеет никакого отношения к route53, то почему тогда при обмене появляется предупреждение, в котором говорится: Swapping the environment URL will modify the Route 53 DNS configuration, which may take a few minutes. Your application will continue to run while the changes are propagated. - person ecoe; 08.10.2018

Пожалуйста, будьте осторожны с тем, какая функция «Swap URL» обсуждается... Если вы имеете в виду «Действия» AWS Elastic Beanstalk | "Поменять URL-адреса среды", мой опыт показывает, что эта функция не имеет ничего общего с DNS и ничего общего с Route 53.

Из того, что я вижу, URL-адрес AWS EB Swap просто заменяет общедоступные URL-адреса ваших сред beanstalk... Избавляя вас от необходимости менять свой DNS вообще.

Пример:

Предположим, у вас есть две среды EB:

"качество" с URL-адресом EB "quality-qq443224.elasticbeanstalk.com"

"quality-patched1" с URL-адресом EB "quality-patched1.elasticbeanstalk.com"

Если вы выберете экземпляр "quality-patched1" и выберите "Поменять URL-адреса среды" с вашим "качественным" экземпляром... Все, что произойдет, это то, что они теперь будут перечислены как:

"качество" с URL-адресом EB "quality-patched1.elasticbeanstalk.com"

"quality-patched1" с URL-адресом EB "quality-qq443224.elasticbeanstalk.com"

Поэтому ваши СУЩЕСТВУЮЩИЕ DNS CNAME (предполагается, что они находятся на маршруте 53 и указывают на /quality-qq443224.../) вообще не должны изменяться... Они будут направлены на ваш новый пропатченный экземпляр.

person Dave Collins    schedule 10.04.2014
comment
Так что это действительно связано с DNS. - person Alex B; 27.09.2014
comment
Однако похоже, что если ваш Route 53 указывает на балансировщик нагрузки, вам нужно поменять его на новый… - person Rich Bradshaw; 24.03.2015
comment
Рич, я думал о том же. Если вы настроите запись A своего домена как псевдоним Route 53 для определенного балансировщика нагрузки Elastic Beanstalk, я почти уверен, что обмен CNAME не повлияет на эту запись DNS. Только если вы использовали DNS-запись CNAME и указали на себя.elasticbeanstalk.com, это имело какое-либо влияние. Я прав? Обходной путь заключается в том, чтобы просто вручную обновить псевдоним Route 53 до ELB новой среды, как только он будет запущен. - person Elad Nava; 11.10.2015
comment
привет, не могли бы вы сказать мне, что произойдет, если у меня есть производственная среда, работающая с 3 экземплярами (с балансировкой нагрузки), и я попытаюсь поменять ее местами с рабочей средой-2, работающей с 1 экземпляром (также с балансировкой нагрузки)?, ... мне нужно скажите ему запустить 2 дополнительных экземпляра, прежде чем я сделаю обмен, или AWS позаботится об этом? Спасибо - person equivalent8; 24.11.2015
comment
Элад Нава совершенно прав. С псевдонимом, указывающим на Elastic Load Balancer, который я установил для записей A, замена не оказала никакого влияния. Мне пришлось войти и вручную добавить эластичный IP-адрес нового экземпляра (после того, как я сделал URL-адреса подкачки) в записи A в Route 53 для моего домена. - person Jordan; 26.08.2017