Pull to refresh
-23
0

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

Send message

Wireguard для Kubernetes и удобные GUI

Reading time4 min
Views23K

Can I just once again state my love for [WireGuard] and hope it gets merged soon? Maybe the code isn't perfect, but I've skimmed it, and compared to the horrors that are OpenVPN and IPSec, it's a work of art.

Linus Torvalds, on the Linux Kernel Mailing List

Уверен, что многие уже слышали про Wireguard. Некоторые даже щупали вживую. Мне он вполне понравился в продакшене как по производительности, так и по простоте настройки. Да, там нет миллиона загадочных конфигураций на все случаи жизни как у OpenVPN и XFRM+StrongSwan в IPSEC VPN. Он прост и лаконичен как в коде, так и в конфигах. Жирным и неповоротливым он станет еще нескоро. Короче, такой позитивный вариант сценария «сжечь легаси и написать все как надо».

Я решил не писать очередной гайд «как я поставил Wireguard», а поделиться некоторыми полезными утилитами. Некоторые с очень удачным, на мой вкус GUI, что уместно для сервисов со множеством пользователей. Разберем использование этого VPN для связи между нодами в разных кластерах Kubernetes, несколько web-GUI для генерации и пару полезных ресурсов.
Total votes 19: ↑18 and ↓1+30
Comments3

Анатомия GNU/Linux

Reading time13 min
Views112K

Какое-то время назад на Хабре была небольшая волна постов на тему «Почему я [не] выбрал Linux». Как порядочный фанатик я стриггерился, однако решил, что продуктивнее что-нибудь рассказать о своей любимой системе, чем ломать копии в комментариях.

У меня сложилось впечатление, что многие пользователи GNU/Linux слабо представляют, из чего сделана эта операционная система, поэтому утверждают, что она сляпана из попавшихся под руку кусков. В то же время, архитектура большинства дистрибутивов является устоявшейся и регламентируется рядом стандартов, включая стандарт графического окружения freedesktop.org и Linux Standard Base, расширяющий стандарты Unix. Мне при знакомстве с GNU/Linux несколько лет назад для погружения не хватало простой анатомической карты типичного дистрибутива, поэтому я попробую рассказать об этом сам.

Читать далее
Total votes 161: ↑161 and ↓0+161
Comments137

Связные списки, трюки с указателями и хороший вкус

Reading time5 min
Views40K
В интервью на TED 2016 (14:10) Линус Торвальдс рассказывает о хорошем стиле программирования. В качестве примера приводит два варианта удаления элементов из односвязных списков (см. ниже). В первом варианте есть специальный случай, а в другом — нет. Линус предпочитает второй.

Его комментарий:

[...] Не надо размышлять, почему здесь нет оператора if. Важно посмотреть на задачу с другой стороны и переписать её так, чтобы особый случай исчез и стал обычным случаем, и это хороший код. — Л. Торвальдс

В качестве примера Линус показывает достаточно простой псевдокод в стиле Си. Но не даёт концептуального объяснения. Поэтому не сразу понятно, как работает косвенный указатель.
Читать дальше →
Total votes 35: ↑35 and ↓0+35
Comments66

Haproxy — программирование и конфигурирование средствами Lua

Reading time9 min
Views8.5K

Сервер Haproxy имеет встроенные средства для выполнения скриптов Lua.


Язык программирования Lua для расширения возможностей различных серверов используется очень широко. Например, на Lua можно программировать для серверов Redis, Nginx (nginx-extras, openresty), Envoy. Это вполне закономерно, так как язык программирования Lua как раз и был разработан для удобства встраивания в приложения в качестве скриптового языка.


В этом сообщении я рассмотрю варианты использования Lua для расширения возможностей Haproxy.

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments1

Кунг-фу стиля Linux: расшаривание терминала в браузере

Reading time7 min
Views11K
В заголовке этого материала уже сказано о самой главной возможности программы, о которой я хочу рассказать. Речь идёт о GoTTY. Эта программа позволяет организовывать общий доступ к приложениям командной строки через браузер. Это — простой веб-сервер, написанный на Go. Он запускает программы, не обладающие графическим пользовательским интерфейсом, и умеет так представить их данные, пользуясь сокетами, что оказывается возможным показать результаты их работы в браузере. GoTTY, кроме того, может даже позволить пользователю взаимодействовать с такими программами.



