72 votes

Pourquoi est-il si difficile de passer d'une version majeure de Red Hat à une autre de CentOS ?

"Pouvons-nous mettre à niveau nos serveurs EL5 de production existants vers EL6 ?"

Une demande simple de la part de deux clients avec complètement dans des environnements différents a suscité ma réponse habituelle aux meilleures pratiques, à savoir "oui, mais cela nécessitera une approche coordonnée". la reconstruction de tous vos systèmes "...

Les deux clients estiment qu'une reconstruction complète de leurs systèmes est une option inacceptable pour des raisons de temps d'arrêt et de ressources... Lorsqu'on m'a demandé pourquoi il était nécessaire de réinstaller complètement les systèmes, je n'ai pas eu de bonne réponse à part "c'est comme ça...".

Je n'essaie pas d'obtenir des réponses sur la gestion de la configuration ("Puppetize"). tout " ne s'applique pas toujours ) ou comment les clients auraient dû mieux planifier. Il s'agit d'un exemple concret d'environnements qui ont grandi et prospéré dans une capacité de production, mais qui ne voient pas de voie claire pour passer à la prochaine version de leur système d'exploitation.

Environnement A :
Organisation à but non lucratif avec 40 x Red Hat Enterprise Linux 5.4 et 5.5 des serveurs web, des serveurs de bases de données et des serveurs de messagerie, exécutant une pile d'applications web Java, des équilibreurs de charge logiciels et des bases de données Postgres. Tous les systèmes sont virtualisés sur deux clusters VMWare vSphere situés à des endroits différents, chacun étant doté de fonctions HA, DRS, etc.

Environnement B :
Société de trading financier à haute fréquence avec 200 x CentOS 5.x dans de multiples installations de colocation, qui exécutent des opérations de négociation de production et soutiennent le développement interne et les fonctions de back-office. Les serveurs de négociation fonctionnent sur du matériel serveur de base à nu. Ils disposent de nombreux sysctl.conf , rtctl Le système de gestion de l'information, la liaison d'interruption et les modifications du pilote sont en place pour réduire la latence de la messagerie. Certains ont des noyaux personnalisés et/ou en temps réel. Les postes de travail des développeurs utilisent également une ou plusieurs versions similaires de CentOS.


Dans les deux cas, les environnements fonctionnent bien en l'état. Le désir de mise à niveau vient du besoin d'une application ou d'une fonction plus récente disponible dans EL6.

  • Pour l'entreprise à but non lucratif, elle est liée à Apache, au noyau et à certaines choses qui feront le bonheur des développeurs.
  • Dans la société commerciale, il s'agit de quelques améliorations du noyau, de la pile réseau et de GLIBC, qui feront le bonheur des développeurs.

Les deux sont des choses qui ne peuvent pas être facilement emballées ou mises à jour sans modifier radicalement le système d'exploitation .

En tant qu'ingénieur système, j'apprécie que Red Hat recommande des reconstructions complètes lors du passage d'une version majeure à une autre. Un départ propre vous oblige à remanier et à prêter attention aux configurations en cours de route.

Étant donné que je suis sensible aux besoins commerciaux des clients, je me demande pourquoi cela doit être un tel problème. tâche onéreuse . Le système d'emballage RPM est plus que capable de gérer les mises à niveau en place, mais ce sont les petits détails qui comptent : /boot nécessitant plus d'espace, nouveaux systèmes de fichiers par défaut, RPM pouvant se casser à mi-chemin de la mise à niveau, paquets obsolètes et défunts...

Quelle est la réponse ici ? D'autres distributions (basées sur .deb, Arch et Gentoo) semblent avoir cette capacité ou un meilleur chemin. Disons que nous trouvons le temps nécessaire pour accomplir cette tâche le droite manière :

  • Que doivent faire ces clients pour éviter le même problème lorsque EL7 sera publié et se stabilisera ?
  • Ou est-ce un cas où les gens doivent se résigner à une reconstruction complète tous les quelques années ?
  • Cela semble s'être aggravé avec l'évolution de Enterprise Linux... Ou est-ce que je me fais des idées ?
  • Cela a-t-il dissuadé quelqu'un d'utiliser Red Hat et ses systèmes d'exploitation dérivés ?

