Я экспериментирую с размещением наших экземпляров AWS EC2 за балансировщиком нагрузки. Это работает хорошо, но у меня есть проблема, которую я не знаю, как решить.
Экземпляры, находящиеся за балансировщиком нагрузки, не имеют назначенного общедоступного IP-адреса и не имеют прямого доступа к Интернету, кроме как через балансировщик нагрузки.
Проблема в том, что это означает, что я не могу обновить экземпляр с помощью yum, поскольку вы получаете следующее:
Loaded plugins: priorities, update-motd, upgrade-helper
Could not retrieve mirrorlist http://repo.eu-west-1.amazonaws.com/latest/main/mirror.list error was
12: Timeout on http://repo.eu-west-1.amazonaws.com/latest/main/mirror.list: (28, 'Connection timed out after 10000 milliseconds')
Точно так же я не могу загрузить последний код из git в экземпляр по той же причине.
Я провел поиск, но не могу найти решения. Как другие решают это? Что для этого лучше всего? Это единственный способ назначить общедоступный IP-адрес каждому экземпляру за балансировщиком нагрузки?
Вам не нужен публичный IP-адрес для каждого экземпляра, вам просто нужно предоставить этим экземплярам доступ в Интернет.
Один из методов - с Шлюз NAT но вы также можете настроить Экземпляр NAT или сверните свой собственный, назначив одному экземпляру общедоступный IP-адрес и установив там прокси-сервер (HTTP), к которому подключаются другие серверы.
@HBruijn описал, вероятно, наиболее распространенный способ сделать это.
Вы также можете использовать Системный менеджер EC2 (полная документация Вот), если все, что вам нужно, - это запускать обновления ОС. Это больше работы, но ее можно автоматизировать.
Вы по-прежнему можете назначать эластичные IP-адреса своим экземплярам временно или постоянно. Это не стандартная практика, но это способ обойти это, если вы хотите делать обновления вручную.