• Установка Archlinux c полным шифрованием системы и LVM на LUKS

    • Tutorial
    В данном посте вы прочитаете немного о моих странных изыскания во время вынужденного отпуска по болезни. Речь пойдёт сразу о нескольких вещах, которые не являются «best practice», но так же тоже можно! Итак, здесь будет туториал о том, как установить Archlinux(мой любимый дистр) так, чтобы:

    • без отдельного /boot (просто в /root)
    • / на lvm
    • lvm внутри luks-контейнера
    • с UEFI
    • в виртуальной машине.
    • с secure boot(«сложна», в виртуалке вряд ли получится)

    Примечательно, что зашифровано будет всё, кроме EFI system partition с единственным файлом grubx64.efi — EFI-приложением для запуска grub.

    Если заинтересовались, — добро пожаловать под кат!
    Читать дальше →
  • Кластерное хранилище в Proxmox. Часть вторая. Запуск

      Здравствуйте!

      Это вторая часть статьи о работе c кластерным хранилищем в Proxmox. Сегодня поговорим о подключении хранилища к кластеру.

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

      1. У нас есть блочное устройство, отдаваемое по сети, к которому будут иметь доступ несколько хостов одновременно. Для того, чтобы эти хосты не подрались за место на устройстве, нам нужен CLVMClustered Logical Volume Manager. Это то же самое, что LVM, только Clustered. Благодаря CLVM каждый хост имеет актуальную информацию (и может ее безопасно изменять, без риска нарушить целостность) о состоянии LVM-томов на Shared Storage. Логические тома в CLVM живут точно так же, как в обычном LVM. В логических томах находятся либо KVM-образы, либо кластерная FS.
      2. В случае с OpenVZ у нас есть логический том, на котором расположена файловая система. Одновременная работа нескольких машин с некластерной файловой системой ведет к неминуемым ошибкам в работе всего — это лебедь, рак и щука, только хуже. Файловая система обязательно должна знать о том, что она живет на общем ресурсе, и уметь работать в таком режиме.

      В качестве кластерной файловой системы мы используем Global File System 2.
      Читать дальше →
    • Словесная ролевая игра — самый старый формат полностью свободного мира в играх



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

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

        Это увлечение носит массовый характер в Америке и Европе, потому что куда интереснее сериалов и сетевых игр в правильных руках. В России это больше 25 лет был любительский «кухонный» формат, но вот уже пару лет как появились профессиональные Мастера. То есть ведущие, которые зарабатывают только этим себе на жизнь. Ранее такого извращения не наблюдалось.

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

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

          Я как-то обещал рассказать про советскую стратегическую концепцию о заправке дизельных подлодок с помощью дирижаблей. Дирижабль должен был стать мобильной базой и сразу разведпунктом. Но про это позже.

          Чтобы разобраться, как вообще такая клюква возможна, давайте сначала разберёмся, что такое дирижабль.


          Wikimedia Commons, Hindenburg disaster, 1937

          Сначала посмотрите на картинку. Это катастрофа Гинденбурга в 1937 году. Можно сказать, что именно из-за неё кончилась эра пассажирских дирижаблей. Она ужасна и прекрасна одновременно.
          Читать дальше →
        • Неубиваемый Postgresql cluster внутри Kubernetes cluster

            Если вы когда-нибудь задумывались о доверии и надежде, то скорее всего, не испытывали этого ни к чему так же сильно, как к системам управления базами данных. Ну и действительно, это же База Данных! В названии содержится весь смысл — место, где хранятся данные, основная задача ХРАНИТЬ. И что самое печальное, как всегда, однажды, эти убеждения разбиваются об останки такой одной умершей БД на 'проде'.



            И что же делать? — спросите вы. Не деплоить на сервера ничего, — отвечаем мы. Ничего, что не умеет само себя чинить, хотя бы временно, однако надежно и быстро!


            В этой статье я попробую рассказать о своем опыте настройки почти бессмертного Postgresql кластера внутри другого отказоустойчивого решения от Google — Kubernetes (aka k8s)

            Читать дальше →
          • Операторы для Kubernetes: как запускать stateful-приложения

              Проблема stateful-приложений в Kubernetes


              Конфигурация, запуск и дальнейшее масштабирование приложений и служб осуществляются просто, если речь идёт о случаях, классифицируемых как stateless, т.е. без сохранения данных. Такие сервисы удобно запускать в Kubernetes, пользуясь его стандартными API, потому что всё происходит «из коробки»: по стандартным конфигурациям, без привлечения какой-либо специфики и магии.

              Проще говоря, для запуска в кластере из контейнеров ещё пяти копий бэкенда на PHP/Ruby/Python требуется лишь 5 раз поднять новый сервер и скопировать исходники. Поскольку и исходники, и init-скрипт лежат в образе, масштабирование stateless-приложения становится совсем элементарным. Как хорошо известно любителям контейнеров и микросервисной архитектуры, сложности начинаются для приложений категории stateful, т.е. с сохранением данных, таких как базы данных и кэши (MySQL, PostgreSQL, Redis, ElasticSearch, Cassandra…). Это касается как софта, самостоятельно реализующего кворумный кластер (например, Percona XtraDB и Cassandra), так и софта, требующего отдельных управляющих утилит (такого, как Redis, MySQL, PostgreSQL…).

              Сложности возникают по той причине, что исходников и запуска сервиса становится не достаточно — нужно выполнить еще некоторые действия. Как минимум — скопировать данные и/или присоединиться к кластеру. А если точнее, то эти сервисы требуют понимания, как их правильно масштабировать, обновлять и переконфигурировать без потери данных и их временной недоступности. Учёт этих потребностей и называется «эксплуатационными знаниями» (operational knowledge).
              Читать дальше →
            • Кластер PostgreSQL высокой надежности на базе Patroni, Haproxy, Keepalived

              • Tutorial
              Привет, Хабр! Встала передо мной недавно задача: настроить максимально надежный кластер серверов PostgreSQL версии 9.6.

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

              Планируя кластер я проштудировал много статей, как из основной документации к PostgreSQL, так и различных howto, в том числе с Хабра, и пробовал настроить стандартный кластер с RepMgr, эксперементировал с pgpool.

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

              В итоге где-то (уже не вспомню точно где) нашел ссылку на прекрасный проект Zalando Patroni, и все заверте…
              Читать дальше →
            • Самая сложная программа

              • Перевод
              От переводчика: я нашел на Quora вопрос: Какую программу или код можно назвать самыми сложными из когда-либо написанных? Ответ одного из учасников был настолько хорош, что вполне тянет на статью.

              Пристегни ремни.

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

              Это программа – компьютерный червь. Червь был написан, судя по всему, между 2005 и 2010 годами. Поскольку этот червь является таким сложным, я могу дать лишь общее описание того, что он делает.
              Читать дальше →
            • Насколько хорошо ты знаешь bash?


                Пользуешься командным интерпретатором каждый день? Готов решить несколько логических задачек и узнать что-то новое? Добро пожаловать под кат.
                Читать дальше →
              • Google's Shell Style Guide (на русском)

                • Перевод
                • Tutorial

                Предисловие


                Какой Shell использовать


                Bash единственный язык shell скриптов, который разрешается использовать для исполняемых файлов.


                Скрипты должны начинаться с #!/bin/bash с минимальным набором флагов. Используйте set для установки shell опций, что бы вызов вашего скрипта как bash <script_name> не нарушил его функциональности.


                Ограничение всех shell скриптов до bash, дает нам согласованный shell язык, который установлен на всех наших машинах.


                Единственное исключение составляет если вы ограничены условиями того под что вы программируете. Одним из примеров могут стать пакеты Solaris SVR4, для которых требуется использование обычного Bourne shell для любых скриптов.


                Когда использовать Shell


                Shell следует использовать только для небольших утилит или простых скрптов-оберток.


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

                Читать дальше →
                • +29
                • 9,8k
                • 9
              • Настройка ISCSI initiator в linux

                  Abstract: как работает open-iscsi (ISCSI initiator в linux), как его настраивать и чуть-чуть про сам протокол ISCSI.

                  Лирика: В интернете есть множество статей довольно хорошо объясняющих, как настроить ISCSI target, однако, почему-то, практически нет статей про работу с инициатором. Не смотря на то, что target технически сложнее, административной возни с initiator больше — тут больше запутанных концепций и не очень очевидные принципы работы.

                  ISCSI


                  Перед тем, как рассказать про ISCSI — несколько слов о разных типах удалённого доступа к информации в современных сетях.

                  NAS vs SAN

                  Существует два метода доступа к данным, находящимся на другом компьютере: файловый (когда у удалённого компьютера запрашивают файл, а какими файловыми системами это сделано — никого не волнует), характерные представители NFS, CIFS (SMB); и блочный — когда у удалённого компьютера запрашивают блоки с дискового носителя (аналогично тому, как их читают с жёсткого диска). В этом случае запрашивающая сторона сама себе делает на блочном устройстве файловую систему, а сервер, отдающий блочное устройство, знать не знает про файловые системы на нём. Первый метод называют NAS (network attached storage), а второй — SAN (storage area network). Названия вообще указывают на другие признаки (SAN подразумевает выделенную сеть до хранилищ), но так сложилось, что NAS — это файлы, а SAN — это блочные устройства по сети. И хотя все (?) понимают, что это неправильные названия, чем дальше, тем больше они закрепляются.
                  Читать дальше →
                • Считаем кур, пока их не заклевали

                  • Перевод
                  Эта история началась с короткой статьи в New York Times о Люке Робитейле, 13-летнем школьнике из Юлесса, штат Техас, который выиграл Raytheon Mathcounts National Competition, правильно ответив на следующий вопрос:
                  В амбаре кружком сидят 100 кур. Каждая из кур случайным образом клюёт свою ближайшую соседку слева или справа. Каково ожидаемое количество кур, которых никто не клюнул?
                  Судя по статье Times, Робитейлу потребовалось на ответ меньше секунды.

                  На следующий день Джордан Элленберг твитнул такую задачу:

                  Text of Ellenberg's tweet: 100 chicks in a circle. Each pecks R or L at random. Pecked chicks don't peck. Iterate until no two unpecked chicks adjacent. How many left?

                  «100 кур сидят в круге. Каждая клюёт случайным образом R или L. Клюнутые куры никого не клюют. Итерации проводятся до тех пор, пока не останется двух соседних неклюнутых кур. Сколько кур осталось?»

                  Мне не нужно умещать эту историю в 140 символов, поэтому я дополню вопрос Элленберга подробностями так, как я его понял. Исходная задача относилась к одной итерации синхронизированного случайного клевания, а теперь у нас есть несколько итераций. Во время одной итерации каждая курица случайным образом поворачивается влево или вправо и клюёт одну из своих соседок. Однако если курицу уже клюнули, она больше никогда не клюёт, даже её продолжают клевать. Если две соседние курицы клюют друг друга в одной итерации, обе они вылетают из игры на все последующие раунды. Если неклюнутая курица оказывается между двумя клюнутыми, её уже никогда не клюнут и поэтому она может клевать бесконечно. Вопрос заключается в том, какая часть кур выживет и станет «неуязвимыми»?

                  Ниже представлены спойлеры, так что сейчас вы можете попробовать ответить на вопрос сами. Пока вы этим занимаетесь, я немного поговорю о курах и о риторике и семиотике математических «текстовых задач».
                  Читать дальше →
                • Исландия: остров штормов



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

                    Каждый раз как на новую планету.

                    Когда мы взлетали из Кефлавика, из-за сильного ветра мимо окна пролетел один из конусов ограждения. Капитан самолёта тоже его заметил и сразу обратился к пассажирам:
                    — Сейчас мы начнём взлетать. Будет трясти. Пожалуйста, кричите тише.
                    Да, тут всё в духе Firefly.
                    Читать дальше →
                  • Где больше платят программистам. Сравниваем 22 страны

                      Пару месяцев назад я постила сводную таблицу-сравнение под названием «Лучшая страна для программиста». В ней было 9 стран. Статья была горячо воспринята и в силу некоторых ошибок в ней, и в силу желания читателей получить сходные данные по другим странам. Я обещала доделать таблицу. Сказано – сделано.

                      В этой статье 22 страны сравниваются по следующим параметрам:

                      1. Зарплаты программистов
                      2. Налоги
                      3. Стоимость жизни (аренда жилья, коммунальные услуги, продукты, транспортные расходы)
                      4. Развитость рынка IT
                      5. Социальное обеспечение
                      Читать дальше →
                    • Не пельменем единым жив программист или история о том, как все успеть

                      • Tutorial
                      image

                      По заявкам трудящихся и в связи с переносом — возвращаю пост, который многих порадовал. Надеюсь НЛО будет не против.

                      На написание этого поста меня сподвиг замечательный пост «За что конкретно я ненавижу некоторых отдельно взятых маркетологов — или как айтишник по магазинам ходил». Сразу хочу извиниться за возможные опечатки — пишу с планшета, сидя в микроавтобусе и вытягивая сеть телефоном. Hacker's keyboard очень удобен для ssh-доступа, но большие тексты писать им не очень удобно.

                      IT- специалисты — народ любопытный. То соберут на базе микроконтроллеров автоматическую систему полива и освещения для любимого фикуса, то пропатчат прошивку мультиварки для раздачи торрентов. Но, по непонятной и загадочной причине, когда дело доходит до еды, пресловутый принцип DIY дает сбой. И наш герой, способный часами переделывать кинескоп старого телевизора в Луч Смерти, идет на кухню утолить голод соевым текстуратом пополам с гидроцеллюлозой и «коллагеновым сырьем».

                      В этом посте я хочу разрушить миф о том, что еда может быть либо быстрой и удобной, либо съедобной. Не секрет, что многим из нас приходится работать по 12 часов в сутки, что не способствует кулинарным подвигам с участием 28 приправ и перьев с зада дракона, омытых слезами единорога. Вы получите замечательную возможность посмотреть в глаза своей половинки на 8 марта после того, как она получит не контроллер для дистанционного управления шторой, а свежевыпеченный хлеб ручной работы рано утром. Если вам надоело есть синтетику — добро пожаловать под hubracut.
                      Читать дальше →
                    • Настройка BGP для обхода блокировок, версия 2, «не думать»

                      • Tutorial

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


                      Поэтому здесь я приведу сжатую пошаговую инструкцию, как обходить блокировки, если у вас есть:


                      • линукс-машина (ubuntu) вне поля блокировок;
                      • роутер Mikrotik, на который вы уже подняли VPN-туннель до этой линукс-машины;
                      • настроенный NAT на этом туннеле, позволяющий вам работать через него;
                      • желание.

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


                      Те, кто уже всё сделал по мотивам предыдущего поста, в этом полезной информации не почерпнут.

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

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

                        image
                        Читать дальше →
                      • Pritunl — VPN-сервер для себя и друзей за 10 минут


                          В связи с последними событиями в России хочу рассказать вам о классном self-hosted VPN-сервере. После простой установки, без особого труда и углубленных знаний вы сможете создавать пользователей, генерировать VPN-профили и смотреть графики использования сети.


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


                          В результате чего пятидоллоравая VPS'ка может превратится в мощный инструмент обхода блокировок

                          Читать дальше →
                        • Kubernetes-HA. Разворачиваем отказоустойчивый кластер Kubernetes c 5 мастерами

                          Здравствуйте!

                          В данной публикации я хотел бы рассказать о кластере Kubernetes с высокой доступностью (HA).

                          image

                          Оглавление:

                          1. Вступление
                          2. Список используемого софта
                          3. Список и назначение хостов
                          4. Принцип работы и развертывания
                          5. Подготовка ОС к развертыванию. Установка docker, kubeadm, kubelet и kubectl
                          6. Подготовка конфигурационного скрипта
                          7. Создание etcd кластера
                          8. Инициализация мастера с помощью kubeadm
                          9. Настройка CIDR
                          10. Инициализация остальных мастернод
                          11. Настройка keepalived и виртуального IP
                          12. Добавление рабочих нод в кластер
                          13. Установка ingress-nginx
                          14. Дополнительно

                          Читать дальше →
                        • habrahabr.ru → habr.com

                            С сегодняшнего дня Хабр доступен по адресу habr.com. Старые адреса habr.ru и habrahabr.ru теперь используются исключительно для редиректа. Хабр начинает новую большую и захватывающую историю.


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