Je suppose qu'il y a l'angle de la gestion de la configuration, mais la plupart des installations de Puppet que je vois ne se traduisent pas bien dans des environnements avec des serveurs d'application hautement personnalisés ( Environnement B pourrait avoir un seul serveur dont ifconfig sortie ressemble à ceci ). Je serais intéressé par des suggestions sur la façon dont la gestion de la configuration peut être utilisée pour aider les organisations à passer le cap de la version majeure de RHEL, cependant.

18 votes

J'étais sur le point de marquer cette question comme "non constructive", quand j'ai vu le nom de l'auteur, et le représentant, et par respect, je ne le ferai pas. Je pense toujours que c'est une question stupide, parce que la réponse est que "Red Hat a décidé qu'il devait en être ainsi". Les mises à jour de 4 à 5 étaient parfaitement possibles via le démarrage par DVD, et il y avait des procédures pour le faire sur un système d'exploitation en direct en utilisant le système d'exploitation de Red Hat. yum ce qui a fonctionné pour moi la plupart du temps. Mon seul espoir est que RH a pris un énorme ont été frappés par la douleur de leurs clients payants pour leur décision de ne pas avoir de chemin de mise à niveau pris en charge 5->6, et vont repenser cela pour 6->7.

1 votes

Cela dit, vous savez qu'il existe un chemin de mise à niveau non pris en charge via le démarrage sur DVD de C5->C6 en utilisant le programme de mise à niveau de l'UE. upgradeany paramètre de démarrage, oui ? Je l'ai testé deux fois, une fois sur une installation C5 propre où il a bien fonctionné ; une fois sur une (copie de test d'une) vieille installation "anciennement C4 et mise à jour" où il a échoué de façon spectaculaire.

2 votes

Je suis bien conscient des options de mise à niveau, et j'ai définitivement forcé les installations en utilisant l'approche RPM en direct (changement de repo, *-release files et tous). Mais les questions posées par les clients cette semaine m'ont fait réfléchir à la façon dont un environnement peut s'enraciner dans une version spécifique, sans qu'il soit possible d'en sortir.

42voto

Michael Hampton Points 232226

(Note de l'auteur : cette réponse fait référence à RHEL 6 et aux versions antérieures. RHEL 7 dispose désormais d'un chemin de mise à niveau entièrement pris en charge à partir de RHEL 6, dont les détails figurent à la fin).


