• Сeph — от «на коленке» до «production» часть 2

      (первая часть тут: https://habr.com/ru/post/456446/)


      CEPH


      Введение


      Поскольку сеть является одним из ключевых элементов Ceph, а она в нашей компании немного специфична — расскажем сначала немного о ней.
      Тут будет сильно меньше описаний самого Ceph, в основном сетевая инфраструктура. Описываться будут только сервера Ceph-а и некоторые особенности серверов виртуализации Proxmox.

      Читать дальше →
    • Сeph — от «на коленке» до «production»

      Выбор CEPH. Часть 1


      У нас было пять стоек, десять оптических свичей, настроенный BGP, пару десятков SSD и куча SAS дисков всех цветов и размеров, а ещё proxmox и желание засунуть всю статику в собственное S3 хранилище. Не то чтобы это всё было нужно для виртуализации, но раз начал использовать opensource — то иди в своём увлечении до конца. Единственное, что меня беспокоило — это BGP. В мире нет никого более беспомощного, безответственного и безнравственного, чем внутренняя маршртутизация по BGP. И я знал, что довольно скоро мы в это окунёмся.



      Задача стояла банальная — имелся CEPH, работал не очень хорошо. Надо было сделать "хорошо".
      Доставшийся мне кластер был разнородным, настроенным на скорую руку и практически не тюнингованным. Он состоял из двух групп разных нод, с одной общей сеткой выполняющей роль как cluster так и public network. Ноды были набиты четырьмя типами дисков — два типа SSD, собранными в два отдельных placement rule и два типа HDD разного размера, собранными в третью группу. Проблема с разными размерами была решена разными весами OSD.


      Саму настройку разделили на две части — тюнинг операционной системы и тюнинг самого CEPH и его настроек.

      Читать дальше →
    • Выбор моноколеса для поездок на работу



        Автор рисунка — Дед62@electrotransport.ru

        Прошла весна, настало лето, –
        Так не пора ли сделать это?

        Или еще не пора? А если пора, то какое выбрать моноколесо для поездок на работу?
        Читать дальше →
      • Живут ли базы данных в Kubernetes?



          Как-то так исторически сложилось, что IT-индустрия по любому поводу разбивается на два условных лагеря: которые «за» и которые «против». Причем предмет споров может быть абсолютно произвольным. Какая ОС лучше: Win или Linux? На смартфоне Android или iOS? Хранить все в облаках или заливать на холодные RAID-хранилища и класть винты в сейф? Имеют ли PHP-шники право называться программистами? Эти споры носят, временами, исключительно экзистенциальный характер и не имеют под собой никакой прочей, кроме спортивного интереса, базы.

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

          И, казалось бы, был бы это простой спор о двух сторонах одной медали. Такой же бессмысленный и беспощадный, как извечное противостояние Win vs Linux, в котором адекватные люди вполне себе существуют где-то посередине. Вот только в случае контейнеризации не все так просто. Обычно в таких спорах не бывает правой стороны, но в случае «применять» или «не применять» контейнеры для хранения БД все становится с ног на голову. Потому что в определённом смысле правы и сторонники и противники подобного подхода.
          Читать дальше →
        • На сцене вновь лауреаты международных конкурсов SSH и sudo. Под рукодством заслуженного дирижера Active Directory

          • Tutorial
          Исторически сложилось, что sudo права регулировались содержимым файлов из /etc/sudoers.d и visudo, а авторизация по ключам велась с использованием ~/.ssh/authorized_keys. Однако с ростом инфраструктуры возникает желание управлять этими правами централизованно. На сегодняшний день вариантов решения может быть несколько:

          • Система управления конфигурацией — Chef, Puppet, Ansible, Salt
          • Active Directory + sssd
          • Разнообразные извращения в виде скриптов и ручного редактирования файлов

          На мой субъективный взгляд, оптимальным вариантом централизованного управления является все-таки связка Active Directory + sssd. Преимущества данного подхода вот в чем:

          • Действительно Единый централизованный каталог пользователей.
          • Раздача прав sudo сводится к добавлению пользователя в определенную группу безопасности.
          • В случае различных Linux-систем возникает необходимость вводить дополнительные проверки на определение ОС при использовании систем конфигурации.

          Сегодняшняя сюита будет посвящена именно связке Active Directory + sssd для управления правами sudo и хранением ssh ключей в едином репозитории.
          Итак, зал застыл в напряженном молчании, дирижер поднял палочку, оркестр приготовился.
          Поехали.
          Читать дальше →
        • Обзор и сравнение контроллеров Ingress для Kubernetes



            При запуске кластера Kubernetes для конкретного приложения следует понимать, какие требования представляет к этому ресурсу само приложение, бизнес и разработчики. При наличии этой информации можно приступать к принятию архитектурного решения и, в частности, к выбору конкретного Ingress-контроллера, коих на сегодняшний день уже большое количество. Чтобы составить базовое представление об имеющихся вариантах без необходимости изучать множество статей/документации и т.п., мы и подготовили этот обзор, включив в него основные (production ready) Ingress-контроллеры.

            Надеемся, что он поможет коллегам в выборе архитектурного решения — по крайней мере, станет отправной точкой для получения более подробной информации и практических экспериментов. Предварительно мы изучили другие подобные материалы в сети и, как ни странно, не обнаружили ни одного более-менее полного, а главное — структурированного — обзора. Итак, заполним же этот пробел!
            Читать дальше →
          • Kubernetes 1.14: обзор основных новшеств



              Этой ночью состоится очередной релиз Kubernetes — 1.14. По сложившейся для нашего блога традиции, рассказываем о ключевых изменениях в новой версии этого замечательного Open Source-продукта.

              Информация, использованная для подготовки этого материала, взята из таблицы Kubernetes enhancements tracking, CHANGELOG-1.14 и сооветствующих issues, pull requests, Kubernetes Enhancement Proposals (KEP). UPDATE (26 марта): в блоге K8s появился и официальный анонс релиза.
              Читать дальше →
              • +29
              • 9,6k
              • 9
            • Обзор рынка моноколес 2019

                На большей части России еще лежит снег, но уже пора задуматься о том, как проводить лето. И сложно представить что-то более приятное, чем парить над тротуаром, усилием мысли перемещаясь, куда хочется. Конечно, не совсем «парить» и не совсем «усилием мысли», но ощущения от езды на моноколесе максимально близки именно к такой картине. А несколько недель, пока снег будет таять, можно потратить на выбор модели, которая порадует вас больше всего.


                Фото Московского электроклуба, источник
                Читать дальше →
              • Установка Kubernetes 1.8 Bare Metal

                В интернете написано довольно много статей по установке Kubernetes, но большинство из них базируются на kubeadm и minikube. Это, конечно, здорово, что можно легко и за пару кликов развернуть кластер, но хотелось бы иметь больше понимания из чего состоит Kubernetes. Попробую исправить эту ситуацию данным руководством.
                Читать дальше →
              • Установка HA Master Kubernetes кластера с помощью Kubespray

                • Tutorial


                Kubespray (ранее Kargo) — это набор Ansible ролей для установки и конфигурации системы оркестрации контейнерами Kubernetes. В качестве IaaS в этом случае могут выступать AWS, GCE, Azure, OpenStack или обычные виртуальные машины. Проект раньше назывался Kargo. Это проект с открытым исходным кодом и открытой моделью разработки, поэтому по желанию каждый может повлиять на его жизненный цикл.

                На Хабре уже писали об установке Kubernetes с помощью Kubeadm, но в этом способе есть значительные недостатки: он до сих пор не поддерживает мультимастер конфигураций и, порой, не очень гибкий. Kubespray, хоть и использует Kubeadm под капотом, уже имеет функционал обеспечения высокой доступности как для мастера, так и для etcd на этапе инсталляции. О его сравнении с другими актуальными методами установки Kubernetes можно почитать по ссылке https://github.com/kubernetes-incubator/kubespray/blob/master/docs/comparisons.md

                В этой статье мы создадим 5 серверов на ОС Ubuntu 16.04. В моем случае их перечень будет следующим:

                192.168.20.10 k8s-m1.me
                192.168.20.11 k8s-m2.me
                192.168.20.12 k8s-m3.me
                192.168.20.13 k8s-s1.me
                192.168.20.14 k8s-s2.me

                Добавляем их к /etc/hosts всех этих серверов, в том числе локальной системы, или же к dns-серверу. Фаервол и другие ограничения в сети этих хостов должны быть деактивированы. Кроме этого, необходимо разрешить IPv4 forwarding и каждый из хостов должен иметь свободный доступ к сети Интернет для загрузки docker-образов.
                Читать дальше →
              • Практичный Go: советы по написанию поддерживаемых программ в реальном мире

                • Перевод
                Статья посвящена лучшим практикам написания кода Go. Она составлен в стиле презентации, но без обычных слайдов. Постараемся кратко и чётко пройтись по каждому пункту.

                Для начала следует договориться, что значит лучшие практики для языка программирования. Здесь можно вспомнить слова Расса Кокса, технического руководителя Go:

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

                Таким образом, Расс различает понятия программирования и программной инженерии. В первом случае вы пишете программу для себя, во втором создаёте продукт, над которым со временем будут работать и другие программисты. Инженеры приходят и уходят. Команды растут или сокращаются. Добавляются новые функции и исправляются ошибки. Такова природа разработки программного обеспечения.
                Читать дальше →
              • Mutt, ssmtp и отправка отчетов

                  В свое время, когда меня еще не было на Хабре, эта статья была опубликована в песочнице. К сожалению, она никому не понравилась и со временем была удалена. Долго думал, что с ней делать — забить, запостить таки на Хабре или в своем блоге Записки программиста. Решил, раз она писалась для Хабра, пусть на нем и будет опубликована. Итак, под катом — статья о практике отправки отчетов по e-mail. Сейчас, перечитывая текст, понимаю, что статья — не фонтан, но может кому-нибудь пригодится.
                  Читать дальше →
                  • +4
                  • 49,8k
                  • 5
                • Заряжаем АА, ААА и другое цилиндрическое и аккумуляторное

                    На ныне покойном Geektimes есть (или был) блог Gearbest и он был (или есть) уныл. Их маркетологи зачем-то раз за разом втюхивают одни и те же телефоны и планшеты, тогда как на сайте (впрочем, как и на Ali) есть куча других отличных товаров для гиков. Поэтому, можно я поделюсь своими маленькими китайскими открытиями?



                    У меня есть дети. Дети = выброшенные батарейки. Т.е. там есть еще промежуточные звенья типа больших роботов, мечей, орущих робокошек, которые катаются по дому и мерцают как мечта эпилептика и так далее. Но все приводит к одному — выброшенным батарейкам.

                    Благодаря Алексею Надежину мы уже знаем, что лучшими по соотношению цена/емкость являются либо батарейки Ikea и Ашан, либо GP Super. Тем, собственно и жили.
                    UPD: в комментариях указали, что Алексей провел новое исследование. С учетом обновления цен до текущих, получается, что лучше выглядят батарейки Pairdeer и Lexman из Леруа Мерлен. Ну и опять же Ашан.
                    Однако, вывалив в специальный контейнер очередную порцию дохлых батареек и испытав на себе полуночный плач ярославны о том, что любимая кукла не работает, пришел к простому выводу — пора переходить на аккумуляторы. Причем, если будут аккумуляторы, неплохо бы их как-то еще и заряжать. Полез гуглить простые зарядки и тут мне открылся “о дивный новый мир”.
                    Читать дальше →
                  • Почему в Kubernetes так сложно с хранилищами?

                    • Перевод


                    Когда пришли оркестраторы контейнеров, вроде Kubernetes, подход к разработке и деплою приложений изменился кардинально. Появились микрослужбы, а для разработчика логика приложения больше не связана с инфраструктурой: создавай себе приложения и предлагай новые функции.


                    Kubernetes абстрагируется от физических компьютеров, которыми управляет. Только скажите ему, сколько надо памяти и вычислительной мощности, — и все получите. Ифраструктура? Не, не слыхали.


                    Управляя образами Docker, Kubernetes и приложения делает переносимыми. Разработав контейнерные приложения с Kubernetes, их можно деплоить хоть куда: в открытое облако, локально или в гибридную среду, — и при этом не менять код.


                    Мы любим Kubernetes за масштабируемость, переносимость и управляемость, но вот состояния он не хранит. А ведь у нас почти все приложения stateful, то есть им нужно внешнее хранилище.

                    Читать дальше →
                    • +19
                    • 9,3k
                    • 5
                  • Советы по созданию нестандартных рабочих процессов в GitLab CI

                    • Перевод
                    Прим. перев.: Оригинальную статью написал Miłosz Smółka — один из основателей небольшой польской компании Three Dots Labs, специализирующейся на «продвинутых backend-решениях». Автор опирается на свой опыт активной эксплуатации GitLab CI и делится накопленными советами для других пользователей этого Open Source-продукта. Прочитав их, мы поняли, насколько нам близки описанные им проблемы, поэтому решили поделиться предлагаемыми решениями с более широкой аудиторией.



                    На этот раз я затрону более продвинутые темы в GitLab CI. Частой задачей здесь является реализация в пайплайне нестандартных возможностей. Большинство советов специфичны для GitLab, хотя некоторые из них можно применить и к другим системам CI.
                    Читать дальше →
                    • +30
                    • 7,6k
                    • 2
                  • Как экономить свое и чужое время на собеседованиях, или немножко о заблуждениях HR

                      Очередной день начинался, как и положено зимнему дню на короткой неделе. В таск менеджер сыпались классические задачи — "я вчера отправил письмо Василию Ивановичу в Спортлото, вместо Ивана Васильевича в Лото-миллион, где написал всякое непотребное про Василия Ивановича же, сделайте так чтобы он письмо не прочитал" или "мы тут в филиале в прошлом году оптимизировали систему, вместо администратора наняли сына лучшего друга директора, за что нам друг директора принес контракт, вот только его сын утратил нашу базу вместе с новым SSD диском, купленным задешево, сделайте же нам хорошо как было".

                      Я одним ухом слушал ролик про карьерный рост, а другим — доносящийся через тонкие гипсокартонные перегородки шум от эффективного менеджера типа сова, как внезапно мне в %мессенджер% постучался незнакомый контакт.

                      TL:DR Дальше про деньги,HR, и, как всегда, поток сознания.

                      Читать дальше →
                    • Секретные хаки VS Code

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

                      image

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

                      Улучшаем внешний вид


                      1. Material Theme & Icons

                      Это прямо зверь в темах VS Code. Я думаю, что материальная тема наиболее близка к написанию ручкой на бумаге в редакторе (особенно при использовании неконтрастной темы). Ваш редактор выглядит практически гладко, переходя от встроенных инструментов к текстовому редактору.

                      Представьте себе эпическую тему в сочетании с эпическими иконами. Material Theme Icons — отличная альтернатива для замены значков VSCode по умолчанию. Большой каталог иконок плавно вписывается в тему, делая ее красивее. Это поможет легко найти файлы в проводнике.

                      image
                      Читать дальше →
                    • Генератор клиента к базе данных на Golang на основе интерфейса

                        Генератор клиента к базе данных на Golang на основе интерфейса.



                        Для работы с базами данных Golang предлагает пакет database/sql, который является абстракцией над программным интерфейсом реляционной базы данных. С одной стороны пакет включает мощную функциональность по управлению пулом соединений, работе с prepared statements, транзакциями, интерфейсом запросов к базе. С другой стороны приходится написать немалое кол-во однотипного кода в веб приложении для взаимодействия с базой данных. Библиотека go-gad/sal предлагает решение в виде генерации однотипного кода на основе описанного интерфейса.

                        Читать дальше →
                        • +12
                        • 4,5k
                        • 8
                      • Целостность данных в микросервисной архитектуре — как её обеспечить без распределенных транзакций и жёсткой связности

                          Всем привет. Как вы, возможно, знаете, раньше я все больше писал и рассказывал про хранилища, Vertica, хранилища больших данных и прочие аналитические вещи. Сейчас в область моей ответственности упали и все остальные базы, не только аналитические, но и OLTP (PostgreSQL), и NOSQL (MongoDB, Redis, Tarantool).


                          Эта ситуация позволила мне взглянуть на организацию, имеющую несколько баз данных, как на организацию, имеющую одну распределенную гетерогенную (разнородную) базу. Единую распределенную гетерогенную базу, состоящую из кучи PostgreSQL, Redis-ов и Монг… И, возможно, из одной-двух баз Vertica.


                          Работа этой единой распределенной базы порождает кучу интересных задач. Прежде всего, с точки зрения бизнеса важно, чтобы с данными, движущимися по такой базе, все было нормально. Я специально не использую здесь термин целостность, consistency, т.к. термин это сложный, и в разных нюансах рассмотрения СУБД (ACID и CAP теорема) он имеет разный смысл.


                          Ситуация с распределенной базой обостряется, если компания пытается перейти на микросервисную архитектуру. Под катом я рассказываю, как обеспечить целостность данных в микросервисной архитектуре без распределенных транзакций и жесткой связности. (А в самом конце объясняю, почему выбрал для статьи такую иллюстрацию).


                          Читать дальше →
                        • Еще один способ использования docker-compose

                          По следам статьи Docker + Laravel = ? хочу рассказать о довольно необычном способе использования утилиты docker-compose.


                          Для начала, для тех кто не знает, зачем нужен docker-compose. Это утилита, которая позволяет запускать на отдельном хосте набор связанных сервисов, запакованных в docker-контейнеры. Изначальная версия была написана на python и могла быть установлена двумя способами:

                          Читать дальше →