В наши дни все помешаны на безопасности. Поэтому идея о «расшаривании терминала» вполне может вас насторожить. Да и, в конце концов, кому понадобится пользоваться командной оболочкой Linux через браузер? Но сразу хочу сказать, что беспокоиться вам особо не о чем. Хотя это и возможно, а иногда и полезно, реальная ценность GoTTY заключается в возможности запуска некоторых программ, работающих в командной строке, и в выводе генерируемых ими данных в окно браузера. Вот пример использования подобной системы. Вам нужно, чтобы пользователи могли бы удалённо мониторить систему, используя утилиту top (или, если хотите, htop). Но при этом вам не нужно, чтобы пользователям приходилось бы логиниться в системе. Вам, кроме того, хотелось бы, чтобы они могли бы работать без необходимости установки ssh-клиентов. При этом устанавливать дополнительные средства мониторинга вам тоже ни к чему. Вас вполне устроят стандартные инструменты.
Читать дальше →
Total votes 20: ↑19 and ↓1+30
Comments0

RxJS и Angular: искусство отписки от уведомлений

Reading time4 min
Views9.3K

Если вы используете Angular и библиотеку RxJS, здесь вы узнаете все способы, которые вам могут понадобиться, чтобы подписываться на уведомления от объектов Observable и отписываться от них!

Мы используем RxJS во всех приложениях Angular, которые пишем. RxJS оказывает значительное влияние на поток данных в наших приложениях, их производительность и многое другое.

Чтобы избежать утечек памяти, важно вовремя отписываться от уведомлений, выпускаемых объектами Observable. В этой статье описано большинство доступных способов, с помощью которых в компонентах Angular можно отписываться от уведомлений, выпускаемых объектами Observable.

Начнем с создания демонстрационного сервиса (DummyService), которой поможет нам отслеживать устанавливаемые подписки.

Читать далее
Total votes 8: ↑5 and ↓3+4
Comments7

Новые ограничения в использовании Docker Hub и как GitLab реагировал на их ввод

Reading time5 min
Views9.9K

Ни для кого уже не новость, что начиная с 2 ноября 2020 года Docker Hub ввел ограничения на скачивание образов: для анонимных пользователей он будет равен одной сотне за шесть часов, а для авторизованных пользователей будет зависеть от уровня подписки.

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

Читать далее
Total votes 10: ↑9 and ↓1+12
Comments4

Почему Kafka такая быстрая

Reading time14 min
Views25K


За последние несколько лет в сфере архитектуры ПО произошли огромные изменения. Идея единственного монолитного приложения или даже нескольких крупных сервисов, разделяющих общий массив данных, практически стерта из умов и сердец инженеров-практиков во всем мире. Преобладающими инструментами в создании современных бизнес-ориентированных приложений стали автономные микросервисы, событийно-ориентированная архитектура и CQRS. Вдобавок быстрый рост количества подключаемых устройств (мобильных, IoT) многократно увеличивает объем событий, которые система должна оперативно обрабатывать.


В статье рассказываем, за счет чего Apache Kafka работает достаточно быстро для современных проектов.

Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments23

Nextcloud: отказоустойчивый деплой для средних компаний

Reading time12 min
Views37K


Есть очень крутой комбайн для совместного ведения проектов, LDAP-авторизацией, синхронизацией файлов с версионированием и чем-то вроде корпоративного мессенджера с видеоконференциями, которые прикрутили в последних версиях. Да, я про Nextcloud. С одной стороны, я сторонник Unix-way и четкого дробления приложений по отдельным функциям. С другой — этот продукт более чем устойчив, работает много лет в нескольких проектах без особых проблем и дополнительные свистелки особо не мешают ему работать. Если очень хочется, то туда можно прикрутить практически любую дичь. Коммьюнити живое и вполне допиливает различные плагины, которые доступны как отдельные приложения.

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

Деплоить будем в отказоустойчивом варианте для небольшой компании в 150-1000 пользователей, но для домашних пользователей тоже пригодится.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments27

Patroni и stolon инсталляция и отработка падений. Максим Милютин

Reading time32 min
Views17K


Patroni и Stolon — два наиболее известных и продвинутых решения для оркестрации PostgreSQL и обеспечения высокой доступности (автофейловера) кластеров Leader-Followers конфигурации. Однако инженеры, переходящие со старых проверенных решений (Corosync&Pacemaker) и встроенных из других СУБД, сталкиваются со сложностями в инсталляции этих инструментов и непониманием ролей каждого из компонентов. В данном мастер-классе будет рассмотрен типичный процесс инсталляции кластеров Patroni и Stolon на виртуальных машинах (не в контейнерах), а также разобрано поведение этих кластеров при различных фейлах в инфраструктуре. Весь процесс будет демонстрироваться на трёх виртуальных машинах под управлением vagrant с использованием предварительно подготовленных образов. При желании слушатель может следовать за процессом, предварительно подготовив своё окружение.

Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments2