Pour commencer, je dois noter qu'il y a deux façons pour faire la mise à niveau sur place :

  1. Insérez le DVD d'installation (ou utilisez l'image DVD via iLO/iDRAC), démarrez à partir de celui-ci et choisissez Mise à niveau, par exemple. linux upgradeany .
  2. Mettre à jour le redhat-release RPM manuellement, exécutez yum distro-sync (c'est un peu trop simplifié) et redémarrer.

La méthode 1 est simplement non soutenue. La méthode 2 est pour les vrais cowboys. En plus des nouvelles installations recommandées, j'ai fait ces deux méthodes...


Ai-je besoin d'un soutien ?

Soutien a deux significations complémentaires dans notre monde. La première est qu'un produit possède une caractéristique donnée (par exemple, "Postfix supporte le SMTP"). La seconde est que le vendeur vous en parlera. Le contexte ne permet pas toujours de savoir quelle définition est la bonne.

Pour accomplir une tâche, vous avez évidemment besoin d'un soutien au sens premier du terme. Là où le support du fournisseur entre en jeu, c'est pour vous aider à résoudre les problèmes et à donner au fournisseur un retour d'information sur les fonctionnalités qui doivent exister ou être améliorées. De nombreux sites paient une fortune pour bénéficier de l'assistance d'un fournisseur alors qu'ils disposent de l'expertise interne pour résoudre tout problème éventuel, plus rapidement et à moindre coût que le fournisseur. L'achat d'une assistance technique est en fin de compte une décision commerciale que vous devrez prendre (ou conseiller la direction).


Pourquoi ne pas faire une mise à jour sur place ?

C'est ce que Red Hat dit à ce sujet :

Red Hat ne prend pas en charge les mises à niveau sur place entre les versions majeures de Red Hat Enterprise Linux. Une version majeure est désignée par un changement de version en nombre entier. Par exemple, Red Hat Enterprise Linux 5 et Red Hat Enterprise Linux 6 sont toutes deux des versions majeures de Red Hat Enterprise Linux.

Les mises à niveau en place dans les versions majeures ne préservent pas tous les paramètres du système, les services ou les configurations personnalisées. Par conséquent, Red Hat recommande fortement de procéder à de nouvelles installations lors de la mise à niveau d'une version majeure à une autre.

Ils mettent également en garde :

Toutefois, notez les limitations suivantes avant de choisir de mettre votre système à niveau :

  • Les fichiers de configuration des paquets individuels peuvent ou non fonctionner après l'exécution d'une mise à niveau en raison des modifications apportées aux divers formats ou dispositions des fichiers de configuration.
  • Si l'un des produits en couches de Red Hat (tels que Cluster Suite) est installé, il peut s'avérer nécessaire de le mettre à niveau manuellement une fois la mise à niveau de Red Hat Enterprise Linux terminée.
  • Les applications tierces ou ISV peuvent ne pas fonctionner correctement après la mise à niveau.

Bien entendu, ils décrivent ensuite comment effectuer une mise à niveau sur place via la méthode 1, au cas où vous voudriez vraiment le faire. La fonctionnalité existe et Red Hat y consacre du temps de développement, elle est donc prise en charge dans la mesure où elle existe. Mais si quelque chose ne va pas, Red Hat vous dira d'effectuer une nouvelle installation ; ils ne fourniront pas de support fournisseur pour les choses qui se cassent suite à la mise à niveau.

Pour mémoire, je n'ai jamais eu de problème avec une mise à niveau sur place d'un système RHEL/CentOS ou Fedora que je n'ai pas pu résoudre moi-même. Les problèmes typiques proviennent de paquets renommés, de dépôts tiers et d'un décalage occasionnel de version entre les architectures i386 et x86_64 d'un paquet. Le programme d'installation est un peu meilleur pour gérer ces problèmes que le programme yum Je pense.


Comment dois-je procéder à la mise à niveau ?

Je préviens généralement les gens qu'ils devraient plan sur une fenêtre de maintenance tous les 3-4 ans pour mettre à jour les systèmes RHEL d'une version majeure à la suivante. Si les mises à jour se déroulent généralement sans problème, l'imprévu peut toujours survenir.

Pour vos deux environnements, je pense qu'une mise à niveau sur place devrait fonctionner, bien que je recommande fortement de la tester minutieusement au préalable. P2V un échantillon représentatif des serveurs et exécutez la mise à niveau sur place sur les systèmes virtuels pour voir quels problèmes vous allez rencontrer. Vous pouvez ensuite planifier la mise à niveau de production réelle en vous basant sur une meilleure connaissance de ce qui se passera.

Pour un grand déploiement comme celui que vous avez ici, envisagez d'utiliser l'approche "un-quelques-uns" de Limoncelli. Mettez à niveau une machine, voyez les problèmes qui surviennent, résolvez-les, puis utilisez les leçons apprises lors de la mise à niveau d'un petit lot de machines, répétez les leçons apprises, puis lorsque vous pensez avoir résolu tous les problèmes, mettez à niveau de grands lots de machines.

Dans un tel contexte, je vous recommande également d'examiner attentivement le processus de déploiement de vos applications. S'il n'est pas suffisamment automatisé pour que vous puissiez le lancer avec une seule commande et être raisonnablement sûr que l'application sera déployée correctement, alors peut-être les développeurs doivent-ils s'y mettre. Avec un tel processus de déploiement, il serait beaucoup plus facile de procéder à une nouvelle installation de la nouvelle version d'EL, puis de la déployer.


Le changement de distribution est-il utile ?

Les distributions basées sur Debian disposent d'une méthode de mise à niveau sur place prise en charge, qui fonctionne généralement, mais qui n'est pas à l'abri de problèmes. Beaucoup de choses se sont cassées pour les gens mise à niveau d'Ubuntu 10.04 LTS vers 12.04 LTS via la méthode supportée, par exemple. Il n'est pas certain que Debian ou Canonical consacrent suffisamment de temps de développement à la " prise en charge " de cette fonctionnalité, c'est-à-dire à s'assurer qu'elle fonctionne. Et vous devez toujours acheter le support du vendeur pour cette distribution si vous voulez que quelqu'un vous tienne la main. Je doute donc que vous gagniez beaucoup à passer à une telle distribution.

Vous pouvez gagner à passer à une distribution à version progressive telle que Gentoo ou Arch. Cependant, cela ne vous met pas non plus à l'abri des problèmes ; cela signifie simplement que vous devez faire face aux problèmes de mise à jour de façon continue pendant la durée de vie du serveur (par exemple, chaque fois que vous ou les développeurs décidez de mettre à jour quelque chose sur le système), plutôt qu'en une seule fois au moment d'une mise à jour bien planifiée de la distribution. Vous n'avez pas non plus de fournisseur pour assurer le support.


Que nous réserve l'avenir ?

Le projet Fedora travaille sur un outil permettant d'améliorer les mises à jour sur place. Ils avaient un outil appelé preupgrade qui a été abandonné et remplacé par un nouvel outil appelé fedup à partir de Fedora 18 . Cela a été ajouté à RHEL7 et maintenant les mises à niveau sur place bénéficient d'un soutien total au moins de RHEL 6 à RHEL 7 . D'après ma propre expérience, je peux dire que si fedup Il y a encore des problèmes il s'avère être un outil très utile.

CentOS expérimente également un dépôt de type rolling-release mais elle ne s'applique qu'aux versions mineures (par exemple, 6.3-6.4).

7voto

Paul Gear Points 3883

Mon point de vue sur votre dernier paragraphe :

Je suppose qu'il y a l'angle de la gestion de la configuration, mais la plupart des installations de Puppet que je vois ne se traduisent pas bien dans des environnements avec des serveurs d'application hautement personnalisés (l'environnement B pourrait avoir un seul serveur dont la sortie ifconfig ressemble à ceci). Je serais intéressé d'entendre des suggestions sur la façon dont la gestion de la configuration peut être utilisée pour aider les organisations à passer le cap de la version majeure de RHEL, cependant.

