Почему так сложно выполнить обновление между основными версиями Red Hat и CentOS?

72

«Можем ли мы обновить наши существующие производственные серверы EL5 до EL6?»

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

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

Я не пытаюсь , чтобы получить ответы об управлении конфигурацией ( «Puppetize все » не всегда применяется ) или как клиенты должны спланировали лучше. Это реальный пример сред, которые выросли и преуспели в производственных мощностях, но не видят четкого пути перехода к следующей версии своей ОС.

Среда A:
некоммерческая организация с 40 веб-серверами Red Hat Enterprise Linux 5.4 и 5.5 , серверами баз данных и почтовыми серверами, работающими со стеком веб-приложений Java, балансировщиками нагрузки программного обеспечения и базами данных Postgres. Все системы виртуализированы в двух кластерах VMWare vSphere в разных местах, каждый с HA, DRS и т. Д.

Среда B:
высокочастотная финансово-торговая фирма с системами 200 x CentOS 5.x в нескольких средствах совместного размещения, осуществляющая операции по производству продукции, поддерживающую внутренние разработки и функции бэк-офиса. Торговые серверы работают на обычном аппаратном серверном оборудовании. Они многочисленны sysctl.conf, rtctlпрерывают связывание и твики драйверов на месте , чтобы снизить задержки обмена сообщениями. Некоторые имеют собственные ядра и / или ядра реального времени. Рабочие станции разработчиков также используют аналогичные версии CentOS.


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

  • Для некоммерческой фирмы это связано с Apache, ядром и некоторыми вещами, которые сделают разработчиков счастливыми.
  • В торговой фирме речь идет о некоторых улучшениях в ядре, сетевом стеке и GLIBC, которые порадуют разработчиков.

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

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

Будучи чувствительным к бизнес-потребностям клиентов, я удивляюсь, почему это должно быть такой обременительной задачей . Система упаковки RPM более чем способна обрабатывать обновления на месте, но вы получаете небольшие детали: /bootтребовать больше места, новые файловые системы по умолчанию, RPM, возможно, ломающиеся в середине обновления, устаревшие и несуществующие пакеты ...

Какой ответ здесь? Другие дистрибутивы (на основе .deb, Arch и Gentoo), похоже, имеют эту возможность или лучший путь. Скажем , мы находим время простоя для выполнения этой задачи на правильном пути:

  • Что эти клиенты должны сделать, чтобы избежать той же проблемы, когда EL7 выпущен и стабилизируется?
  • Или это тот случай, когда люди должны смириться с полной перестройкой каждые несколько лет?
  • Кажется, с развитием Enterprise Linux все стало еще хуже ... Или я просто представляю это?
  • Отговорил ли это кого-нибудь от использования Red Hat и производных операционных систем?

Я полагаю, что есть угол управления конфигурацией, но большинство установок Puppet, которые я вижу, плохо транслируются в среды с сильно настроенными серверами приложений (в среде B может быть один сервер, ifconfigвыход которого выглядит следующим образом ). Мне было бы интересно услышать предложения о том, как можно использовать управление конфигурацией, чтобы помочь организациям справиться с проблемой основной версии RHEL.

ewwhite
источник
16
Я собирался отметить это для закрытия как «неконструктивное», когда я увидел имя автора и имя представителя, и из уважения я не буду этого делать. Я все еще думаю, что это глупый вопрос, потому что ответ таков: «Red Hat решила, что так и должно быть». Обновления 4-> 5 были вполне возможны при загрузке DVD, и были процедуры для этого при использовании живой ОС yum, которая работала для меня большую часть времени. Моя единственная надежда состоит в том, что RH очень сильно пострадали от своих платящих клиентов за их решение не иметь поддерживаемый путь обновления 5-> 6, и пересмотрят это для 6-> 7.
MadHatter
1
Тем не менее, вы знаете, что есть рабочий неподдерживаемый путь обновления с помощью загрузки DVD с C5-> C6 с использованием upgradeanyпараметра времени загрузки, да? Я протестировал его дважды, один раз на чистой установке C5, где он работал нормально; однажды на (тестовой копии) старой версии "раньше был C4 и был обновлен", где произошел значительный сбой.
MadHatter
2
Я хорошо осведомлен о возможностях апгрейда, и определенно форсировал установки, используя подход RPM в режиме реального времени (изменение репо *-release filesи все). Но вопросы клиентов на этой неделе заставили меня задуматься о том, как укоренившаяся среда может стать с определенной версией и не иметь выхода.
2012 года

