Инновации в размещении серверов.

Инновации в размещении серверов.

Знакомство

Я самостоятельно размещаю все, кроме электронной почты. Я писал об этом здесь, здесь или здесь. Подводя итог, можно сказать, что дома я использую кластер Proxmox на 3 узлах с несколькими сервисами, питая домашнюю сеть маршрутизатором Mikrotik, коммутаторами Mikrotik и UniFi WiFi, а также внешним VPS. Эта статья о двух вещах: почему я до сих пор беспокоюсь и чему это научило меня в последнее время. Думайте об этом как о краткой ретроспективе и поощрении читателей спуститься в ту же кроличью нору.

Мои услуги

Я сам веду:

  • PiHole в качестве DNS-преобразователя (избыточно)
  • RouterOS (возможно, немного растягивая "self-hosting", но она поддерживает DHCP, VLAN, межсетевые экраны, DNS-маршрутизацию и тому подобное)
  • UniFi controller в качестве контроллера WiFi
  • heimdall в качестве лендинга
  • 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

  • Встречи, рабочие часы, архитектурные беседы и тому подобное
  • Пишите текст забавными цветами, в наши дни обычно , , , и PythonScalagotypescriptsql
  • Работа с реальной инфраструктурой и инструментами: K8s, Terraform, Docker, VPC, EC2s, nix и другими интересными вещами
  • Возможно, связанный, посмотрите на AWS Cost Explorer или электронные таблицы
  • Присматривайте за кучей сервисов OSS, управляйте обновлениями и т.д.
  • Поддерживайте мои функции по управлению проектами в актуальном и презентабельном состоянии
  • И так далее

У меня есть некоторое разумное совпадение с задачами системного администратора, в основном потому, что я сторонник открытого программного обеспечения и, следовательно, решил использовать и размещать различные инструменты OSS как часть нашего стека данных. Хотя большая часть из них очень стабильна, иногда требуется некоторое небольшое волшебство Linux, чтобы вернуться в нужное русло.

Рассуждения о сложных системах

С учетом сказанного, относительно редко я занимаюсь тем, чтобы «залезть в случайную машину с Linux, чтобы проверить. Не говорю, что этого не происходит - просто это происходит не очень часто.sshnginx   И когда это происходит, способность рассуждать о сложных системах с помощью понимания лежащей в их основе технологии на более чем грубом поверхностном уровне чрезвычайно полезна. Самостоятельный хостинг всех этих сервисов - особенно если они позволяют вам заглянуть глубже в кроличью нору, а не просто копировать команды - научит вас многим новым вещам, которые помогут в этом.

