Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Как я сэкономил 5000 долларов дроплетом за 5 баксов

Время на прочтение7 мин
Количество просмотров7.2K

С 20 ноября 2020 года Docker начал ограничивать по количеству передач запросы к его популярному реестру Docker Hub. Это изменение затронуло всех пользователей, анонимных и бесплатных. После внедрения изменения процесс работы разработчиков по всему миру резко затормозил. Для решения проблемы многим просто было достаточно залогиниться (для залогиненных аккаунтов уровень ограничения передачи выше), однако другим потребовалось платить за сервисный аккаунт. При высоких нагрузках сервисные аккаунты могут быть дорогими.

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

Работая в Earthly, я столкнулся с этими ограничениями передачи. Для создания контейнированной сборки приходится подтягивать кучу контейнеров, и делать это часто. За пару часов мы 2-3 раза запускали наш тестовый набор, что приводило к активации ограничения передачи… и с каждым новым тестом ситуация становилась всё хуже. Возможно, это вам знакомо?

Поэтому вместо того, чтобы платить за сервисный аккаунт я настроил Pull-Through Cache, служащий посредником для всех запросов к Docker Hub. После его создания все отказы, вызванные ограничениями передачи, исчезли. Кроме того, это дешевле, чем платить за сервисный аккаунт! Чтобы сэкономить вам время, я задокументировал то, что сделал.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии16

Grafana as code, или как я перестал кликать мышкой в UI и полюбил grafonnet

Время на прочтение15 мин
Количество просмотров33K

Когда мы в Tarantool столкнулись с задачей настройки мониторинга для сдачи проекта заказчику, мы решили её с помощью grafonnet. Это библиотека для написания дашбордов Grafana с помощью кода на языке jsonnet, которая заметно облегчила нам жизнь.


Рассказ поделён на две части. В первой я делюсь нашей историей знакомства с grafonnet, причинами, по которым мы выбрали этот инструмент, и задачами, которые мы решили с его помощью. Вторая представляет собой пошаговое обучение написанию простого дашборда для Prometheus. Так что если ситуации, описанные мной в первой половине статьи, покажутся вам знакомыми, вторая позволит вам совершить первый шаг на пути к их разрешению.


Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии7

Этюд — логическая репликация для копирования баз данных PostgreSQL

Время на прочтение4 мин
Количество просмотров5.3K

Постановка задачи


От бизнеса поступила задача — необходимо регулярно сохранять копии отдельных баз данных, расположенных в разных кластерах PostgreSQL.

Упрощенно говоря — бекапить отдельные базы данных, на случай сверки или потери данных в исходных базах.



Первое и самое очевидное решение — pg_dump

Достоинства — простота решения. Штатные методы. Все отработано, документации и материалов великое множество.

Но, достоинства есть продолжения недостатков.
Во-первых: объемы дампов.
Во-вторых: и это самое неприятное, были случаи несовпадения исходной и целевой БД при восстановлении из дампа.
Возможно этот случай заслужит отдельной заметки. Как оказалось, не все так однозначно, с pg_dump

В-третьих: время, сначала на создание дампа, потом на восстановление БД из дампа.

В итоге — нужно искать другой путь копирования БД между серверами. Бизнес требовал, задача интересная.
Не факт, что решение получилось максимально эффективным и не будет изменено/улучшено. Но как этюд на тему использования возможностей PostgreSQL, идея показалась как минимум интересной.
Читать дальше →
Всего голосов 7: ↑4 и ↓3+3
Комментарии17

Удаленный доступ к IDE при помощи Projector

Время на прочтение4 мин
Количество просмотров9.2K

Как вы наверняка знаете, Swing — это фреймворк, позволяющий разрабатывать графические интерфейсы для приложений на платформе Java. IDE JetBrains используют Swing для отрисовки интерфейсов. Также Swing применяется и в других IDE на базе IntelliJ, например, в Android Studio.

IDE JetBrains и приложения на Swing — десктопные приложения, и, в целом, это плюс. Однако бывают случаи, которые требуют иного подхода (например, тонкий клиент). И именно здесь нам пригодится Projector.

