Техническое обслуживание NAT - PullRequest
0 голосов
/ 19 марта 2019

У меня есть приложение Django, развернутое на AWS Lambda через Zappa, и мое приложение должно взаимодействовать с общедоступным Интернетом, поэтому мне нужно использовать экземпляр NAT.Я использую экземпляр NAT, потому что он примерно в 10 раз дешевле, чем шлюз NAT, использующий уровень бесплатного пользования.Недостатком является то, что в отличие от шлюза NAT, экземпляр NAT нуждается в реальном обслуживании, и я не уверен, какой тип обслуживания ему нужен.Я хочу узнать о том, что мне нужно сделать, чтобы мой сервер работал нормально и исправно.

Что можно сделать, чтобы убедиться в этом?

Вот моя архитектура AWS:

Все следующее находится в моем VPC.У меня есть 1 подсеть в ca-central-1a и 1 в ca-central-1b.В таблице маршрутизации обе подсети указывают на мой экземпляр NAT.У меня есть 3-я подсеть в ca-central-1b, и в таблице маршрутов она указывает на интернет-шлюз.Мой экземпляр NAT находится в ca-central-1b.

Моя группа безопасности NAT-экземпляра NATSG имеет входы HTTP и HTTPS из обеих моих подсетей в ca-central-1a и ca-central-1b и исходящие до 0.0.0.0 / 0. Должен ли я создать другой экземпляр NAT в ca-central-1a и сделать его входящим только из подсети в ca-central-1a, то есть 1 экземпляр NAT для каждой подсети?Это было бы здоровее / безопаснее?

Дополнительная информация:

Я отключил проверку Source / Dest.Это была хорошая идея?

Для своего AMI я выбрал недавнее сообщество AMI amzn-ami-vpc-nat и создал группу автоматического масштабирования, в которой есть мой экземпляр NAT.У него есть только 1 экземпляр, есть ли смысл в группе автоматического масштабирования, если в ней только 1 экземпляр? Я не уверен, что я правильно использую группу автоматического масштабирования, я просто создал ее, но не смогничего не настроил.

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Извините, @Rony Azrak за задержку ответа.Поскольку ваша задача - настроить детали экземпляра после запуска, мы предполагаем, что вы рассматриваете возможность обновления скрипта пользовательских данных, возможный способ сделать это - запустить скрипт через оболочку.
Просто нужно сохранить данный скрипт в файле .sh, скажем a.sh и выполнить его с помощью команды как
#sh a.sh.
Но это изменение будет относиться только к экземпляру, оно не будет отражено для следующего следующего экземпляра, который может быть запущен через автоматическое масштабирование, если вы его используете.
Для этого вам необходимо создать новую конфигурацию запуска с необходимой модификацией, добавив скрипт в раздел «Дополнительные сведения», поскольку существующая конфигурация запуска не может быть отредактирована.Это в конечном итоге приводит к запуску нового экземпляра.
Что касается автоматического масштабирования, мы предлагаем вам использовать автоматическое масштабирование, которое автоматизирует задачу запуска экземпляра.Это не влечет за собой дополнительную плату, которую вы платите только за ресурсы, которые вы используете.

1 голос
/ 26 марта 2019
  • Обслуживание экземпляров NAT необходимо для обновлений безопасности, групп безопасности и сбоев экземпляров.

  • Нет необходимости размещать экземпляр NAT в каждой подсети. Вы можете подключить несколько экземпляров через один экземпляр NAT. Также рекомендуется разместить экземпляр NAT в общедоступной подсети.

  • проверка источника / назначения включена по умолчанию для каждого экземпляра EC2, который показывает, что этот экземпляр должен быть источником или назначением трафика, который он отправляет или получает. Поэтому проверка источника / назначения должна быть отключена для экземпляра NAT, поскольку экземпляр NAT не является источником или местом назначения для отправки или получения трафика. Это просто действуйте в качестве промежуточного звена для отправки трафика в частные экземпляры.
    Ниже ссылка дает подробное описание отключения проверки источника / назначения

https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck

  • Установка желаемой емкости на 1 всегда сохранит ваш 1 экземпляр NAT вверх. Но проблема в том, что когда экземпляр NAT завершается, автоматическое масштабирование группа запустит соответствующий экземпляр NAT, который имеет По умолчанию источник / пункт назначения «включен». Мы должны сделать это отключить вручную, а также записи, которые были сделаны в таблице маршрутов выбор цели в качестве nat-instance-id не получит изменения и Route Таблица будет указывать на экземпляр, который был прерван. Получить Атрибут SourceDestCheck отключен для вновь запускаемого вами экземпляра NAT может запустить это из пользовательских данных экземпляра.
    Вот пример сценария оболочки.
EC2_INSTANCE_ID=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
EC2_AVAIL_ZONE=`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone`
EC2_REGION=`echo \$EC2_AVAIL_ZONE\ | sed -r 's/.{2}$//'`
echo "Region:" $EC2_REGION

aws ec2 modify-instance-attribute --instance-id $EC2_INSTANCE_ID --source-dest-check "{\"Value\": false}" --region $EC2_REGION

rc=$?; if [[ $rc != 0 ]]; then echo "Failure:" $rc; exit $rc; fi

echo "Success"
...