Позвольте мне привести вам несколько примеров из реальной жизни - часто простые основы администрирования Linux могут быть полезны. Лучший способ приобрести их - это либо ежедневно ездить на Linux (лично я сейчас использую macOS)... или самостоятельное размещение и самостоятельное управление серверами. Например, знание того, что подкачка настроек редко бывает полезной, и упоминание об этом в запросах на вытягивание или знание того, что возня с LD_LIBRARY_PATH — верный путь к разочарованию. Тем не менее, полезно осознавать, что оба варианта могут быть действенным инструментом для решения неясных случаев (в последнем случае мы смешиваем, и вы можете видеть, к чему это ведет).poetrynix    Конечно, присмотр за распределенной инфраструктурой (например, 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» (и я не хочу делать это снова), но это определенно научило меня многому о том, как делается колбаса!hadoopzookeeperhdfs

zfs + Proxmox съест память и убьет ли OOM вашу VMS

Знаете ли вы, что убийства OOM были "вещью" в ? Конечно! Я работал с SAS HBA в режиме PCI passthru, и мои машины время от времени отключались, когда выполнялись оба резервных копирования Proxmox + резервные копии устройства.$currentYearTrueNAS Scale

Теперь, в качестве касательной к касательной - запуск этой конфигурации для TrueNAS также не поддерживается/не поощряется TrueNAS, который хочет работать на голом железе.

В любом случае, Proxmox, по умолчанию, использует до 50% памяти для кэша, что в сочетании с виртуальной машиной, настроенной на использование ~80%, не слишком хорошо сработало в среде с ограниченной оперативной памятью - и той, которая состоит почти исключительно из восстановленных, старых ОЗУ с других компьютеров.zfs

Но, оказывается, вы можете настроить это в настройках ядра ZFS!

1
2
echo'options zfs zfs_arc_max="8589934592"' >> /etc/modprobe.d/zfs.conf
update-initramfs -u

Это ограничение составляет 8 ГиБ.zfs

Тайна случайных сбоев (Это оборудование? Это всегда оборудование.)

Один из моих хостов Proxmox выходил из строя каждую ночь, в 23:25 и возвращался в сеть в 23:40. Вот мониторинг:

TBD [мной]

Несмотря на то, что он перезапустился автоматически, включая виртуальные машины, он, конечно, не смог расшифровать пул. Я заметил это только тогда, когда резервное копирование TimeMachine на моем Mac не удалось!zfs

Что ж, сортировка логов показала: 23:25 — это когда другой узел Proxmox создает резервную копию своей виртуальной машины на этом сервере, на одном, неизбыточном, древнем жестком диске, со значениями SMART, подобными следующим:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Error 4 occurred at disk power-on lifetime: 27469 hours (1144 days + 13 hours)
 When the command that caused the error occurred, the device was active or idle.

 After command completion occurred, registers were:
 ER ST SC SN CL CH DH
 -- -- -- -- -- -- --
045100 ff ff ff 0f

 Commands leading to the command that caused the error were:
 CR FR SC SN CL CH DH DC Powered_Up_Time Command/Feature_Name
 -- -- -- -- -- -- -- -- ---------------- --------------------
 ea 0000000000 a0 00 6d+03:38:11.728 FLUSH CACHE EXT
610008 ff ff ff 4f 00 6d+03:38:11.726 WRITE FPDMA QUEUED
610008 ff ff ff 4f 00 6d+03:38:11.726 WRITE FPDMA QUEUED
610008 ff ff ff 4f 00 6d+03:38:11.725 WRITE FPDMA QUEUED
6100 b0 ff ff ff 4f 00 6d+03:38:11.725 WRITE FPDMA QUEUED

… Что затем привело к странным тупиковым блокировкам и тому подобному, и машина перестала реагировать и была убита.

Мониторинг 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 сервис отслеживания и мониторинга, бесплатно. Ну, может быть, не все - но это восхитительно глубоко. Другими вариантами (не обязательно взаимоисключающими) являются и , с которыми я играл раньше, но никогда не придерживался их. Оказывается, это обманчиво глубокая область, и я не очень хорошо разбираюсь в ней.zabbixmunin

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. Это никогда не прерывалось, так как я позволял ему работать всю ночь. И да, я тоже выполнял всю эту отладку, учитывая ограничения простого .netcatping

Что еще более любопытно, сканирование вернуло мне 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:

1
sysbench --threads=4 --time=30 --cpu-max-prime=20000 cpu run

Понял меня

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 работать.sambacifs

В любом случае, я попробовал использовать официальный подход и немного протестировал, потому что это определенно казалось медленным.

Ну, это потому, что так оно и было. Вот три бенчмарка, два с (V3), со строгим и свободным кэшем, а также .cifssshfs

Storage Benchmark 1/2 [автор]

Вот что я использовал для проверки этого:

1
2
3
4
5
6
7
SIZE="256M"
# Sequential
fio --name=job-r --rw=read --size=$SIZE --ioengine=libaio --iodepth=4 --bs=128K --direct=1
fio --name=job-w --rw=write --size=$SIZE --ioengine=libaio --iodepth=4 --bs=128k --direct=1
# Random
fio --name=job-randr --rw=randread --size=$SIZE --ioengine=libaio --iodepth=32 --bs=4K --direct=1
fio --name=job-randw --rw=randwrite --size=$SIZE --ioengine=libaio --iodepth=32 --bs=4k --direct=1

Это тоже не новое открытие, так как я не первый, кто сравнил это.

В любом случае, это довольно медленно. Сочетание медленного протокола и межатлантической задержки не делало этот протокол особенно привлекательным.cifs

Чтобы дать вам некоторое представление, вот та же диаграмма с тем же тестом, выполненным на локальной виртуальной машине Proxmox:

Storage Benchmark 2/2 [автор]

Хранилище BLOB-объектов, рыбы-объекты и файловые системы: все это «meh»

Теперь, даже не используя «диск», это то, что делают все крутые ребята в наше время. Они просто отбрасывают почти все преимущества современного, быстрого, локального хранилища с высококачественной, проверенной, атомарной, исправляющей ошибки (...) файловой системой, получая это, не имея файловой системы, и называя это "объектным" (или "блобным") хранилищем, и не получают ни одной из этих функций, но много хранилища по дешевке!

Касательная: Поскольку мировой "blob" теперь проиндексирован, пожалуйста, запомните следующее, прежде чем стыдить беспомощную рыбу за неудачи вашей архитектуры хранения:

Бедная рыба [Наиля Латиф]

В любом случае - несмотря на недостатки, это действительно не новая концепция. В профессиональном плане я бы использовал быстрые накопители NVMe для таких вещей, как машины разработчиков, базы данных и тому подобное, обычные SSD для менее интенсивных серверов приложений и хранилища BLOB-объектов для медленного, но дешевого хранения данных и распределенных движков запросов, с дополнительным кэшированием там, где это необходимо. Большая часть моих проектов Data Platform за последние ~10 лет была основана на S3/GCS/и т.д., и часто хранила многие сотни ТиБ (если не ПиБ) данных.

Тем не менее, эти системы хранения данных не являются файловыми системами, и попытка притворяться и похожа на них, потому что они обе хранят файлы (как какая-то ненормальная, поверхностная ???? типизация) не закончится хорошо.s3zfs

Но, учитывая мои шаблоны доступа - хранение файлов и доступ к ним время от времени вручную, а не размещение базы данных на ней, точно так же, как я бы использовал медленный локальный файловый сервер на основе 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).findgrep

