Инновации в размещении серверов.
Знакомство
Я самостоятельно размещаю все, кроме электронной почты. Я писал об этом здесь, здесь или здесь. Подводя итог, можно сказать, что дома я использую кластер Proxmox на 3 узлах с несколькими сервисами, питая домашнюю сеть маршрутизатором Mikrotik, коммутаторами Mikrotik и UniFi WiFi, а также внешним VPS. Эта статья о двух вещах: почему я до сих пор беспокоюсь и чему это научило меня в последнее время. Думайте об этом как о краткой ретроспективе и поощрении читателей спуститься в ту же кроличью нору.
Мои услуги
Я сам веду:
PiHole
в качестве DNS-преобразователя (избыточно)- RouterOS (возможно, немного растягивая "self-hosting", но она поддерживает DHCP, VLAN, межсетевые экраны, DNS-маршрутизацию и тому подобное)
UniFi controller
в качестве контроллера WiFiheimdall
в качестве лендингаTrueNAS
в качестве файлового сервера (резервный)gitea
в качестве локального git-сервераwiki.js
для хранения общих знанийVS Code
в качестве редактора на основе браузера- Dev VM для общих махинаций с кодом (в противном случае Debian)
Ubuntu
mariadb
для нужд базы данныхredis
Для забывчивых потребностей в базах данныхInfluxDB
для конкретных нужд базы данных (также известных как «проекты, к которым я хочу вернуться»)LibreNMS
в качестве сетевого менеджера и пакета мониторингаCalibre Web
для электронных книг и статейKomga
для комиксовJellyfin
Для СМИ общего назначенияHomebridge
для устройств интернета (tm), которые мне не нужны
В дополнение к этому, у меня также есть внешний VPS в течение 10+ лет, на котором размещаются:
nginx
для моего сайта и этого блогаfirefoxsync-rs
, Firefox синхронизируется синхронно с Firefox (новая версия тоже!)rust
Nextcloud
Размещение файлов, календаря и контактов
Как вы можете себе представить, это может быть довольно много работы. У меня, несмотря на распространенные чувства, есть жизнь и вне компьютеров. На самом деле, я бы предпочел проводить выходные на улице (при условии, что не 90 градусов). Что иногда вступает в противоречие с хостингом всего этого.
Для тех, кто не знает: на природе! (Образец изображения из нашего сада) [мной]
Так... Зачем беспокоиться?
Почему я самостоятельно принимаю гостей
Большая часть этой статьи посвящена не только этому вопросу, но мне не нравятся кликбейты, поэтому я на самом деле отвечу на вопрос из заголовка: Две причины.
Прежде всего, мне нравится быть независимым – или, по крайней мере, насколько это возможно. По той же причине, по которой у нас есть резервное питание, почему я умею печь хлеб, консервировать продукты и вообще LARP, как бабушка, отчаянно пытающаяся прокормить своих 12 внуков, пока они больше не способны к самостоятельному передвижению. Это делает меня достаточно независимым от того, какие злые планы замышляет ваш местный житель в наши дни (подсказка: вероятно, это подписка).$MEGA_CORP
По сути, это аргумент Linux и Firefox - конкуренция - это хорошо, и свобода тоже.
Если это слишком абстрактно для вас, и о чем на самом деле эта статья, так это тот факт, что она многому вас учит, и это истина, которую я считаю самоочевидной: учиться чему-то хорошо и полезно.
Оказывается, если заставлять себя делать что-то, что вы не делаете каждый день, или совершенствоваться в том, что вы делаете время от времени, или просто учиться чему-то, что звучит весело, вы становитесь лучше в этом. Дикая концепция, я знаю.
В своей реальной работе я не сисадмин, а инженер-программист. Я работаю над большими, распределенными системами обработки данных. Я искренне презираю название «Инженер данных» (об этом в другой раз), поэтому я не буду его использовать. Но в обычный день, когда мы руководим нашими усилиями по созданию инфраструктуры данных, я бы обычно делал одно или несколько из следующих действий:$coolNetworkingStartup
- Встречи, рабочие часы, архитектурные беседы и тому подобное
- Пишите текст забавными цветами, в наши дни обычно , , , и
Python
Scala
go
typescript
sql
- Работа с реальной инфраструктурой и инструментами: K8s, Terraform, Docker, VPC, EC2s, nix и другими интересными вещами
- Возможно, связанный, посмотрите на AWS Cost Explorer или электронные таблицы
- Присматривайте за кучей сервисов OSS, управляйте обновлениями и т.д.
- Поддерживайте мои функции по управлению проектами в актуальном и презентабельном состоянии
- И так далее
У меня есть некоторое разумное совпадение с задачами системного администратора, в основном потому, что я сторонник открытого программного обеспечения и, следовательно, решил использовать и размещать различные инструменты OSS как часть нашего стека данных. Хотя большая часть из них очень стабильна, иногда требуется некоторое небольшое волшебство Linux, чтобы вернуться в нужное русло.
Рассуждения о сложных системах
С учетом сказанного, относительно редко я занимаюсь тем, чтобы «залезть в случайную машину с Linux, чтобы проверить. Не говорю, что этого не происходит - просто это происходит не очень часто.ssh
nginx
И когда это происходит, способность рассуждать о сложных системах с помощью понимания лежащей в их основе технологии на более чем грубом поверхностном уровне чрезвычайно полезна. Самостоятельный хостинг всех этих сервисов - особенно если они позволяют вам заглянуть глубже в кроличью нору, а не просто копировать команды - научит вас многим новым вещам, которые помогут в этом.
Позвольте мне привести вам несколько примеров из реальной жизни - часто простые основы администрирования Linux могут быть полезны. Лучший способ приобрести их - это либо ежедневно ездить на Linux (лично я сейчас использую macOS)... или самостоятельное размещение и самостоятельное управление серверами. Например, знание того, что подкачка настроек редко бывает полезной, и упоминание об этом в запросах на вытягивание или знание того, что возня с LD_LIBRARY_PATH
— верный путь к разочарованию. Тем не менее, полезно осознавать, что оба варианта могут быть действенным инструментом для решения неясных случаев (в последнем случае мы смешиваем, и вы можете видеть, к чему это ведет).poetry
nix
Конечно, присмотр за распределенной инфраструктурой (например, Proxmox) или написание ее с нуля также полезны для поддержки, проектирования и/или реализации других сложных распределенных систем, которые охватывают более одной концепции.
Одним из моих любимых проектов в работе является конвейер Apache Flink (сам по себе распределенный фреймворк), написанный на Scala 3, который использует наследование классов типов через magnolia и avro4s для преобразования сообщений protobuf в Apache Iceberg через Kafka (он делает немного больше, но это основы). Этот проект включал в себя, в произвольном порядке, более чем поверхностное понимание следующих концепций, которые не являются основной задачей «программирования», в дополнение к основным вещам (поскольку это , такие вещи, как финал без тегов):scala
VPC и куча сетей, Kubernetes, GRPC, семантика «точно/по крайней мере один раз», конечная согласованность, транзакционные блокировки, некоторая сборка компилятора, протобуфы и эволюция схем, Kafka (или общая репликация хранилища данных и мультитенантность), хранилище BLOB-объектов, тонна метрик и мониторинга (и, следовательно, базы данных временных рядов за неимением лучшего зонтичного термина) и так далее.
Вот фотография нашего соседского амбарного кота, чтобы вы не слишком скучали, пока мы говорим о компиляторах protobuf [мной]
Конечно, если вы достаточно опытный инженер, который раньше работал над распределенными системами, ни одна из этих тем, вероятно, не будет по своей сути новой или пугающей - но суть в том, что многие из них пересекаются со многими вещами, с которыми вы имеете дело, когда самостоятельно размещаете программное обеспечение - на самом деле, из 11 или около того пунктов, которые я упомянул: Готов поспорить, что я имел дело по крайней мере с 8 из них во время моих приключений с самостоятельным хостингом.
Наконец, как намекнул выше, я также «владею» (разве это не ужасно «корпоративное» слово в данном контексте?) несколькими инструментами с открытым исходным кодом, которые мы размещаем самостоятельно и кормим на Kubernetes, такими как Apache Superset. Параллели с тем, о чем эта статья, должны быть относительно очевидны. :-)$work
Вещи, которые сломались за последние 6 месяцев
Ладно, круто, кажется полезным. Но помните, как я говорил: «Это много работы»? Колодец. За последние 6 месяцев или около того произошли следующие события (и я не думаю, что это исчерпывающий список):
- У нас были перебои с электричеством, и ИБП, который должен был отвечать за резервное питание для сервера + домашней сети, просто... не сработало
- Из-за этого наша сеть, которая имеет единую точку отказа, была отключена, когда один сервер вышел из строя
- Мой VPS, единственный сервер, работу с которым я передал на аутсорсинг, был случайным образом отключен почти неделю
- Один из моих хостов Proxmox падал каждую ночь, в 23:25 и возвращался в сеть в 23:40
Что я узнал (или вспомнил) за последние 6 месяцев
Итак, позвольте мне вкратце рассказать о том, что я сделал за тот же период времени, частично для исправления некоторых из этих проблем, а частично из любопытства, и примерно о том, что я узнал и/или вспомнил, делая это.
Вы можете самостоятельно разместить VS Code
Это простой, но понятный вопрос: операционная часть VS Code — это то, что выполняется в браузере. Та же концепция, которая лежит в основе Codespaces GitHub, но на собственном хостинге:
Очень полезно использовать VS Code на устройстве, таком как iPad или Mac (или Windows), которому требуется компьютер с Linux. Мой работает на .Ubuntu
Полезно на iPhone? Эх... [мной]
Я наткнулся на это, задаваясь вопросом, смогу ли я сделать свой iPad Pro по завышенной цене немного более полезным. Оказывается, можно! Не говорю, что вы должны, но вы можете.
Аккумуляторы ИБП разряжаются бесшумно и быстрее, чем вы думаете
Батареи ИБП, по крайней мере, потребительские, такие как мой простой 1U Cyberpower 1500 ВА, служат всего около 3 лет. Мои, будучи 4-летними, были совершенно мертвы. Хотя я концептуально осознаю, что не все является долгоживущей электростанцией на основе лития, я не знал, что они так быстро переходят на «непригодную мощность».
Я узнал это на собственном горьком опыте после того, как меня ударили по отключениям электроэнергии и отключения электроэнергии, которые здесь довольно распространены, и, казалось бы, случайно, «интернет» отключился. Оказывается, без избыточного DNS интернет не работает.
Замена этих батарей на самом деле была довольно простой (благодаря RefurbUPS).
В настоящее время у меня есть запланированный месяц и я буду чаще тестировать свои другие, аналоговые резервные батареи.powerst -test
pwrstat [мной]
Избыточный DNS — это хороший DNS
Все мы знаем, что DNS по своей сути является избыточной, глобально распределенной и, в конечном счете, согласованной. Но на самом деле я никогда не размещал 2 DNS-кэша одновременно.
Причина, по которой я никогда этого не делал - я использую Pi-Hole, который работает . Я также использовал его в качестве DHCP-сервера, чтобы видеть, какая машина выполняет какие DNS-запросы. Так что, из соображений лени и удобства, перенос DHCP за пределы интерфейса Pi-Hole раздражал.dnsmasq
Чтобы исправить это, я использовал RouterOS (Mikrotik) для установки статических IP-адресов для каждого устройства и пула VLAN/IP, а также снова включил DHCP-сервер. Я уже делал это для недомашних VLAN, поскольку они используют публичный DNS и не используют Pi-Hole.
VLAN [мной]
Я также использовал это как возможность сопоставить диапазоны IP-адресов с физическими устройствами.
Затем я использовал это сопоставление для сопоставления имен хостов с IP-адресами с Pi-Hole:
DNS Mapping [мной]
Затем оставалось только настроить два сервера Pi-Hole в RouterOS, чтобы сделать оба сервера доступными для клиентов. Бедняжка H/A!
Поскольку мы не так часто добавляем устройства (а я добавляю в heimdall все сервисы, которым требуется DNS-имя), это работает достаточно хорошо, чтобы собирать логи Pi-Hole и вручную копировать их поверх конфигов, когда что-то меняется.
У меня в списке есть возможность разместить орбитальную синхронизацию, чтобы еще больше упростить эту задачу.
На этом этапе вы также можете принудительно использовать указанные DNS-серверы (что может быть хорошей идеей для детей или на работе) с помощью правил брандмауэра вокруг UDP-трафика порта 53. RouterOS может сделать это легко.
Raspberry PI работают под управлением ARN, Proxmox — нет
Обычно Proxmox работает только на x86.
Но этот репозиторий на GitHub подготавливает Proxmox для ARM. Из-за этого мой маленький Raspberry Pi 5 теперь является узлом Proxmox, на котором работает UniFi и один из Pi-Holes.
Не рекомендуется и не поддерживается? Уверенный! То же самое можно сказать и об использовании через USB-устройство. До сих пор работает (в пределах разумного)!zfs
Узлы Promox [от меня]
Я упоминал "Poor man's High Availability" секунду назад: забавно, но Linus Tech Tips недавно снял видео о правильных виртуальных машинах Proxmox H/A и отработке отказа. Моя настройка DNS не такая, но могла бы быть, так как у меня теперь 3 узла, благодаря моему ARM-узлу Франкенштейна. И, как говорится: трое – это кворум, детка!
Еще один небольшой побочный момент: впервые я столкнулся с "кворумами" в первые дни, когда ручная настройка и т.д. и уверенность в том, что ваш кластер может сформировать кворум, были действительно важны. Это, конечно, было сложнее, чем «просто развернуть эту работу в AWS» (и я не хочу делать это снова), но это определенно научило меня многому о том, как делается колбаса!hadoop
zookeeper
hdfs
zfs
+ Proxmox съест память и убьет ли OOM вашу VMS
Знаете ли вы, что убийства OOM были "вещью" в ? Конечно! Я работал с SAS HBA в режиме PCI passthru, и мои машины время от времени отключались, когда выполнялись оба резервных копирования Proxmox + резервные копии устройства.$currentYear
TrueNAS Scale
Теперь, в качестве касательной к касательной - запуск этой конфигурации для TrueNAS также не поддерживается/не поощряется TrueNAS, который хочет работать на голом железе.
В любом случае, Proxmox, по умолчанию, использует до 50% памяти для кэша, что в сочетании с виртуальной машиной, настроенной на использование ~80%, не слишком хорошо сработало в среде с ограниченной оперативной памятью - и той, которая состоит почти исключительно из восстановленных, старых ОЗУ с других компьютеров.zfs
Но, оказывается, вы можете настроить это в настройках ядра ZFS!
|
|
Это ограничение составляет 8 ГиБ.zfs
Тайна случайных сбоев (Это оборудование? Это всегда оборудование.)
Один из моих хостов Proxmox выходил из строя каждую ночь, в 23:25 и возвращался в сеть в 23:40. Вот мониторинг:
TBD [мной]
Несмотря на то, что он перезапустился автоматически, включая виртуальные машины, он, конечно, не смог расшифровать пул. Я заметил это только тогда, когда резервное копирование TimeMachine на моем Mac не удалось!zfs
Что ж, сортировка логов показала: 23:25 — это когда другой узел Proxmox создает резервную копию своей виртуальной машины на этом сервере, на одном, неизбыточном, древнем жестком диске, со значениями SMART, подобными следующим:
|
|
… Что затем привело к странным тупиковым блокировкам и тому подобному, и машина перестала реагировать и была убита.
Мониторинг LibreNMS [мной]
Замените диск, проблема решена. Забавно, как это работает.
$BigHardDrive
Он скажет вам, что нужно использовать только блестящие, новые, модные, дорогие диски, но человек с серверной стойкой в подвале скажет вам, что вы можете, на самом деле, повторно использовать свои древние, разнообразные аппаратные средства для абсолютно неважного резервного копирования почти без проблем!
SNMP(v3) по-прежнему крут
Я живу ненадежно благодаря напоминаниям. Одно из первых мест в моем списке было «автоматизировать картографирование сети и оповещения». Оказывается, решенная проблема, даже без современных решений для мониторинга и отслеживания от Datadog (которые, кстати, я люблю), Jaeger, Prometheus и им подобных.
Эти графики выше с разрушающегося жесткого диска? LibreNMS!
Использует протокол SNMP (Simple Network Management Protocol). Древний протокол из 80-х годов, который делает именно это: контролирует ваши данные. Я просто никогда не утруждал себя его настройкой, так как для современных глаз это своего рода загадочный протокол. Не то, чтобы я разрешал входящий трафик (для этого у нас есть ngrok), но параноидальный сисадмин - хороший сисадмин.
SNMP зависит от защищенных строк (или «строк сообщества»), которые предоставляют доступ к частям плоскостей управления устройствами. Злоупотребление SNMP может позволить неавторизованной третьей стороне получить доступ к сетевому устройству.
SNMPv3 должна быть единственной используемой версией SNMP, потому что SNMPv3 имеет возможность аутентификации и шифрования полезных нагрузок. При использовании SNMPv1 или SNMPv2 злоумышленник может прослушивать сетевой трафик для определения строки сообщества. Эта компрометация может привести к атаке «человек в центре» или повторной атаке.
…
Простого использования SNMPv3 недостаточно для предотвращения злоупотребления протоколом. Более безопасным подходом является объединение SNMPv3 с белыми списками базы управляющей информации (MIB) с использованием представлений SNMP.
https://www.cisa.gov/news-events/alerts/2017/06/05/reducing-risk-snmp-abuse
У меня все устройства (которые его поддерживают) в сети в LibreNMS, использующие самую "безопасную" версию протокола, V3.
Он делает все, что делает крутой, современный, основанный на SaaS сервис отслеживания и мониторинга, бесплатно. Ну, может быть, не все - но это восхитительно глубоко. Другими вариантами (не обязательно взаимоисключающими) являются и , с которыми я играл раньше, но никогда не придерживался их. Оказывается, это обманчиво глубокая область, и я не очень хорошо разбираюсь в ней.zabbix
munin
LibreNMS [мной]
Но мне нравятся графики и красивые дашборды.
Не доверяйте своему поставщику VPS
Мой VPS, размещенный на сервере Contabo, случайным образом вышел из строя почти на 4 дня. Вы не смогли прочитать этот блог.
Только VNC через другой IP работал. Я смог общаться со своим сервером, за который я постоянно платил с 2014 года, только через VNC. Больше ничего не работало - пинг, SSH, ничего. И я горжусь тем, что пишу подробные тикеты в службу поддержки и проверяю все, что могу, сам - на этот раз это был не DNS. :-)
Для краткой хронологии событий: Во-первых, я поднимаю заявку с изложением проблемы, включая копию конфигурации DNS.
Я воздержусь от вставки здесь дословных взаимодействий, но их ответ сводился к
Ваша проблема звучит как случай отсутствия настроенного DNS-сервера.
… Затем выполните несколько шагов для настройки DNS-серверов Google через .resolv.conf
Естественно, DNS был первым, что я проверил. Смотрите выше. Мой ответ включал еще одну копию (на этот раз скриншот) моей конфигурации DNS и дружеское замечание о том, что я не могу устанавливать пакеты, так как машина отрезана от всего, что находится за пределами их дата-центра.apt
Я попытался предложить больше идей, проведя еще немного копания. Оказалось, что я даже не смог напрямую пропинговать IP-адрес (т.е. без участия DNS). Похоже, что мой интернет-провайдер и их дата-центр не могли разговаривать.
Внешний сетевой путь говорит «нет» [мной]
А также забавное наблюдение о том, что VPS не может взаимодействовать ни с чем внешним миром. Единственная причина, по которой VNC работал, заключалась в том, что это провело бы его через другую машину в том же DC.
Пинг говорит «нет» внутри себя [мной]
93.184.215.14 – это example.org. Это никогда не прерывалось, так как я позволял ему работать всю ночь. И да, я тоже выполнял всю эту отладку, учитывая ограничения простого .netcat
ping
Что еще более любопытно, сканирование вернуло мне 207.244.240.1, который является их центром обработки данных в Миссури. Который, хотя и был доступен, был в лучшем случае недоступен извне:arp
Flakey [мной]
Все указывало на более серьезную проблему с сетью с их стороны, и мой сервер был отключен в течение 48 часов.
Через 2 дня, когда мои собственные возможности исчерпаны, машина внезапно снова в сети - в другом DC, насколько я могу судить. Я больше не вносил никаких изменений и вместо этого работал над миграцией на Hetzner (см. ниже). Я получаю это письмо:
Спасибо за ваше терпение. Мы проверили ваш VPS M SSD/ Он реагирует на запросы Ping, SSH и VNC также доступен. Поэтому мы предполагаем, что вопрос уже решен. Пожалуйста, проверьте свою сторону еще раз.
… Замечательно. Я ничего не делал (см. выше - не думаю, что смог бы!) и это внезапно работает.
Я, конечно, не прочь признать, если я что-то испортил - я делал это в этой статье и в этом блоге много-много раз, и я часто ошибаюсь с сисадминами - но на этот раз, я обещаю вам, что я не внес никаких изменений в коробку до того, как это произошло, и до того, как это волшебным образом было исправлено.
Я не ожидаю 99,999% доступности от более бюджетного VPS, и они только "рекламируют" (я использую этот термин легкомысленно - он скрыт в их Условиях и Условиях) и SLA 95%, что означает, что они допускают более 18 дней простоя в году.
(1) Провайдер гарантирует, что физическое подключение инфраструктуры объектного хранилища, пакетов веб-пространства, выделенных серверов, виртуального выделенного сервера и VPS доступно в среднем на 95% в год.
К сожалению, это взаимодействие, не обязательно само время простоя, было настолько плохим, что я полностью перестал рекомендовать Contabo и с тех пор перешел на Hetzner - и, конечно же, на мое собственное физическое оборудование, которое имело 99,995% времени безотказной работы:
Uptime [мной]
На самом деле, это, вероятно, больше похоже на 98% долгосрочной перспективы, но это требует от меня активного разрушения вещей. Делайте из этого что хотите.
Нужно действовать быстро
Поэтому я искал альтернативы. Я хотел дешевый VPS в США из-за задержки, с базовым комфортом. В конце концов, после долгих размышлений, я перешел в Hetzner, еще одну немецкую компанию, имеющую, по крайней мере, несколько североамериканских дата-центров, на их маленький VPS CPX21 за 7 долларов в месяц.
К моему большому удивлению, эта машина оказалась быстрее в бенчмарках, чем мой (номинально гораздо более мощный) Contabo VPS:
|
|
Понял меня
VPS Benchmark 1/2 [автор: я]
И
VPS Benchmark 2/2 [автор: я]
Да, синтетические бенчмарки не идеальны, но они также не совсем бессмысленны.
Опять же, делайте из этих чисел что хотите.
CIFS все еще не быстрый
К сожалению, сервер поставлялся с SSD-накопителем емкостью 80 ГБ. Это всего лишь около 29 000 3,5-дюймовых дискет! Помните, что на этом сервере работает Nextcloud, который, по своей сути, требует много места для хранения.
Мой MacBook использует 1.2/2 TB, мой кластер Proxmox имеет что-то около 50 ТБ общей емкости (справедливости ради, много избыточности), и даже мой телефон использует ~200 ГБ.
Я наткнулся на "StorageBox" от Hetzner. Классная концепция: в основном то, чем rsync.net занимается, но немецкий. По сути, вы получаете упрощенный терминал и медленный общий диск за очень небольшие деньги: ~$4/ТБ! К сожалению, нет мест в США.
Вы можете получить доступ к этим дискам через FTP, SFTP или SCP (также известный как SSH), WebDAV, различные инструменты резервного копирования и так далее.borg
В целом довольно многообещающая концепция, но как только вам нужно подключить указанный диск к серверу, чтобы сделать локальное хранилище больше и удобным для использования с помощью Nextcloud, ваши возможности несколько ограничены, и официальная документация рекомендует /. sshfs
- это действительная альтернатива, проект находится в режиме сопровождения, но я все равно его протестировал. Я полагаю, что концептуально вы могли бы заставить WebDAV работать.samba
cifs
В любом случае, я попробовал использовать официальный подход и немного протестировал, потому что это определенно казалось медленным.
Ну, это потому, что так оно и было. Вот три бенчмарка, два с (V3), со строгим и свободным кэшем, а также .cifs
sshfs
Storage Benchmark 1/2 [автор]
Вот что я использовал для проверки этого:
|
|
Это тоже не новое открытие, так как я не первый, кто сравнил это.
В любом случае, это довольно медленно. Сочетание медленного протокола и межатлантической задержки не делало этот протокол особенно привлекательным.cifs
Чтобы дать вам некоторое представление, вот та же диаграмма с тем же тестом, выполненным на локальной виртуальной машине Proxmox:
Storage Benchmark 2/2 [автор]
Хранилище BLOB-объектов, рыбы-объекты и файловые системы: все это «meh»
Теперь, даже не используя «диск», это то, что делают все крутые ребята в наше время. Они просто отбрасывают почти все преимущества современного, быстрого, локального хранилища с высококачественной, проверенной, атомарной, исправляющей ошибки (...) файловой системой, получая это, не имея файловой системы, и называя это "объектным" (или "блобным") хранилищем, и не получают ни одной из этих функций, но много хранилища по дешевке!
Касательная: Поскольку мировой "blob" теперь проиндексирован, пожалуйста, запомните следующее, прежде чем стыдить беспомощную рыбу за неудачи вашей архитектуры хранения:
Бедная рыба [Наиля Латиф]
В любом случае - несмотря на недостатки, это действительно не новая концепция. В профессиональном плане я бы использовал быстрые накопители NVMe для таких вещей, как машины разработчиков, базы данных и тому подобное, обычные SSD для менее интенсивных серверов приложений и хранилища BLOB-объектов для медленного, но дешевого хранения данных и распределенных движков запросов, с дополнительным кэшированием там, где это необходимо. Большая часть моих проектов Data Platform за последние ~10 лет была основана на S3/GCS/и т.д., и часто хранила многие сотни ТиБ (если не ПиБ) данных.
Тем не менее, эти системы хранения данных не являются файловыми системами, и попытка притворяться и похожа на них, потому что они обе хранят файлы (как какая-то ненормальная, поверхностная ???? типизация) не закончится хорошо.s3
zfs
Но, учитывая мои шаблоны доступа - хранение файлов и доступ к ним время от времени вручную, а не размещение базы данных на ней, точно так же, как я бы использовал медленный локальный файловый сервер на основе HDD, я все равно искал варианты хранения BLOB-объектов для хранения только моих данных Nextcloud.
По сути, вы можете выбрать крупных провайдеров, таких как AWS, где 1 ТБ обходится вам примерно в ~$20-24 в месяц, в зависимости от провайдера и региона.
Альтернативы третьим сторонам, которые реализуют тот же протокол, скажем, в основном Wasabi и Backblaze.s3
Wasabi взимает минимум $6,99 в месяц (это цена за ТБ) и минимум 90 дней хранения (т. е. удаление данных не помогает). Backblaze дешевле на бумаге — $6/мес/ТБ, но они взимают $0,01/ГБ исходящего трафика, что в 3 раза превышает среднемесячный объем хранимых данных, который включен в Wasabi.
Учитывая, что я потратил 35 долларов на исходящий трафик, чтобы получить свои 500 ГБ резервных копий сервера из S3 во время миграции, и после прочтения этой статьи, я выбрал Wasabi и переместил туда свои файлы:
Васаби [от меня]
А затем использовал интерфейс внешнего хранилища Nextcloud для подключения диска.
И что тут скажешь, это... завод. Он ведет себя так же, как и S3: если вам нужно перечислить много файлов или сделать что-то с большим количеством маленьких файлов, это огромная головная боль и не будет быстрым. Вот почему полуофициальной рекомендацией для удаления большого количества небольших файлов является использование политик жизненного цикла корзины.
За 6,99 доллара за ТиБ это работает нормально. Перечисление файлов в холодном кэше (например, на новом устройстве) происходит медленно, как патока, а поиск файлов полностью отдаёт вас на милость вашего индекса (по сравнению с локальным хранилищем NVMe).find
grep
Видеть этот экран в течение нескольких секунд — это нормально:
Nextcloud на iOS [от меня]
Справедливости ради, это действительно проблема только на мобильных устройствах, так как все мои файлы в любом случае загружены на мой Mac.
Я все еще могу попробовать rsync.net, который стоит 12 долларов в месяц/ТБ.
КраудСек
И последнее, но не менее важное: вы помните fail2ban
? Вы должны это сделать, потому что это все еще очень активный проект, который, вероятно, должен оставаться стандартной рекомендацией для простого предотвращения вторжений.
Но, настраивая новый сервер, я решил, что стоит проверить некоторые более новые инструменты, а именно CrowdSec
(не путать с CrowdStrike :-) ), который описывает себя как
бесплатный, современный механизм обнаружения поведения для совместной работы в сочетании с глобальной сетью репутации IP. Он основан на философии fail2ban, но совместим с IPV6 и в 60 раз быстрее (Go против Python) (...)
Приятная особенность CrowdSec заключается в том, что, как следует из названия, шаблоны обнаружения угроз делятся (анонимно) с их сообществом, что (якобы) обеспечивает гораздо лучшее обнаружение угроз. У него также есть хаб плагинов, с «вышибалами» для различных инструментов.
Он также поставляется с аккуратным CLI, который дает вам статистику о том, что он делает:
|
|
Который, например, скажет мне, что он забанил 33 IP-адреса для , правило для этой CVE.crowdsecurity/CVE-2019-18935
В целом, я фанат - это определенно кажется естественной эволюцией (хотя я подозреваю, что они могут сосуществовать), и до тех пор, пока компания, стоящая за ней, не использует свою пользовательскую базу в определенный момент, я буду придерживаться этого.fail2ban
Заключение
Если вы инженер-программист, я рекомендую использовать самостоятельный хостинг. Вы узнаете множество вещей через вынужденное столкновение с проблемами, с которыми вы с меньшей вероятностью столкнетесь на своей повседневной работе, что само по себе является преимуществом. Более того, я верю, что в конечном итоге вы будете использовать хотя бы некоторые из этих вещей в своей повседневной работе, при условии, что вы работаете над чем-то, отдаленно связанным с бэкендом.
Размещая что-то самостоятельно, вы также получаете разумный уровень автономии - или, по крайней мере, некоторую страховку - от корпоративной мечты всей вашей жизни - бессрочной арендованной подписки. Я думаю, это хорошо.