Projector — это технология, с помощью которой вы запускаете IDE на базе IntelliJ либо Swing-приложения на сервере. Далее вы можете подключаться к ним откуда угодно, используя браузеры или нативные приложения.

Читать далее
Всего голосов 24: ↑24 и ↓0+24
Комментарии28

IP KVM своими руками 3.0

Время на прочтение16 мин
Количество просмотров49K
Это уже третья вариация на тему IP KVM'а, на этот раз концепт полностью пересмотрен, начнем строить нечто новенькое. Будет много интересного, не отходите от экрана. Появится еще один необычный девайс, отбросим почти все старые компоненты, вернемся обратно к родной ардуино и немножко поиграем в хакера.

Для тех, кто только что присоединился, краткое содержание предыдущих серий:

  • Первая статья
    Собирали IP KVM на Arduino и Raspberry Pi, получилось дорого и с плохим качеством видео.
  • Вторая статья
    OrangePI и Atmega16u2, поучилось дешево, но качество изображения всё также отвратительно.

И вот, наконец, в этой статье будут исправлены все минусы предыдущих. Особый упор будет сделан на максимальное снижение стоимости компонентов.
Читать дальше →
Всего голосов 20: ↑20 и ↓0+20
Комментарии17

Представляем ovpn-admin — веб-интерфейс для управления пользователями OpenVPN

Время на прочтение2 мин
Количество просмотров49K

Обслуживая большое количество проектов, мы пришли к необходимости простого управления OpenVPN (сертификатами и маршрутами для пользователей), подразумевая под этим веб-интерфейс вместо того, чтобы ходить по серверам/контейнерам и выполнять в них вручную команды. Поскольку существующие для этого решения (вроде Pritunl и OpenVPN AS) — коммерческие, несколько лет назад мы создали (и используем по сей день) свой интерфейс. Рассказываем про Open Source-проект ovpn-admin!

Читать далее
Всего голосов 66: ↑66 и ↓0+66
Комментарии42

Кто такая эта Ваша Pandora и при чем здесь Tarantool

Время на прочтение5 мин
Количество просмотров6.5K


Привет, меня зовут Иван, и я занимаюсь разработкой высоконагруженных решений на Tarantool. Я расскажу про то, как и почему мы выбрали Pandora для нагрузочного тестирования приложения на Tarantool, а также покажу пример, как ей воспользоваться.

Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии0

Обновление версий PostgreSQL, или Как не уронить базу при update?

Время на прочтение16 мин
Количество просмотров42K
Мы решили поделиться памяткой (чеклистом) нашей команды по обновлению PostgreSQL. В ней мы взяли за основу фичи, представленные в релизе официальной документации PostgreSQL, провели анализ на предмет нарушения совместимости и кому стоит обратить внимание на обновленную функциональность.

Читать дальше →
Всего голосов 58: ↑47 и ↓11+50
Комментарии19

Приглашаем на DINS DevOps EVENING (online): эволюция Prometheus и Zabbix и обработка логов Nginx в ClickHouse

Время на прочтение2 мин
Количество просмотров1.8K
Онлайн-митап состоится 26 мая в 19:00.

Вячеслав Швецов из DINS расскажет, какие процессы происходят при эволюции систем мониторинга, и подробнее остановится на архитектурных особенностях Prometheus и Zabbix. Глеб Гончаров из FunBox поделится опытом сборки логов Nginx с хранением в ClickHouse. Оба спикера приведут примеры из практики и ответят на вопросы аудитории.

Регистрируйтесь по ссылке, чтобы присоединиться.

Под катом — информация о спикерах и подробная программа.
image
Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии0

Настройка GeoIP ACL в HAProxy в два шага

Время на прочтение5 мин
Количество просмотров7.4K

Hello Planets by Augustinas Raginskis

Иногда возникает задача управления трафиком в зависимости от географического положения клиента. Возможные области применения — блокировка некоторых локаций либо перенаправление трафика на итоговый сервер в зависимости от локации клиента. Традиционно подобные вещи реализуются при помощи библиотек GeoIP компании MaxMind. В статье расскажу, как это сделать.
Читать дальше →
Всего голосов 35: ↑35 и ↓0+35
Комментарии4