Ответы:

42

(Примечание автора. Этот ответ относится к RHEL 6 и более ранним версиям. RHEL 7 теперь имеет полностью поддерживаемый путь обновления с RHEL 6, подробности которого приведены в конце.)


Для начала следует отметить, что есть два способа выполнить обновление на месте:

  1. Вставьте установочный DVD (или используйте образ DVD через iLO / iDRAC), загрузитесь с него и выберите Upgrade, например linux upgradeany.
  2. Обновите redhat-releaseRPM вручную, запустите yum distro-sync(это немного упрощено) и перезагрузите компьютер.

Способ 1 просто не поддерживается. Метод 2 для настоящих ковбоев. В дополнение к рекомендуемым свежим установкам, я сделал оба этих ...


Нужна ли мне поддержка?

Поддержка имеет два дополнительных значения в нашем мире. Во-первых, продукт имеет заданную функцию (например, «Postfix поддерживает SMTP»). Во-вторых, продавец поговорит с вами об этом. Какое определение подразумевается, не всегда ясно из контекста.

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


Почему бы не сделать обновление на месте?

Вот что Red Hat говорит об этом :

Red Hat не поддерживает обновления на месте между основными версиями Red Hat Enterprise Linux. Основная версия обозначается изменением версии целым числом. Например, Red Hat Enterprise Linux 5 и Red Hat Enterprise Linux 6 являются основными версиями Red Hat Enterprise Linux.

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

Они также предупреждают:

Однако обратите внимание на следующие ограничения, прежде чем вы решите обновить свою систему:

  • Отдельные файлы конфигурации пакета могут работать или не работать после выполнения обновления из-за изменений в различных форматах или форматах файлов конфигурации.
  • Если у вас установлен один из многоуровневых продуктов Red Hat (например, Cluster Suite), его может потребоваться обновить вручную после завершения обновления Red Hat Enterprise Linux.
  • Сторонние приложения или приложения ISV могут работать некорректно после обновления.

Конечно, они затем описывают, как выполнить обновление на месте с помощью метода 1, на тот случай, если вы действительно хотите это сделать. Функция существует, и Red Hat вкладывает в нее время разработки, поэтому она поддерживается в том случае, если она существует. Но если что-то пойдет не так, Red Hat скажет вам установить все заново; они не будут предоставлять поддержку поставщика для вещей, которые ломаются в результате обновления.

Кстати, у меня никогда не было проблем с обновлением на месте системы RHEL / CentOS или Fedora, которые я не мог решить самостоятельно. Типичные проблемы возникают из-за переименованных пакетов, сторонних репозиториев и случайного несоответствия версий между архитектурами пакетов i386 и x86_64. Инсталлятор немного лучше справляется с этим, чем yum, я думаю.


Как мне обновить?

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

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

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

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


Поможет ли переключение дистрибутивов?

Дистрибутивы на основе Debian имеют поддерживаемый метод обновления на месте, и он в основном работает, но он не застрахован от проблем. Например, многое изменилось для людей, которые обновили Ubuntu 10.04 LTS до 12.04 LTS с помощью поддерживаемого метода. Не ясно, что Debian или Canonical затрачивают достаточно времени на «поддержку» этой функции, то есть, чтобы убедиться, что она работает. И вам все равно придется купить поддержку поставщика для этого дистрибутива, если вы хотите, чтобы кто-то держал вас за руку. Поэтому я сомневаюсь, что вы многое выиграете от перехода на такой дистрибутив.

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