Подробнее о тайном математическом обществе, известном под именем «Никола Бурбаки»

Reading time5 min
Views15K

Почти сто лет подряд анонимные члены группы писали книги, выражающие чистые математические мысли



Некоторые из основателей группы: Анри Картан (стоит слева), Андре Вейль (стоит второй справа) и Шолем Мандельбройт (сидит справа).

Приглашение пообщаться с членами одного из старейших тайных математических обществ Антуан Шамберт-Луар получил по телефону. «Мне сказали, что Бурбаки хотели бы встретиться со мной, чтобы обсудить возможную совместную работу», — сказал он.

Шамберт-Луар принял приглашение, и одну из недель сентября 2001 года он провёл, читая вслух математические тексты по семь часов в день, и обсуждая их с членами группы, личности которых неизвестны остальному миру.

Официально вступить в группу его не приглашали, но в последний день его пребывания ему выдали долгосрочное задание – закончить рукопись, над которой группа работала с 1975 года. Когда позднее Шамберт-Луар получил отчёт о встрече, он обратил внимание, что его отметили, как «membrifié», то есть, члена группы. С тех пор он помогает развивать почти сизифову математическую традицию, начавшуюся ещё до Второй мировой войны.
Читать дальше →
Total votes 31: ↑29 and ↓2+35
Comments21

Кунг-фу стиля Linux: мониторинг дисковой подсистемы

Reading time5 min
Views37K
Если, работая в Linux, нужно быстро взглянуть на сведения о работающих процессах — можно воспользоваться командой top, или — что немного лучше — командой htop. А как быть, если надо получить данные о состоянии дисковой подсистемы? Решить эту задачу помогут специализированные инструменты, некоторые из которых распространены далеко не так широко, как top.


Читать дальше →
Total votes 28: ↑25 and ↓3+36
Comments14

Кунг-фу стиля Linux: великая сила make

Reading time8 min
Views23K
Со временем Linux (точнее — операционная система, которую обычно называют «Linux», представляющая собой ядро Linux и GNU-инструменты) стала гораздо сложнее, чем Unix — ОС, стоящая у истоков Linux. Это, конечно, неизбежно. Но это означает, что тем, кто пользуется Linux уже давно, нужно было постепенно расширять свои знания и навыки, осваивая новые возможности. А вот на тех, кто начинает работу в Linux в наши дни, сваливается необходимость освоить систему, так сказать, за один присест. Эту ситуацию хорошо иллюстрирует пример того, как в Linux обычно осуществляется сборка программ. Практически во всех проектах используется make — утилита, которая, запуская процессы компиляции кода, пытается делать только то, что нужно. Это было особенно важно в те времена, когда компьютеру с процессором, работающим на частоте в 100 МГц, и с медленным жёстким диском, нужно было потратить целый день на то, чтобы собрать какой-нибудь серьёзный проект. Программа make, судя по всему, устроена очень просто. Но сегодня у того, кто почитает типичный файл Makefile, может закружиться голова. А во многих проектах используются дополнительные абстракции, которые ещё сильнее всё запутывают.



В этом материале я хочу продемонстрировать вам то, насколько простым может быть файл Makefile. Если вы способны создать простой Makefile, это значит, что вы сможете найти гораздо больше способов применения утилиты make, чем может показаться на первый взгляд. Примеры, которые я буду тут показывать, основаны на языке C, но дело тут не в самом языке, а в его распространённости и широкой известности. С помощью make можно, средствами командной строки Linux, собрать практически всё что угодно.
Читать дальше →
Total votes 37: ↑28 and ↓9+32
Comments20

Удобное логирование на бэкенде. Доклад Яндекса

Reading time12 min
Views18K
Что-то всегда идет не по плану. Приходится отвечать на вопросы, «Что сломалось?», «Почему тормозит?» и «Почему мы не увидели этого раньше?». На примере простого приложения Даниил Галиев zefirior из Яндекс.Путешествий показал, как отвечать на эти вопросы и какие инструменты в этом помогут. Настроим логирование, прикрутим трассировку, разложим ошибки, и все это в удобном интерфейсе.