Вскрываем чип гальванической развязки с крохотным трансформатором внутри

Время на прочтение7 мин
Количество просмотров37K
Мне попалось объявление о продаже крохотного чипа, обеспечивающего 5 В изолирующего питания (гальваническая развязка). Вы подаёте 5 В с одной стороны, и получаете 5 В с другой. Примечательно в нём то, что разница напряжений между этими двумя сторонами может достичь 5000 В. В чипе установлен преобразователь DC-DC и крохотный изолирующий трансформатор, поэтому между сторонами нет прямого электрического соединения. Меня потрясло, что они смогли впихнуть всё это в корпус размером меньше ногтя, поэтому я решил заглянуть внутрь.


Многие люди жалуются на контекстную рекламу, но в данном смысле она идеально подошла к моим интересам. Чип UCC12050; спецификация. Чип выдаёт 5 В, 3,3 В, 5,4 В, или 3,7 В – это можно выбрать при помощи резистора. Такие значения, как 5,4 и 3,7 В, кажутся случайными, однако они выдают дополнительные 0,4 В, благодаря чему напряжение можно регулировать LDO-регулятором [линейный регулятор напряжения, отличающийся малым падением напряжения на регулирующем элементе / прим. перев.]. Мощность у него небольшая, всего полватта.
Читать дальше →
Всего голосов 53: ↑51 и ↓2+68
Комментарии18

История одного проекта или как я 7 лет создавал АТС на базе Asterisk и Php

Время на прочтение11 мин
Количество просмотров9K

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


image

Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии12

Управление SSL-сертификатами: от хаоса на сотнях серверов к централизованному решению

Время на прочтение5 мин
Количество просмотров13K
Что может стоять за словами “крупнейшая онлайн-школа Европы”? С одной стороны, это 1 тысяча уроков в час, 10 тысяч преподавателей, 100 тысяч учащихся. А для меня, инженера инфраструктуры, это еще и 200+ серверов, сотни сервисов (микро- и не очень), доменные имена от 2-го до 6-го уровня. Везде нужен SSL и, соответственно, сертификат к нему.



По большей части мы используем сертификаты Let’s Encrypt. Их преимущества в том, что они бесплатные, а получение полностью автоматизировано. С другой стороны, у них есть особенность: короткий — всего три месяца — срок действия. Соответственно, их приходится часто обновлять. Мы пытались это как-то автоматизировать, но всё равно оставалась масса ручной работы, и постоянно что-то ломалось. Год назад мы придумали простой и надёжный метод обновления этой кипы сертификатов и с тех пор забыли о такой проблеме.
Читать дальше →
Всего голосов 17: ↑16 и ↓1+19
Комментарии26

Умный дом в контейнерах (ioBroker + Zigbee в Docker)

Время на прочтение6 мин
Количество просмотров16K

Вступление


Некоторое время пользовался несколькими стандартными реле Sonoff, управляющими светом через Google Home Mini. Но в итоге захотелось большего. Стандартного функционала не хватает, решил постепенно делать систему на чем-то более гибком. Выбрал ioBroker.

Сначала, как водится, смотрел, выбирал, проверял кусочки функционала. Когда по отдельности основное нужное заработало, начал собирать воедино. И, естественно, столкнулся с проблемами.

Основные сложности:

  • Что именно выбрать? Ведь есть много способов реализовать задуманное. И даже в выбранном решении много вариантов…
  • Нет готовых инструкций, как собрать воедино именно выбранный мной набор решений и именно в моих конфигурациях.

Что я выбрал, почему, с какими сложностями столкнулся и как их решить, и пойдет речь.

Забегая вперед, опишу, как запускал ioBroker в докере на старом ноутбуке и прокидывал в него Zigbee, чтобы взаимодействовать с датчиками Xiaomi напрямую, без шлюза. Стандартные инструкции не привожу, только свои «шишки».
Читать дальше →
Всего голосов 21: ↑20 и ↓1+19
Комментарии11

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность