ADG Оставить заявку
Блог Системное администрирование 5 мин чтения

Ubuntu 12.04 LTS Server против CentOS 6: делаем выбор для новых развёртываний

Ubuntu 12.04 LTS выходит 26 апреля с ядром 3.2 и пятилетней поддержкой. Тестируем как базу для серверов вместо CentOS 6: apt vs yum, AppArmor vs SELinux, OpenStack Essex.

Контекст момента

Ubuntu 12.04 LTS (Precise Pangolin) вышла 26 апреля 2012 с пятилетней поддержкой, ядром Linux 3.2 и OpenStack Essex в базовой поставке

Ubuntu 12.04 LTS официально выходит 26 апреля, но бета-2 уже можно щупать вполне серьёзно. Мы потратили несколько недель на тестовые развёртывания - и теперь у нас есть достаточно материала, чтобы сказать: это первый Ubuntu Server, который мы рассматриваем как реальную альтернативу CentOS 6 для новых клиентских инфраструктур.

Поясним, откуда вопрос вообще встал.

Откуда ноги растут

У нас исторически два лагеря клиентских инфраструктур: те, кто пришёл с RHEL/CentOS, и те, кто исторически сидел на Debian. Ubuntu Server 10.04 LTS мы пробовали, но пятилетнего цикла тогда не было - только три года для серверной редакции. Это не тот горизонт, под который строят инфраструктуру. CentOS 6 с его десятилетним циклом (от RHEL 6) в этом смысле выигрывал по умолчанию.

12.04 LTS меняет расклад: Canonical объявила пять лет поддержки для серверной редакции. Плюс ядро 3.2 - это не маргинальное обновление, оно несёт улучшения в планировщике, поддержку ext4 features, которых не было в 2.6.32 (ядро CentOS 6), и нормальный btrfs для экспериментов. Добавьте сюда OpenStack Essex прямо в репозиториях - и вопрос «а зачем нам Ubuntu» перестаёт быть риторическим.

apt против yum: боль и прагматика

Если честно - обе системы делают одно и то же, и разница в ежедневной работе минимальна. Детали, однако, проявляются именно на серверной практике.

Свежесть пакетов. apt/Ubuntu традиционно везёт более свежие версии в дефолтных репозиториях. На CentOS 6 MySQL 5.5 нужно тащить из отдельного community-репозитория или собирать руками, тогда как в Ubuntu 12.04 он идёт в основном репо. Мы недавно переводили клиента на InnoDB с MyISAM - на Ubuntu это было бы проще технически.

Стабильность репозиториев. yum на RHEL/CentOS отличается тем, что пакеты в основном репо не меняются после релиза - только security-патчи. В apt-мире Ubuntu придерживается похожей политики для LTS, но backports и universe репозитории добавляют неопределённость. Для серверной инфры мы их отключаем по умолчанию и включаем точечно.

Управление зависимостями. apt выигрывает в сценариях, когда нужно поставить конкретную версию пакета и зафиксировать её через apt-mark hold. На yum аналогичное делается через exclude в конфиге или yum versionlock - чуть менее удобно.

AppArmor против SELinux: честный разговор

Это, пожалуй, самый болезненный пункт - и здесь мы не будем делать вид, что всё однозначно.

SELinux - мощнее. Это факт. Мандатный контроль доступа на уровне Type Enforcement даёт очень гранулярную политику и хорошо задокументирован под RHEL-экосистему. Проблема в том, что его настройка для нестандартных приложений требует написания policy-модулей, что большинство команд не умеет и не хочет учиться. Результат известен: SELinux в режиме permissive или вовсе disabled - и тогда от него ноль пользы.

AppArmor в Ubuntu работает по-другому: профили пишутся в терминах путей и возможностей, это проще читается и проще дописывается. Для типичных серверных приложений - nginx, MySQL, sshd - профили идут из коробки. Написать профиль для своего демона реально за час, а не за день. Это не значит, что AppArmor защищает лучше - просто вероятность того, что он будет реально включён в production, выше.

Наша позиция: если у клиента нет отдельного эксперта по SELinux - AppArmor в enforcing лучше, чем SELinux в permissive.

OpenStack Essex: зачем нам это в базовой поставке

Мы тестируем OpenStack Essex отдельно для пары клиентов, которые хотят private cloud. То, что он идёт в официальных репозиториях Ubuntu 12.04 - это организационное удобство, не более. Сборка из пакетов дистрибутива воспроизводима, есть security updates по стандартному каналу. На CentOS Essex тоже ставится, но через EPEL или руками. Небольшое, но реальное преимущество.

Что мы получили на тестовых стендах

Два стенда: голый metal и KVM-виртуалки. Установка - стандартный Ubuntu Server installer, без GUI, минимальный набор пакетов. Из наблюдений:

  • Время первого apt-get update после чистой установки - заметно быстрее, чем yum update на CentOS 6 с аналогичным числом репозиториев.
  • cloud-init входит в стандартную поставку - удобно для автоматизации, которую мы строим через Puppet.
  • Ядро 3.2 и KVM - заметно лучше работает сеть на виртуалках с virtio, меньше прерываний по нашим наблюдениям.
  • LVM и mdadm - настройка идентична CentOS, здесь паритет.

По мониторингу - мы централизуем syslog через syslog-ng у нескольких клиентов, и Ubuntu 12.04 встал в эту схему без доработок: rsyslog из коробки, конфиг тот же.

Вывод, который мы сделали

Для новых развёртываний мы начинаем рекомендовать Ubuntu 12.04 LTS как базу наравне с CentOS 6 - с выбором в пользу Ubuntu там, где:

  • Команда клиента знакома с Debian/Ubuntu
  • Стек включает OpenStack, LXC или свежие версии Python/Ruby-зависимостей
  • SELinux исторически стоит в permissive

CentOS 6 остаётся выбором по умолчанию там, где клиент сидит на RHEL или где нужна сертификация стека под конкретный enterprise-продукт (Oracle DB, SAP и тому подобное - они сертифицированы под RHEL, не под Ubuntu).

Финального ответа «один дистрибутив для всего» мы не ищем - это была бы неправда. Но выбор стал честным.

Мы занимаемся такими развёртываниями в рамках сопровождения инфраструктуры: помогаем выбрать стек, поставить, настроить и поддерживать.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.