Что нас ждет в будущем?

Проект Fedora работает над инструментом для улучшения обновлений на месте. У них был инструмент под названием, preupgradeкоторый был заброшен и заменен новым инструментом, называемым fedup, начиная с Fedora 18 . Это было добавлено к RHEL7, и теперь обновления на месте имеют полную поддержку , по крайней мере, с RHEL 6 до RHEL 7 . Исходя из собственного опыта, я могу сказать, что, несмотря на fedupнекоторые изгибы , он превращается в очень полезный инструмент.

CentOS также экспериментирует с хранилищем с непрерывным выпуском , но это применимо только к второстепенным версиям (например, 6.3-6.4).

Майкл Хэмптон
источник
1
Новый инструмент обновления Fedora называется fedup . Три-четыре года звучат агрессивно для меня и для крупных обновлений. Должно быть, установки, которые я вижу, продлятся гораздо дольше к 10-летнему жизненному циклу RHEL, поэтому я бы рекомендовал проводить регулярные небольшие обновления.
Доминик Клил
3
Для людей, которым нужны новые функции на постоянной основе, 3-4 года - это слишком много.
Майкл Хэмптон
3
Простые вещи, такие как PHP, Apache, ревизии ядра и GLIBC ... Люди склонны хотеть эти изменения чаще.
2012 г.
2
Процесс обновления Debian / Ubuntu не идеален, но тот факт, что он является предпочтительным механизмом обновления, а Red Hat не имеет официально поддерживаемого механизма обновления, говорит мне о многом.
Пол Гир
1
Вопрос не в том, существуют ли обновления на месте, как они это делают, а в том, предоставляют ли соответствующие поставщики их поддержку.
Майкл Хэмптон
6

Мой взгляд на ваш последний абзац:

Я предполагаю, что есть угол управления конфигурацией, но большинство установок Puppet, которые я вижу, плохо транслируются в среды с сильно настроенными серверами приложений (в среде B может быть один сервер, у которого вывод ifconfig выглядит следующим образом). Мне было бы интересно услышать предложения о том, как можно использовать управление конфигурацией, чтобы помочь организациям справиться с проблемой основной версии RHEL.

Я думаю, что реальная ценность систем управления конфигурациями, особенно в контексте среды B, заключается в том, что они предоставляют инструменты для создания службы независимо от серверов, на которых она выполняется. Если CMS не использовалась для создания существующих сервисов, то, вероятно, это не очень поможет в воссоздании сервисов.

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

PS Я не совсем уверен, что важно в выводе ifconfig в этом контексте - он создается с помощью файла конфигурации и некоторых сценариев (в противном случае его не было бы при загрузке), и они могут управляться CMS, если это необходимо.

Пол Гир
источник
1
Вы правы в отношении услуг по сравнению с серверами в общем смысле. Среда B имеет некоторое специализированное серверное оборудование (сетевые адаптеры 10GbE, библиотеки разгрузки), которое взаимодействует с вышестоящими поставщиками. Это то, что не может быть сбалансировано или перемещено без простоев. Нефинансовый пример - это что-то вроде сервера, подключенного в качестве контроллера для некоторого задействованного производственного оборудования. Особый случай, может быть, с выделенными интерфейсными картами PCIe. Очень уникальная настройка, уникальная для сервера. В Puppet вы бы просто сказали: «Вот конфиг для этого хоста / роли» и живете с ним?
Ewwhite
1
Согласитесь, некоторые вещи нелегко вписать в общие случаи, особенно если у вас есть среда с особыми требованиями к оборудованию. С марионеткой, толкать как можно больше в роли имеет смысл. Но, в конце концов, это должно сработать, так что если что-то не совсем элегантное заставляет это работать, тогда я просто живу с этим, будучи не элегантным. Большую часть времени нам приходится жить с неэлегансными вещами просто потому, что у нас нет времени, чтобы сделать их «правильными».
Пол Гир