Совместимы ли AWS Lightsail и EC2 G3 для экспорта изображений? - PullRequest
0 голосов
/ 25 января 2019

Я экспортировал образ Lightsail в EC2 g2.2xlarge и g2.8xlarge, и он работал без проблем, но после того, как попробовал то же самое на экземпляре g3.8xlarge, он недоступен извне.Я использую другой образ Lightsail для использования в качестве основного хоста и экземпляра EC2 в качестве вычислительного сервера.Когда я регистрирую вывод on("error",callback) запроса http, он говорит:

{ Error: connect ECONNREFUSED ::ffff:x.y.z.w:80
    at Object._errnoException (util.js:1022:11)
    at _exceptionWithHostPort (util.js:1044:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1198:14)
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect',
  address: '::ffff:x.y.z.w',
  port: 80 }

Что я пытался решить:

  • Отключение любого Apache Tomcat: он говорит, что уже отключен (я думаю,из экспорта изображения)
  • Предварительная маршрутизация от 80 до 1024 (приложение Nodejs слушает его)
  • Ожидание проверки состояния экземпляра EC2 на 2/2 (с использованием aws sdk поверх javascript) перед попыткой сделатьлюбой запрос http.
  • Присоедините группу безопасности, которая разрешает порты 1024 и 80 и устанавливает их в любом месте (не производственный, просто тестирование) как для входящих, так и для исходящих правил.
  • Соединение SSH работает, язатем я могу устанавливать приложения из канала SSH для автоматизации, я беру его «образ» и завершаю экземпляр, а главный сервер создает новые экземпляры из этого образа (экземпляры g2 не проблема).Физически нет проблем, но что-то останавливает HTTP-запросы.

Я делаю эти шаги, чтобы переместить службу Nodejs в приложение:

  • разработать некоторый модуль в Nodejs
  • сделать снимок
  • экспортировать снимок в ec2 (дождитесь его завершения)
  • открыть консоль ec2, выбрать экспортированный AMI
  • нажать кнопку запуска (выбрать экземпляр g2, группу безопасности, ..,сгенерируйте ключи, войдите с помощью ssh)
  • установите необходимое программное обеспечение (чтобы использовать ресурсы экземпляров g2, p2, ..)
  • получите новый образ всей установленной среды (с отключением ssh, чтобы гарантировать отсутствие данныхпри этом теряется)
  • используйте свой код AMI в AWS SDK (Javascript) для создания нового экземпляра, дождитесь его запуска, дождитесь проверки обоих состояний, запустите приложение.
  • Изображение g2 для создания экземпляра g2, изображение g3 для создания экземпляра g3.

Но работает только для экземпляров g2.

Что еще мне нужно попробовать?Почему это работает нормально на экземплярах g2, но не на экземплярах g3?

  • Ubuntu 18.04 (запущено с простой Ubuntu, но все еще называется Amazon Ubuntu?)
  • Nodejs 8 (работает на 1024порт) --- Lightsail host использует expressjs для обработки входящих запросов, использует http для выполнения исходящих запросов.То же самое для экземпляра EC2.

Если это поможет:

  • Экземпляр EC2 может выполнить http-запрос к экземпляру Lightsail.
  • Экземпляр Lightsail может получить это по экспрессПрослушивание .js.
  • При первом запросе http, который Lightsail делает к EC2, выдается сообщение об ошибке выше.(экземпляр g3)
  • В экземпляре lightsail + g2 оба запроса http и прослушивание expressjs работают на обоих серверах.
  • Экземпляры EC2 были общими, а не выделенными.
  • Для запросов:Я использую POST HTTP и отдаю ему объект json.

Возможно, HTTP-запрос + экспресс-прослушивание тоже неверен?

1 Ответ

0 голосов
/ 26 января 2019

Проблема была решена переключением опции source-destination-check с консоли до того, как другой сервер попытался выполнить над ней операцию POST.

Значение по умолчанию было истинным, и это вызывало «проблему» (я думал, чтоошибка, но, похоже, я ее упустил).

...