- PVSM.RU - https://www.pvsm.ru -

Предисловие:
Для начала нужно сказать пару слов. Во-первых, я работаю на AWS в должности Solutions Architect. Однако поскольку это мой личный проект, я запустил его на своём собственном аккаунте AWS, за который плачу без скидок сотрудникам и особых условий. Все мои идеи и взгляды при создании этого проекта были моими собственными и необязательно отражают рекомендации и инструкции моего работодателя.
Кроме того, я занялся этим проектом, чтобы достичь нескольких целей. Во-первых, я просто хотел узнать о Mastodon и о том, как настроить его небольшой собственный однопользовательский инстанс. Эта статья не является руководством по управлению сервером в продакшен-среде для тысяч пользователей. Это просто моё хобби. Тем не менее, я знаю, что многих интересуют подобные вещи, поэтому надеюсь, что информация окажется полезной.
Наконец, есть несколько провайдеров , которые платно настроят и будут управлять вашим собственным сервером Mastodon. Но это совсем другое. Мой эксперимент будет сложным и запутанным, я попытаюсь пойти своим путём и буду менять маршрут так, как мне покажется нужным. Если вы просто хотите содержать собственный сервер, то, вероятно, лучше начать с провайдеров
Я уже писал несколько постов [2] о настройке Mastodon и о том, почему остановился на той архитектуре, которую выбрал. С тех пор кое-что изменилось, но в целом архитектура осталась прежней.
t4g.small, на котором запущен Mastodon, его база данных PostgresSQL и Redis.На момент написания статьи на проект потрачено $52,74. Как видно на графике ниже, $32 из этой суммы потрачено в первый день на регистрацию доменного имени micah.social [3]. На мой взгляд, это дороговато за доменное имя, но я очень хотел его, чтобы хвастаться.

Если вычесть оплату доменного имени регистратору (которую придётся отдавать ежегодно), то я потратил $20,74 на дополнительные сервисы AWS, выходящие за рамки бесплатного тарифа и бесплатных пробных версий.

Здесь важно упомянуть, что придётся тратиться ещё и на compute. Хотя на самом деле это не совсем так. Вы видите небольшой всплеск затрат на compute в первый день, когда я экспериментировал с другим типом инстанса, но в целом я пока ничего не тратил на compute. Это связано с тем, что выбранный мной тип инстанса Graviton2 ARM based t4g.small [4] имеет бесплатную пробную версию до конца 2023 года [5] при использовании до 750 часов в месяц. Это значит, что после завершения 2023 года с моего инстанса начнут взымать почасовую оплату. Когда это произойдёт, у меня будет два варианта:

Наверно, вы заметили всплеск затрат посередине показанного выше графика. В своём посте о мониторинге [7] я говорил, что установил в инстанс Amazon CloudWatch Agent, чтобы отслеживать ключевые метрики. Однако я не смог отфильтровать все ненужные мне метрики, поэтому оказалось, что в CloudWatch отправляется полный пакет данных, что довольно дорого. Как только я понял это, то отключил агент. Разобравшись с ним, я вернулся к нему и добавил правильную конфигурацию фильтров.

Это подробный график затрат на хранилище снэпшотов EBS Snapshots. В течение месяца он рос, однако на основании моего графика бэкапов я рассчитываю, что он выровняется.
Когда я приступил к этому проекту, я искал простой способ выполнения резервного копирования данных в своём инстансе EC2. Мне хотелось чего-то простого в настройке и управлении, поэтому я решил выбрать EBS Snapshots. Я в курсе, что существуют другие, потенциально более дешёвые способы для этого. В основном меня волновало создание бэкапов для данных, хранящихся в PostgresSQL. Все статические ресурсы теперь хранятся в S3, поэтому на самом сервере находятся только кодовая база, конфигурации и база данных.
Однако мой график создания снэпшотов слегка чрезмерен для этого проекта. Сейчас я создаю снэпшоты каждый час, каждый день и каждый месяц. Ежечасные снэпшоты утилизируются через 24 часа, ежедневные через 30 дней, а ежемесячные хранятся примерно в течение двух лет. Кроме того, я выполняю резервное копирование всего тома, и даже при инкрементальных бэкапах объём может нарастать довольно быстро из-за данных, которые, скорее всего, мне не нужны.
Лучше было бы просто делать бэкапы самой базы данных PostgresSQL с похожим графиком и с правильной блокировкой базы данных, но это уже проект на будущее.