Je pense que la véritable valeur des systèmes de gestion de la configuration, notamment dans le contexte de l'environnement B, est qu'ils fournissent les outils permettant de construire un service indépendamment des serveurs qui l'exécutent. Si un CMS n'a pas été utilisé pour créer les services existants, il ne sera probablement pas d'une grande aide pour recréer ces services.

Je sais que cela ne résout pas votre problème immédiat, mais à mon avis, cela vient du fait que l'organisation pense en termes de serveurs plutôt que de services. Dans le cadre d'une réflexion axée sur les services, la personnalité des serveurs individuels ne doit pas être maintenue tant que le service continue de fonctionner. Si un CMS est utilisé de manière disciplinée pour construire l'ensemble du service, alors le transfert de ce service vers un autre système devrait être relativement simple, car toute la personnalité de la machine sera construite par le CMS.

P.S. Je ne sais pas exactement ce qui est significatif à propos de la sortie ifconfig dans ce contexte - elle est produite par un fichier de configuration et quelques scripts (sinon elle ne serait pas là au démarrage), et ceux-ci peuvent être gérés par un CMS, si nécessaire.

1 votes

Vous avez raison au sujet des services par rapport aux serveurs dans le sens général. L'environnement B possède du matériel serveur spécialisé (NIC 10GbE, bibliothèques de déchargement) qui s'interface avec les fournisseurs en amont. C'est quelque chose qui ne peut pas être équilibré en charge ou déplacé facilement sans temps d'arrêt. Un exemple non financier serait un serveur attaché comme contrôleur pour une machine de production impliquée. Un cas particulier, peut-être avec des cartes d'interface PCIe dédiées. Il s'agit d'une configuration unique, propre au serveur. Dans Puppet, pourriez-vous simplement dire "Voici la configuration pour cet hôte/rôle" et vous en accommoder ?

2 votes

Je suis d'accord, certaines choses ne sont pas faciles à intégrer dans des cas généraux, surtout si vous avez un environnement avec des exigences matérielles spécifiques. Avec Puppet, il est logique de pousser autant que possible dans le rôle. Mais au bout du compte, il faut que ça marche, donc si quelque chose de pas très élégant permet de le faire, alors je m'accommode de son manque d'élégance. La plupart du temps, nous devons vivre avec des choses inélégantes simplement parce que nous n'avons pas le temps de les rendre "correctes".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X