4

У меня есть один Эластичный IP-адрес на AWS, и я хочу использовать этот IP-адрес для маршрутизации трафика на несколько отдельных экземпляров EC2 на основе поддомена. В принципе, так же, как виртуальные хосты на сервере Apache httpd. Например:Как я могу обслуживать несколько поддоменов, используя один Эластичный IP-адрес в AWS с использованием маршрута 53?

  • example.com - ELB: xxx.xxx.xxx.xxx
  • test.example.com указывает на EC2 Instance ID 1
  • build.example.com пункт EC2 Instance ID 2

Все трафик для каждой из доменов будет передаваться в xxx.xxx.xxx.xxx, а затем на основе имени поддомена. Маршрут 53 отправит трафик на правильный экземпляр.

Я прошел через документацию по маршруту 53, и я не вижу, как это делается. Я также посмотрел на Amazon ELB, но не был уверен, что это сработает.

Кто-нибудь знает, как установить это только с помощью инструментов AWS (Route 53 и/или ELB)? Я бы предпочел не писать сценарий или использовать обратный прокси-сервер, если я могу его избежать.

Любые идеи или помощь были бы замечательными. Заранее спасибо.

+0

Эластичный IP-адрес может быть связан только с одним экземпляром EC2. Поэтому, если у вас есть два разных экземпляра EC2, для которых вам нужно перенаправить поддомены, вам понадобится 2 Эластичных IP-адреса. –

+0

Могу ли я присвоить Elastic IP домену или интернету, стоящему перед ELB, а затем получить трафик, маршрутизируемый внутри AWS через идентификаторы экземпляров или частный IP? – user3770447

+3

Не использовать ELB. Вы можете это сделать, используя nginx, HAProxy или другой балансировщик нагрузки. –

ответ

4

Вам не нужен эластичный ip для каждого сервера. Каждый сервер уже имеет IP-адрес, поэтому вы можете использовать его (если вы действительно хотите адресовать серверы по IP-адресу), но вам, скорее всего, нужно настроить cname в вашем домене для каждого сервера, а затем обратиться к серверу по имени DNS, а не по ip-адресу.

т.е .:

server1.example.com 
server2.example.com 
server3.example.com 

и т.д.

Вы делаете не необходимости использовать любой EIP-х.

Возможно, вы могли бы объяснить, почему вы думаете, что весь трафик должен идти через один IP-адрес?

Я не могу точно сказать, почему AWS ограничивает вас только 5 EIP, но я уверен, что, поскольку, если вы узнаете, что вам нужны сотни EIP, вы, вероятно, ошибаетесь, и заставляете вас просить более 5 дает им возможность открыть дискуссию с вами и помочь вам сделать это лучше.

+0

Это действительно правда, в зависимости от варианта использования. Хотя стоит отметить, что не рекомендуется записывать псевдонимы на неэластичные IP-адреса: это, как правило, плохая практика, так как любое изменение этого IP-адреса (например, остановка/запуск вашей машины) может привести к простою вашего сайта, а новые dns значение распространяется. afaik ограничения на AWS защищают пользователей от неправильной практики (как вы говорите), от увеличения счета на 10 тыс. долларов за 10 минут на случай, если вы получите взломанные или пропущенные, а также помогите AWS управлять своими ресурсами. – Tom

+0

Спасибо за отзыв. Причина, по которой я искал маршрутизацию всего трафика через один Elastic IP-адрес, была так, что мне не пришлось бы запрашивать много дополнительных EIP из Amazon, потому что, как вы говорите, если я должен это сделать, то шансы на то, что я делать неправильно. И причина, по которой я искал ссылку на идентификатор экземпляра (возможно, не была), была так, что если сервер перезагружается и экземпляр получает новый общедоступный IP-адрес и/или публичный DNS, он по-прежнему будет доступен без ручного вмешательства из себя. – user3770447

+0

Вы можете добавить небольшой скрипт в ваш процесс начальной загрузки, который обновляет запись route53 для узла с правильным IP-адресом, если вам нужно. Потребуется несколько минут для распространения dns, но если вы не перезагружаете свои экземпляры много, это не имеет большого значения. –

0

Вам понадобится 1 Эластичный IP-адрес для каждого отдельного экземпляра EC2, для которого вы хотите перенаправить трафик.

  1. Создайте запись CNAME или ALIAS на example.com и укажите ее на свой ELB.
  2. Для каждого отдельного экземпляра EC2, что вам нужно суб-домен, выполните следующие действия:
    1. Выделяют Elastic IP-адрес.
    2. Назначьте, чтобы Упругий IP-адрес для экземпляра EC2.
    3. Создайте запись A в Route 53, указывающую subdomain.example.com на этот эластичный IP-адрес.

Примечание: Так как ваши экземпляры EC2 должны быть доступны непосредственно, они должны будут находиться в публичной подсети.

+1

Спасибо Мэтт. Я пытаюсь настроить это, так что мне не нужно возвращаться в Amazon для нового Elastic IP-адреса (начальный предел 5 Elastic IP-адресов) каждый раз, когда мне нужно добавить новый сервер. Я правильно понимаю, что вы говорите, что если у меня есть 100 уникальных серверов. то мне нужно 100 уникальных Упругих IP-адресов от Amazon, чтобы они были общедоступными? – user3770447

+0

Упругие IP-адреса необходимы только в том случае, если вы хотите, чтобы ваш IP-адрес экземпляра EC2 был согласованным. Если вам нужен только общедоступный доступ, тогда также будет создан автоматически назначенный публичный IP-адрес. Однако этот IP-адрес изменится, если экземпляр остановлен и перезапущен. Использование неэластичных IP-адресов должно быть зарезервировано только для внутреннего использования. (например, dev/test servers). –