Самые существенные затраты, на данный момент сравнимые с затратами на EBS Snapshots — это расходы на S3. И с ними же сложнее всего разобраться, но я постараюсь!
Вот несколько заметок о моей настройке S3:
В целом мои затраты на хранение в S3 за первые 30 дней составили $9. Это чуть больше, чем я ожидал, и мне кажется, наверняка существуют возможности снизить эти затраты в последующих месяцах. Я передаю все свои ресурсы через Amazon CloudFront [13], имеющий щедрый бесплатный тариф [14], который пока ничего мне не стоил.
В дальнейшем я планирую контролировать всё при помощи AWS Budgets [15].

Если вы поддерживаете собственный сервер Mastodon на AWS (да и вообще что угодно на AWS), то сделайте себе одолжение и обратите внимание на AWS Budgets, настроив его под себя. Там можно настраивать различные пороговые показатели для отправки алертов на электронную почту в случае превышения бюджета на месяц. Мои настройки достаточно просты. Я установил бюджет $50 в месяц с алертом на 50% ($25), чтобы как только я потрачу $25, мне приходил алерт по почте.
На самом деле, это чуть расточительнее, чем мне бы хотелось. В идеале я бы хотел, чтобы затраты были меньше $20 (и в течение этого года так и будет, потому что пока я нахожусь для своего сервера на бесплатном тарифе). Это можно сделать, урезав хранение данных в S3 и снизив количество снэпшотов EBS Snapshots или изменив принцип их создания. Но пока на несколько месяцев я оставлю всё как есть, чтобы получить больше данных для анализа, прежде чем вносить новые изменения.
В идеальном мире было бы здорово, если бы затраты на всё это суммарно не превышали $25 в месяц. Это не сильно дороже, чем синяя галочка Twitter Blue!
Автор:
ru_vds
Источник [16]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/open-source/383877
Ссылки в тексте:
[1] хостинга: https://www.reg.ru/?rlink=reflink-717
[2] несколько постов: https://www.micahwalter.com/tag/mastodon/
[3] micah.social: https://micah.social/
[4] Graviton2 ARM based t4g.small: https://aws.amazon.com/ec2/instance-types/t4/
[5] бесплатную пробную версию до конца 2023 года: https://aws.amazon.com/ru/ec2/faqs/#t4g-instances
[6] Compute or EC2 Instance Savings Plan: https://aws.amazon.com/savingsplans/
[7] посте о мониторинге: https://www.micahwalter.com/notes-on-configuring-amazon-cloudwatch-to-monitor-my-mastodon-server/
[8] отправил issue: https://github.com/mastodon/mastodon/issues/22159
[9] Intelligent-Tiering: https://aws.amazon.com/s3/storage-classes/intelligent-tiering/
[10] Lifecycle Policy: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html
[11] Relay: https://joinfediverse.wiki/index.php?title=Fediverse_relays
[12] Amazon S3 Storage Lens: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens.html
[13] Amazon CloudFront: https://aws.amazon.com/cloudfront/
[14] щедрый бесплатный тариф: https://aws.amazon.com/blogs/aws/aws-free-tier-data-transfer-expansion-100-gb-from-regions-and-1-tb-from-amazon-cloudfront-per-month/
[15] AWS Budgets: https://aws.amazon.com/aws-cost-management/aws-budgets/
[16] Источник: https://habr.com/ru/companies/ruvds/articles/727100/?utm_source=habrahabr&utm_medium=rss&utm_campaign=727100
Нажмите здесь для печати.