Ответы пользователя по тегу Amazon Web Services
  • Сколько балансировщиков лучше использовать на проекте?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Я поддержу Вадим : опишите эту инфраструктуру как код и поднимайте тестовый стенд только тогда, когда вам надо
    В идеале, да - лучше создать второй аккаунт AWS( и связать их в организацию для централизованного управления), чтобы изменениями инфраструктуры теста случайно не задеть прод.
    Подход разделения, как описывает ваш коллега, правильный(пункты дальше описывают далеко не все кейсы, так, что в голову пришло пока ответ писал):
    1. Трафик теста не пересекается с трафиком прода, что позволяет измерять нагрузку (и планировать, в том числе, расходы на инфраструктуру, у AWS вы как раз в основном за нагрузку и платите) на приложение прямо на балансировщике (если у вас все таки появится больше нагрузки и придется применять горизонтальное масштабирование - добавлять нод приложения за балансером)
    2. Трафик теста не пересекается с трафиком прода - не возникнет коллизий, "лишней" нагрузки на балансировщик, всплеска ошибок в мониторинге балансировщика из-за тестового стенда
    3. Правила на балансировщике могут быть обезличены(не иметь отношения к среде) и протестированы до внедрения в прод - важно для развития приложения
    Ответ написан
    Комментировать
  • Terraform не реагирует на изменение user_data. Что не так?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Скорее всего вот ваша проблема: https://github.com/hashicorp/terraform-provider-aw...
    если кратко: в версии 4.0 провайдера AWS для терраформа, реализовано следующее поведение: юзердату можно менять на созданном(но выключенном) инстансе и ее изменение не должно вызывать пересоздание инстанса. В документации написано что инстанс должен остановиться и стартовать, но, насколько я понимаю, у вас этого не происходит

    Предположительно, решить проблему (для триггера пересоздания ресурса) вам должно помочь добавление random ресурса https://registry.terraform.io/providers/hashicorp/... с кипером в виде результата темплейта юзердаты, и указание его в depends_on для ресурса инстанса
    Ответ написан
    Комментировать
  • Что лучше для защиты от DDOS?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    защита работала из коробки, без доп. манипуляций.

    универсальной защиты не бывает, а это значит, что или надо будет предпринимать какие-то меры на основе того, что происходит (когда настроенная защита не предотвращает ddos), или довериться профессионалам, тем же qrator и подобным, если вы возьмете их услуги. Или же смириться с достаточным уровнем защиты от сетевых атак, которые закроют условные 80% всех случаев DDOS

    решение с которого можно начать, чтобы не думать, как мне кажется, это cloudflare
    aws предоставляет достаточный уровень базовой защиты всех публичных эндпойнтов, но для более продвинутой защиты используются дополнительные сервисы, за дополнительные деньги, а еще их настраивать надо. самому.
    Ответ написан
    Комментировать
  • Как на AWS установить свою Windows?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    во первых: это возможно через import VM image
    https://docs.aws.amazon.com/vm-import/latest/userg...
    во вторых: в связи с изменением виртуального железа - винда попытается переактивироваться после импорта.
    у AWS есть свой KMS сервер и если активация по какой то причине не удастся - импорт по идее будет зафейлен.
    Впрочем, на stackoverflow люди пишут и об удачных импортах
    Для своих лицензий у AWS есть BYOL программа, но, насколько я помню, она относится только к Server продуктам, добавить свою лицензию Win10 вряд ли выйдет

    Так что легально использовать клиентские версии Windows на AWS вам вряд ли удастся, даже если импорт пройдет успешно. А нелегально - это вполне себе определенные риски, тем более что все ваши данные у AWS есть

    P.S. хочется добавить, что это мои теоретические знания о вопросе. Даже с серверными продуктами зачастую проще сделать новые образы (packer, cloud-init) чем переносить то что у вас на другом хостинге работало, поэтому я миграцией образами никогда не занимался
    Ответ написан
    Комментировать
  • Как запустить gitlab-runner?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    внимательно прочитайте https://docs.gitlab.com/runner/executors/docker_ma...
    поставили форк docker-machine?
    Ответ написан
    Комментировать
  • Как сделать итерацию по серверам в Terraform?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Vitaly Karasik
    Евгений, я хочу это сделать Terraform

    Terraform - инструмент для провижининга инфраструктуры. tf управляет ресурсами инфраструктуры и хранит их состояние в стейте для того чтобы просчитывать изменения при изменении параметров или кода
    Пользователи на ваших серверах - это уже не инфраструктура, они никак не фигурируют (и не могут без костылей) в стейте tf, а значит именно управлять ими tf не будет.
    Вы, конечно, можете использовать костыль в виде null resource запускающего просто sh\posh\cmd скрипт, который откуда то возьмет данные для подключения к вашим серверам, данные о пользователях которых надо создать
    Терраформ этим ресурсом по сути не управляет, он только выполнит\перевыполнит(по триггерам на состояние других ресурсов в tf) ваш скрипт. О небезопасности хранения учетных данных таким образом думаю не стоит напоминать.
    Аналогично вместо скрипта может быть ансибл\шеф (возможно через провайдер) или что-то другое так же запускаемое терраформом (но стейт созданных "ресурсов"=пользователей хранить будет опять же не терраформ, а значит об управлении речь не идет)
    Не надо плоскогубцами забивать гвозди. Да, в некоторых случаях это возможно сделать, но это создает больше проблем чем решает
    Кстати, намек как плоскогубцами забить гвоздь содержится в описании null_resource - ссылка выше.
    Ответ написан
    8 комментариев
  • Как восстановить Instance EC2 AWS?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Если вы хотите восстановить данные с этого инстанса - можно отключить volume и подключить его к новому инстансу, к которому вы имеете доступ
    Если это системный диск - сделайте снапшот и из снапшота создайте volume

    Восстановить доступ к вашему инстансу скорее всего не удастся, если вы не записали никуда пароль, который расшифровали тогда, когда имели доступ
    Ответ написан
    Комментировать
  • Как действовать, если SSD завис?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    попробуйте сделать с него снапшот а затем создать из снапшота новый вольюм.
    Если проблема именно в присоединении (а не в самом ebs томе) то с большой вероятностью данные вы свои получите обратно.
    p.s. не забывайте про бэкапы данных, хранящиеся вне рабочих инстансов.
    Ответ написан
    2 комментария
  • Есть ли утилита для просмотра списка файлов в ZIP на S3 бакете?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    пример:
    https://stackoverflow.com/questions/41789176/how-t...
    Если кратко алгоритм:
    1. выясняем размер размер zip файла
    2. читаем несколько байт из zip файла по известному адресу для того чтобы выяснить расположение и размер листинга файлов в zip файле
    3. читаем несколько байт из zip файла с листингом файлов
    4. создаем свой пустой zip файл вставляя туда полученные байты по нужным адресам.
    функциями работы с zip выдаем список файлов

    P.S. скрипт писал не я, но пару лет назад тоже решал подобную задачу.
    "Спасение" тут - это чтение части файла, которое позволяет S3 и знание формата zip
    В комментариях к ответу на SO написано про ограничения в размере zip в 4Гб - я не сталкивался и задачу по обходу проблемы не решал.
    Ответ написан
    5 комментариев
  • Какие Best practices по применению private zones в сервисе AWS Route53?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    1.
    не совсем ясно как организована ваша инфраструктура
    Судя по тому, что у вас есть вариант "назначить публичные IP и рулить публичными ДНС именами" - все располагается в default vpc и это не best practice.
    Рекомендуется размещать инстансы, к которым не нужен доступ из интернета (те, которые хостят ваши сервисы, обслуживающие только ваши другие сервисы в том же VPC) в приватных подсетях VPC.
    Вообще рекомендуется ВСЕ сервисы размещать в приватных подсетях а доступ из интернета к ним организовывать, используя прокси. AWS предоставляет ALB(ELB\NLB в зависимости от ваших потребностей), или же вы можете поднять свой прокси (HAProxy, NGINX или другие) на ec2 инстансе, расположенном в публичной подсети
    2.
    Route53 private zone
    Если ваши сервисы находятся в приватной подсети и вам необходимо работать с ними по DNS именам: можно регистрировать инстансы в Route53 private zone или же поднять свой приватный DNS на любом ПО которое вы умеете(в таком случае необходима перенастройка параметров VPC в котором вы работаете, чтобы все сервисы могли работать с вашим DNS)
    Так же можно использовать service discovery ПО, которое обеспечит разрешение имен DNS (например consul, но это потребует поднятия отдельного сервиса на ec2\ecs для обслуживания service discovery), или использовать service discovery предлагаемый AWS: Cloud Map - он использует route53 private zone для регистрации сервисов и разрешения имен.
    3.
    Сертификаты
    Для сервисов, которые доступны публично - ничего сложного: используйте Certificate Manager для выпуска сертификатов на ALB или же LetsEncrypt если вы используете собственное ПО для прокси
    Для сервисов, находящихся в приватных подсетях и недоступных публично:
    - Можно забить и работать без TLS - сеть приватная, защищать или не защищать общение между сервисами в приватной подсети зависит от уровня вашей паранойи.
    - ACM Private CA про который вы уже знаете
    - В случае использования service discovery ПО можно использовать функционал предлагаемый решениями для service mesh, например consul connect service mesh: ваше приложение общается с прокси консула, а тот, обеспечивая TLS между нодами, направляет трафик приложения на нужный сервис

    P.S. совершенно неясно зачем в тегах микротик
    Ответ написан
  • КАк разрешить просмотр фотографий с s3 amazon?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    это вопрос скорее по laravel -как в laravel делать так чтобы загруженный объект был доступен публично
    В рамках работы с AWS для доступа к объекту ему необходимо назначить публичный доступ
    Так же можно сгенерировать presigned url для объекта.
    Ответ написан
    Комментировать
  • Как заскедьюлить несколько задач (около 20 шт.) используя один контейнер AWS ECS?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Наиболее логичным способом в вашем случае выглядит именно container overrides и нет ничего плохого, если вы будете делать создавать клаудвотч таски через cli
    Для облегчения работы в принципе, можно использовать terraform (хотя я понимаю, что, возможно, для вас это сейчас лишняя нагрузка, но, поверьте, пригодится)
    Ответ написан
    Комментировать
  • Как диагностировать странные network проблемы на AWS серваках?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    С практически 99.9% вероятностью AWS тут совершенно ни при чем.
    1. Смотрите сетевой стек на проблемных серверах(хоть отмониторьте его что ли, вы же смотрите в мониторинг?) Например, довольно часто встречающаяся проблема - незакрывающиеся tcp close_wait. Оптимизируйте настройки сети под ваше приложение.
    2. мониторьте само приложение - что меняется в моменты залипаний. Попробуйте какой нибудь APM(NewRelic, Datadog и другие) если приложение позволит.
    Вообще, если бы у вас были данные для анализа - можно было бы что-то предполагать.
    Делайте мониторинг, если он еще не сделан. Смотрите в мониторинг.
    Ответ написан
    Комментировать
  • Что выбрать для хостинга сайтов и веб-приложений с бекендом на AWS?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Я бы переформулировал Иван Шумов: Если у тебя нет опыта настройки именно AWS сервисов - лучше за AWS не браться. Если ты конечно не готов потратить время на изучение.
    Лучше всего взять хетцнер или другую VPS где для вас всю инфраструктуру настроит хостер
    AWS этого делать за вас просто не будет и любой косяк в настройке обойдется вам в дополнительные траты
    AWS берет деньги за каждый чих. Часта ситуация когда вследствие неверной настройки ваши деньги вылетают в трубу. Поэтому бытует мнение что AWS - дорого.
    Ответ написан
    Комментировать
  • Как маленькому веб-проекту спасаться от DDoS?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Трафик у вас nginx принимает - настройте rate limiting . Для этого все равно надо будет провести анализ - какие лимиты на какие урлы для вас ок.
    Кроме этого можно настроить рейт лимитинг для одного src ip. nginx так-то штука мощная в плане возможностей и настроек защиты.

    Если вам не хочется разбираться с nginx - подключите сайт в cloudfront, в него встроены необходимые сервисы защиты, как и написал Иван Шумов . Впрочем, их тоже надо понять как правильно настроить.
    Ответ написан
    Комментировать
  • Архитектура/стек для telegram - бота, где не прав? Aws. +Метрики. Логи?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Плюсану к Иван Шумов, с небольшими добавками.
    Если пет проект - телеграм бот с описанной вами архитектурой, то не стоит городить еще один пет-проект "прометеус мониторинг" рядом. Клаудвотч для вас предоставит достаточный уровень логирования\мониторинга для бота, причем в дальнейшем его можно расширять так же сервисами AWS
    Крутить prometheus рядом, конечно, можно, но, как и упоминал Иван, это приведет к удорожанию проекта: вам необходимо будет забирать метрики исполнения функций из CloudWatch (что довольно таки дорого) и\или слать метрики\логи из лямбд напрямую в ваш прометей, что увеличит стоимость выполнения лямбды
    Я бы возложил хранение метрик и логов на cloudwatch, и решал проблемы мониторинга-логирования когда они возникнут (если вы действительно что-то не сможете клаудвотчем сделать)
    Ответ написан
  • Зависит ли формат файла 'состояния' терраформ (state) от версии aws provider?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    формат tfstate формирует терраформ, а не провайдер.
    Провайдер предоставляет вполне себе определенные записи, которые затем терраформ хранит в стейте.
    Кроме того,. апгрейд внутри одной мажорной версии 2.57 -> 2.59 вообще как правило не содержит ломающих изменений, вот если бы вы из 1.3 на 2.59 апгрейдились - действительно стоило бы беспокоиться.
    Если есть сомнения - изучайте
    https://registry.terraform.io/providers/hashicorp/...
    https://registry.terraform.io/providers/hashicorp/...
    Ответ написан
    Комментировать
  • Изменение ip адреса в EC2?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Что есть "статический публичный адрес"? При каждом создании EC2 вы получаете новый публичный адрес. Хотите менять выходной адрес вручную - велкам, Elastic IP к вашим услугам, однако, возможно, потребуется перенастройка вашего vpn решения и клиента который к нему подключается (поскольку неизвестно что за решение и как вы его настраивали).
    И, кстати говоря, в текущей формулировке никакой проблемы с aws у вас нет, ваша проблема в том что ваш трафик блокируют. Хотите решать проблему с aws - опишите проблему с aws
    Смена облака на другое, скорее всего, если и поможет, то случайно - диапазоны крупных игроков известны и могут так же как и AWS быть внесены в списки
    Ответ написан
    Комментировать
  • Как добавить удаленное хранение файла?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    ключ - это имя объекта в s3 бакете, контент которого соответствует файлу terraform.tfstate лежащему сейчас локально.
    Если у вас простой код (как на скриншоте) - можете спокойно называть ключ "terraform.tfstate"
    Если вы в одном бакете храните ключи разных частей одной инфраструктуры - сделайте логическое разделение "ec2/terraform.tfstate", "vpc/terraform.tfstate"
    вообще можете назвать хоть "123" - это просто название ключа, где терраформ будет искать стейт в будущем. Единственное ограничение - имя ключа должно соответствовать правилам именования объектов в S3
    Ответ написан
    Комментировать
  • Почему может тормозить загрузка статичных файлов на сайте для некоторых клиентов из РФ?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Не забывайте про сетевую машрутизацию(неоптимальные маршруты) и ограниченную пропускную способность в условиях усиленного использования каналов интернета на самоизоляции.
    Маршрутизация.
    Вы используете статическую точку входа в AWS которая приземляется в конкретной физической точке сети. И которая, кстати, находится точно не в России.
    Проблема наблюдается у конкретных клиентов -> с наибольшей вероятностью маршрут от клиента до вашего сервера является проблемой
    Возможные решения
    1.CDN (и да, и AWS и CloudFlare уже достаточно давно рекомендует динамику тоже через CDN гнать, гайдов куча) - трафик будет отдаваться от ближайшей точки доступной клиенту (опять же в зависимости от настроек маршрутизации конкретного провайдера до сервиса CDN - все равно могут возникать проблемы)
    2.AWS Global Accelerator - по сути примерно то же самое для вас. Трафик смаршрутизируется в ближайшую точку присутствия GA к клиенту и пойдет кратчайшим путём внутри AWS к вашему серверу. Но точек входа еще в августе в РФ не было. Сейчас не знаю.
    3.Поднять точку входа на территории РФ и заниматься передачей трафика на ваш сервис в AWS в туннеле (такое решение например у нас на проекте дало наибольшее ускорение, ни GA ни CloudFront не сравнимы, поскольку там мы вообще никак не контролируем маршруты трафика в сторону серверов AWS)

    Вам из вышеописанного может помочь или CDN с точками присутствия в РФ или своя точка присутствия в на серверах РФ в случае если трафик от клиентов идет по неоптимальному маршруту.

    Перегруженные сети
    Если же проблема в перегруженных сетях (наиболее вероятная сейчас причина) - то вам ничего не поможет.
    Ответ написан
    Комментировать