Несколько IP-адресов в одном экземпляре Google Compute Engine

#google-compute-engine

#google-compute-engine

Вопрос:

Я пытаюсь, чтобы мой экземпляр GCE прослушивал несколько IP-адресов (по соображениям SEO — для размещения нескольких сайтов с низким трафиком в одном экземпляре).

Конечная цель: mydomain.com указывает на IP1, myotherdomain.es указывает на IP2, экземпляр GCE будет прослушивать как IP1, так и IP2 и соответственно обслуживать содержимое.

Я добавил целевой экземпляр, указывающий на мой основной экземпляр, и мне удалось создать правило пересылки, подобное этому:

 gcloud compute forwarding-rules create another-ip --port 80 --target-instance MY_TARGET_INSTANCE_URL
  

На самом деле это создало эфемерный IP-адрес; Я пытался повысить его до статического, но превысил свою квоту (в настоящее время у меня 2 месяца бесплатной пробной версии).

Правильно ли это? Смогу ли я создать любое количество статических IP-адресов и указать их на свой единственный экземпляр после завершения пробной версии? Я также не смог найти ничего о ценах: я знаю, что IP-адрес, назначенный активному экземпляру, бесплатный, но как насчет дополнительных?

Поскольку это необходимая конфигурация для сайта, которым я управляю, я хотел бы убедиться, что он работает, прежде чем переносить все на GCE.

Ответ №1:

Вы можете получить несколько внешних IP-адресов для одного экземпляра виртуальной машины с правилами пересылки.

  1. По умолчанию виртуальной машине будет присвоен эфемерный внешний IP-адрес, вы можете повысить его до статического внешнего IP-адреса, который останется неизменным после остановки и перезапуска.
  2. Дополнительные внешние IP-адреса должны быть подключены к правилам пересылки, которые указывают на виртуальную машину. Вы также можете использовать (или продвигать) статические IP-адреса.

Команда, которую вы можете использовать:

  1. Создайте TargetInstance для вашего экземпляра виртуальной машины:

     gcloud compute target-instances create <target-instance-name> --instance <instance-name> --zone=<zone>
      
  2. Создайте правило пересылки, указывающее на TargetInstance:

     gcloud compute forwarding-rules create <forwarding-rule-name> --target-instance=<target-instance-name> --ip-protocol=TCP --ports=<ports>
      

См. раздел Переадресация протокола.

Комментарии:

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

2. Нет, вы определенно можете повысить его до статического. Нет никакой разницы для внешнего IP, используемого экземпляром виртуальной машины и правилом пересылки. Это один и тот же тип ресурса.

3. Этот метод ограничивает дополнительный IP-адрес одним протоколом TCP или UDP

4. спасибо, вы спасли мне день. просто поправка: вам не нужна (и часто не может использоваться) --ports опция при создании правила пересылки (редактировать: я также использую эту --address опцию, возможно, это прерыватель сделки, который не позволяет указывать порты)

Ответ №2:

Мне также нужны 2 статических IP-адреса для одного экземпляра Compute Engine, но квота Google этого не позволяет.

Вы можете просмотреть свои квоты с https://console.cloud.google.com/iam-admin/quotas

введите описание изображения здесь

Ответ №3:

Другой возможностью является наличие нескольких сетевых интерфейсов на виртуальной машине

Для этого требуется добавить новую сеть VPC, ip 10.130.0.0 / 20 не используется в текущей инфраструктуре и может использоваться в качестве дополнительной сети. Необходимо добавить надлежащие правила брандмауэра и надлежащие правила маршрутизации (вы можете скопировать правила по умолчанию, чтобы избежать ошибок в настройке)

Обратите внимание, что вы не можете добавить сетевой интерфейс к существующему компьютеру, вам потребуется

  • Выключите текущую машину
  • Отсоедините диск и сеть (не удаляя их !!!)
  • Создайте новый компьютер с 2 или более сетевыми картами
  • Подключите старый диск и сеть к новому компьютеру

Наконец, вам нужно будет обратить внимание на шлюз по умолчанию, классическое сетевое поведение заставит все проходить через первый сетевой интерфейс, второй будет недоступен, пока вы не измените шлюз по умолчанию и / или не создадите правильные правила маршрутизации.

Обычно у вас есть eth0 и eth1 этот пример делает eth1 доступным для служб, которые привязываются к eth1

 ip addr add 10.130.0.2/32 broadcast 10.130.0.2 dev eth1
ip link set eth1 up
ip route add 10.130.0.1 src 10.130.0.2 dev eth1
ip route add 10.130.0.1 src 10.130.0.2 dev eth1 table 100
ip route add default via 10.130.0.1 dev eth1 metric 10
ip route add default via 10.130.0.1 dev eth1 table 100
ip rule add from 10.130.0.2/32 table 100
ip rule add to 10.130.0.2/32 table 100
curl --interface eth1 ifconfig.co
curl --interface eth0 ifconfig.co
ping -I eth1 8.8.8.8
  

Вот документация, или это руководство может помочь.