Видеть этот экран в течение нескольких секунд — это нормально:

Nextcloud на iOS [от меня]

Справедливости ради, это действительно проблема только на мобильных устройствах, так как все мои файлы в любом случае загружены на мой Mac.

Я все еще могу попробовать rsync.net, который стоит 12 долларов в месяц/ТБ.

КраудСек

И последнее, но не менее важное: вы помните fail2ban? Вы должны это сделать, потому что это все еще очень активный проект, который, вероятно, должен оставаться стандартной рекомендацией для простого предотвращения вторжений.

Но, настраивая новый сервер, я решил, что стоит проверить некоторые более новые инструменты, а именно CrowdSec (не путать с CrowdStrike :-) ), который описывает себя как

бесплатный, современный механизм обнаружения поведения для совместной работы в сочетании с глобальной сетью репутации IP. Он основан на философии fail2ban, но совместим с IPV6 и в 60 раз быстрее (Go против Python) (...)

Приятная особенность CrowdSec заключается в том, что, как следует из названия, шаблоны обнаружения угроз делятся (анонимно) с их сообществом, что (якобы) обеспечивает гораздо лучшее обнаружение угроз. У него также есть хаб плагинов, с «вышибалами» для различных инструментов.

Он также поставляется с аккуратным CLI, который дает вам статистику о том, что он делает:

1
cscli metrics

Который, например, скажет мне, что он забанил 33 IP-адреса для , правило для этой CVE.crowdsecurity/CVE-2019-18935

В целом, я фанат - это определенно кажется естественной эволюцией (хотя я подозреваю, что они могут сосуществовать), и до тех пор, пока компания, стоящая за ней, не использует свою пользовательскую базу в определенный момент, я буду придерживаться этого.fail2ban

Заключение

Если вы инженер-программист, я рекомендую использовать самостоятельный хостинг. Вы узнаете множество вещей через вынужденное столкновение с проблемами, с которыми вы с меньшей вероятностью столкнетесь на своей повседневной работе, что само по себе является преимуществом. Более того, я верю, что в конечном итоге вы будете использовать хотя бы некоторые из этих вещей в своей повседневной работе, при условии, что вы работаете над чем-то, отдаленно связанным с бэкендом.

Размещая что-то самостоятельно, вы также получаете разумный уровень автономии - или, по крайней мере, некоторую страховку - от корпоративной мечты всей вашей жизни - бессрочной арендованной подписки. Я думаю, это хорошо.

Оставьте заявку

Выбрать город