— Давайте начинать. Я расскажу об удобном логировании и инфраструктуре вокруг логирования, которую можно развернуть, чтобы вам с вашим приложением и его жизненным циклом было удобно жить.
Читать дальше →
Total votes 15: ↑12 and ↓3+16
Comments3

Заметки про motd

Reading time3 min
Views22K

motd — message of the day, сообщение отображаемое при входе в Linux-систему (на примере Ubuntu).


Раньше файл, содержащий приветствие располагался в /etc/motd, сейчас же это набор скриптов, располагающихся в каталоге /etc/update-motd.d/:

Читать дальше →
Total votes 11: ↑10 and ↓1+12
Comments3

5 приемов и хитростей для работы с SSH и кое-что ещё

Reading time8 min
Views23K
image

В этой статье мы поговорим о полезных приемах и командах при работе с SSH. А именно:

  • Как использовать двухфакторную аутентификацию для SSH-подключений.
  • Безопасное использование «проброса ключа» (agent forwarding).
  • Завершение зависшей сессии.
  • Оставляем терминал открытым при выходе или разрыве связи.
  • Расшариваем удаленный терминал с другом (без Zoom!).
Читать дальше →
Total votes 31: ↑23 and ↓8+21
Comments7

Масштабируем WebSocket соединения на Go

Reading time21 min
Views32K
Мессенджер Авито – это:

  • 12 m уникальных пользователей в месяц;
  • Версии для всех современных платформ (Web, iOS, Android);
  • Достаточно нагруженное приложение – около 800 тысяч подключений онлайн по WebSocket (основной протокол общения с пользователями).

Александр Емелин из компании Авито — автор проекта Centrifugo — open-source сервера real-time сообщений, где основной протокол передачи данных как раз WebSocket. Сервер используется в проектах Mail.Ru (в том числе в Юле), а также во внутренних проектах Badoo, ManyChat, частично Авито и за рубежом (например, Spot.im). Сейчас сервер базируется на доступной всем Go-разработчикам библиотеке Centrifuge.

На конференции Golang Conf 2019 Александр рассказал, как команда Авито решала проблемы при работе с WebSocket — как про детали, касающиеся Go в частности, так и вообще про работу с большим количеством постоянных соединений.


Читать дальше →
Total votes 40: ↑39 and ↓1+49
Comments1

Использование недорогих 10/40 Гбит/с сетевых адаптеров с интерфейсом HP FlexibleLOM

Reading time4 min
Views15K

Для соединения пары домашних серверов мне захотелось выйти за пределы привычных 1Гбит/с и при этом сильно не переплачивать за сетевое оборудование. На известном сайте были приобретены недорогие серверные адаптеры HP 764285-B21, по сути являющиеся ОЕМ аналогами Mellanox ConnectX-3 Pro, и QSFP+ медный кабель (DAC). Эти двухпортовые адаптеры могут работать на скоростях 10 и 40 Гбит/с в режиме Ethernet портов и до 56 Гбит/с в режиме InfiniBand. Низкая цена на вторичном рынке обусловлена нестандартным интерфейсом HP FlexibleLOM, разъем которого хотя и похож на стандартный PCIe x8, но имеет иное расположение линий PCIe и поэтому может использоваться только в совместимых серверах HP. Тем не менее выход есть

Читать далее
Total votes 28: ↑28 and ↓0+28
Comments29

Настройка Minio, чтобы юзер мог работать только со своим bucket

Reading time3 min
Views33K

Minio это простое, быстрое и совместимое с AWS S3 хранилище объектов. Minio создан для размещения неструктурированных данных, таких как фотографии, видеозаписи, файлы журналов, резервные копии. В minio также поддерживается распределенный режим (distributed mode), который предоставляет возможность подключения к одному серверу хранения объектов множества дисков, в том числе расположенных на разных машинах.


Цель этого поста настроить minio так чтобы каждый юзер мог работать только со своим bucket.

Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments0

Способы и примеры внедрения утилит для проверки безопасности Docker

Reading time13 min
Views11K

Привет, Хабр!

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

В этой статье я поделюсь готовыми скриптами для внедрения нескольких утилит обеспечения безопасности Docker и инструкцией, как развернуть небольшой демо-стенд для проверки этого процесса. Материалами можно воспользоваться, чтобы поэкспериментировать с тем, как организовать процесс тестирования безопасности образов и инструкций Dockerfile. Понятно, что инфраструктура разработки и внедрения у всех разные, поэтому ниже я приведу несколько возможных вариантов.
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments2

Information

Rating
Does not participate
Registered
Activity