Perché è così difficile aggiornare tra le principali versioni di Red Hat e CentOS?

"Possiamo aggiornare i nostri server di produzione EL5 esistenti a EL6?"

Una semplice domanda su due clienti con ambienti completamente diversi ha spinto la mia solita risposta alle migliori soluzioni di "sì, ma richiederà una ricostruzione coordinata di tutti i tuoi sisthemes " …

  • Su un server appena riavviato perché la CPU in esecuzione dei processi sarebbe enorme?
  • Inoltra SSH tramite tunnel SSH
  • Come eseguire il backup dei file "crontab -e"?
  • Software Raid 10 su VirtualBox?
  • La scatola di Linux richiede 10 secondi per effettuare una connessione
  • Monitoraggio process di Dio - CentOS - Sistema events non trovato
  • Entrambi i clienti ritengono che una ricostruzione completa dei loro sisthemes sia un'opzione inaccettabile per i tempi di inattività e di risorsa … Quando viene chiesto perché fosse necessario reinstallare completamente i sisthemes, non ho avuto una buona risposta al di là ", così è …"

    Non sto cercando di sollecitare le risposte sulla gestione della configuration ("Puppetize everything " non sempre si applica ) o come i clienti avrebbero dovuto pianificare meglio. Questo è un esempio reale di ambienti che sono cresciuti e prosperati in una capacità produttiva, ma non vedono un path pulito per passare alla versione successiva del proprio sistema operativo.

    Ambiente A:
    Organizzazione senza scopo di lucro con 40 x Red Hat Enterprise Linux 5.4 e 5.5 web, server di database e server di posta, esecuzione di una shell di applicazioni web Java, bilanci di carico software e database Postgres. Tutti i sisthemes sono virtualizzati in due cluster di VMWare vSphere in posizioni diverse, ognuna con HA, DRS, ecc.

    Ambiente B:
    Azienda di negoziazione finanziaria ad alta frequenza con sisthemes 200 x CentOS 5.x in strutture di co-locazione multiple che eseguono operazioni di trading di produzione, sostenendo le funzioni di sviluppo interno e back-office. I server di trading sono in esecuzione su hardware hardware bare-metal commodity. Hanno numerosi sysctl.conf , rtctl , interrupt binding e driver tweaks in atto per ridurre la latenza di messaggistica. Alcuni hanno kernel personalizzati e / o in tempo reale. Le workstation sviluppatori sono anche in esecuzione di una versione simile di CentOS.


    In entrambi i casi, gli ambienti funzionano correttamente. Il desiderio di aggiornamento deriva dalla necessità di una nuova applicazione o funzionalità disponibili in EL6.

    • Per la società senza scopo di lucro, è legato a Apache, al kernel e ad alcune cose che renderanno felici gli sviluppatori.
    • Nell'azienda commerciale, si tratta di alcuni miglioramenti nel kernel, in networking pile e GLIBC, che renderà gli sviluppatori felici.

    Entrambe le cose non possono essere facilmente confezionate o aggiornate senza modificare drasticamente il sistema operativo .

    Come ingegnere di sisthemes, apprezzo che Red Hat raccomanda ricostruzioni complete quando si muove tra le principali versioni di versione. Un inizio pulito ti obbliga a rifatturare e prestare attenzione alle configurazioni lungo la strada.

    Essendo sensibile alle esigenze aziendali dei clienti, mi chiedo perché questo deve essere un task così oneroso . Il sistema di confezionamento RPM è più che in grado di gestire gli aggiornamenti in loco, ma sono i piccoli dettagli che ti arrivano: /boot richiedono più spazio, nuovi file system predefiniti, RPM che forse rompono i metà aggiornamenti, i pacchetti obsoleti e obsoleti …

    Qual è la risposta qui? Altre distribuzioni (.deb-based, Arch e Gentoo) sembrano avere questa capacità o un path migliore. Diciamo che troviamo i tempi di inattività per eseguire questo task nel modo giusto :

    • Cosa devono fare questi clienti per evitare lo stesso problema quando EL7 viene rilasciato e stabilizzato?
    • O è questo un caso in cui le persone devono rassegnarsi a ricostruzioni piene each pochi anni?
    • Questo sembra aver peggiorato quando Enterprise Linux si è evoluto … O lo immagino?
    • Ha impedito a chiunque di utilizzare Red Hat e sisthemes operativi derivati?

    Suppongo che ci sia l'angolo di gestione della configuration, ma la maggior parte delle installazioni Puppet che vedo non si traducono in ambienti con server applicativi altamente personalizzati ( Ambiente B potrebbe avere un singolo server il cui output ifconfig è simile a questo ). Sarò interessante ascoltare suggerimenti su come la gestione della configuration possa essere utilizzata per aiutare le organizzazioni ad get il bump della versione principale di RHEL.

  • Che cosa esattamente fare - il limite 1 / s e - il limite-burst significa nelle regole di iptables?
  • MySQL 5.1 vs MySQL 5.5 (5.1 due volte più veloce)
  • Centos versione mysql è 5.5 tuttavia PHPmyadmin dice ancora versione 5.1
  • Come si esegue Nginx sulla port 8080 e Apache sulla port 80 nella stessa casella?
  • Imansible connettersi al server MySql sul server remoto
  • Come aggiungere supporto linguistico su CentOS 7 (su Docker)?
  • 2 Solutions collect form web for “Perché è così difficile aggiornare tra le principali versioni di Red Hat e CentOS?”

    (Nota dell'autore: Questa risposta si riferisce a RHEL 6 e versioni precedenti. RHEL 7 dispone ora di un path di aggiornamento completamente supportto da RHEL 6, i cui dettagli sono alla fine.)


    Per iniziare, devo notare che ci sono due modi per eseguire l'aggiornamento sul posto:

    1. Inserisci il DVD di installazione (o utilizza l'image DVD tramite iLO / iDRAC), avvia da esso e scegli Aggiorna, ad esempio linux upgradeany .
    2. Aggiorna manualmente il RPM di redhat-release rapido, eseguire yum distro-sync (questo è un po 'troppo semplice) e riavviare.

    Il metodo 1 è semplicemente non supportto. Il metodo 2 è per Real Cowboys. Oltre alle nuove installazioni consigliate, ho fatto entrambi questi …


    Ho bisogno di supporto?

    Il sostegno ha due significati complementari nel nostro mondo. Il primo è che un prodotto ha una determinata funzionalità (ad esempio "Postfix support SMTP"). Il secondo è che il venditore vi parlerà. Quale definizione è significata non è sempre chiara dal context.

    Per eseguire un'attività, ovviamente è necessario il supporto nel primo senso. Dove viene fornito il supporto del fornitore è quello di aiutarti a risolvere i problemi e dare al feedback del fornitore le caratteristiche che devono esistere o essere migliorate. Molti siti pagano una fortuna per il supporto del fornitore quando hanno la competenza interna per risolvere eventuali problemi che possono sorgere, più veloci e persino più economici rispetto a quelli del fornitore. Se comprare il supporto fornitore è in ultima analisi una decisione aziendale che dovrai fare (o consigliare la gestione su).


    Perché non fare un aggiornamento sul posto?

    Questo è quanto Red Hat dice su di esso :

    Red Hat non support aggiornamenti in loco tra tutte le principali versioni di Red Hat Enterprise Linux. Una versione principale è indicata da un cambiamento di versione integer. Ad esempio, Red Hat Enterprise Linux 5 e Red Hat Enterprise Linux 6 sono entrambe le principali versioni di Red Hat Enterprise Linux.

    Gli aggiornamenti in loco nelle principali release non preservano tutte le impostazioni di sistema, i servizi o le configurazioni personalizzate. Di conseguenza, Red Hat raccomanda fortemente nuove installazioni quando si aggiorna da una versione principale all'altra.

    Essi inoltre avvertono:

    Tuttavia, tenere presente le seguenti limitazioni prima di scegliere l'aggiornamento del sistema:

    • I file di configuration dei singoli pacchetti possono o potrebbero non funzionare dopo l'esecuzione di un aggiornamento a causa di modifiche di vari formati o layout di file di configuration.
    • Se si dispone di uno dei prodotti sovrapposti di Red Hat (ad esempio la Cluster Suite), potrebbe essere necessario aggiornare manualmente dopo l'aggiornamento di Red Hat Enterprise Linux.
    • Le applicazioni di terze parti o ISV potrebbero non funzionare correttamente dopo l'aggiornamento.

    Naturalmente, poi descrivono come fare un aggiornamento sul posto tramite il metodo 1, nel caso in cui veramente lo desideri. La funzionalità esiste e Red Hat mette in esso tempo di sviluppo, quindi è supportto in quanto la funzionalità esiste. Ma se qualcosa va storto, Red Hat ti dirà di installare fresco; non forniranno supporto fornitore per le cose che si rompono a seguito dell'aggiornamento.

    Per il record, non ho mai avuto un problema con un aggiornamento in loco di un sistema RHEL / CentOS o Fedora che non ho potuto risolvere. I problemi tipici provengono da pacchetti rinominati, repository di terze parti e la mancata corrispondenza di versione tra le architetture i386 e x86_64 di un pacchetto. L'installatore è un po 'meglio a gestire questi che yum , penso.


    Come dovrei aggiornare?

    Generalmente metto in guardia le persone che dovrebbero pianificare una window di manutenzione each 3-4 anni per aggiornare i sisthemes RHEL da una versione principale a quella successiva. Mentre gli aggiornamenti in genere vanno in modo regolare, l'inaspettato può sempre accadere.

    Per entrambi i tuoi ambienti, mi aspetto un'aggiornamento in loco funziona, anche se vi consiglio vivamente di provarlo accuratamente prima. P2V un campione rappresentativo dei server e eseguire l'aggiornamento sul posto sui sisthemes virtuali per vedere quali problemi si intende affrontare. È quindi ansible pianificare l'aggiornamento effettivo della produzione in base alla migliore conoscenza di ciò che accadrà.

    Per un'implementazione di grandi size come ad esempio qui, consideri l'approccio di Limoncelli "un po '-molti". Aggiorna una macchina, scopri quali problemi si verificano, li risolvono, poi usa le lezioni apprese quando aggiorna un piccolo gruppo di macchine, ripete le cose scoperte e poi, quando credi che hai tutti i guai elaborati, aggiorni i batch di grandi size.

    In un momento come questo, raccommand anche di fare un lungo sguardo duro al process di distribuzione delle applicazioni. Se non è sufficientemente automatizzato per poterlo lanciare con un singolo command e sia ragionevolmente sicuro che l'applicazione verrà distribuita correttamente, forse gli sviluppatori dovranno lavorare. Avere un process di implementazione di questo tipo renderebbe molto più facile eseguire un'installazione nuova della versione più recente di EL e quindi distribuirla su di esso.


    Le distribuzioni di switching aiutano?

    Le distribuzioni basate su Debian hanno un metodo di aggiornamento in loco supportto e funziona soprattutto, ma non è immune dai problemi. Un sacco di cose hanno rotto per le persone che si aggiorna da Ubuntu 10.04 LTS a 12.04 LTS tramite il metodo supportto, per esempio. Non è chiaro che Debian o Canonical stanno mettendo una quantità sufficiente di tempo di sviluppo in "supportre" questa funzionalità, vale a dire assicurandosi che funziona. E ancora effettivamente wherete comprare il supporto fornitore per questa distribuzione se vuoi che qualcuno abbia la tua mano. Quindi dubito che avrai molto da passare a una tale distribuzione.

    Puoi guadagnare passando ad una distribuzione con rilascio rapido come Gentoo o Arch. Tuttavia, anche questo non ti rende immune ai problemi; significa semplicemente che devi affrontare i problemi di aggiornamento continuamente durante la vita del server (ad esempio, each volta che gli sviluppatori decidono di aggiornare qualcosa nel sistema), piuttosto che tutti contemporaneamente ad un tempo di aggiornamento ben pianificato di distribuzione. Non hai anche alcun fornitore per fornire supporto.


    Cosa riserva il futuro?

    Il progetto Fedora sta lavorando su uno strumento per migliorare gli aggiornamenti sul posto. Hanno avuto uno strumento chiamato preupgrade che è stato abbandonato e sostituito con un nuovo strumento chiamato fedup che inizia con Fedora 18 . Questo è stato aggiunto a RHEL7 e ora gli aggiornamenti sul posto hanno un pieno supporto , alless da RHEL 6 a RHEL 7 . Dalla mia esperienza posso dire che mentre il fedup ha ancora dei fedup , sta formando uno strumento molto utile.

    CentOS sta anche sperimentando un tipo di repository a rilascio di rotolamento , ma si applica solo tra versioni minori (es. 6.3-6.4).

    La mia presa sul tuo ultimo paragrafo:

    Suppongo che ci sia l'angolo di gestione della configuration, ma la maggior parte delle installazioni Puppet che vedo non si traducono in ambienti con server applicativi altamente personalizzati (Ambiente B potrebbe avere un singolo server il cui output ifconfig è simile a questo). Sarò interessante ascoltare suggerimenti su come la gestione della configuration possa essere utilizzata per aiutare le organizzazioni ad get il bump della versione principale di RHEL.

    Penso che il valore reale dei sisthemes di gestione della configuration, specialmente nel context dell'ambiente B, è che forniscono gli strumenti per build un servizio indipendentemente dai server che lo gestiscono. Se un CMS non è stato utilizzato per creare i servizi esistenti, probabilmente non sarà molto utile per ricreare i servizi.

    So che questo non risolve il tuo problema immediato, ma per me deriva dall'organizzazione pensando in termini di server piuttosto che di servizi. Nel pensiero incentrato sul servizio, la personalità dei singoli server non deve essere mantenuta finché il servizio continua a funzionare. Se un CMS viene utilizzato in modo disciplinato per build l'integer servizio, spostare tale servizio in un altro sistema dovrebbe essere relativamente semplice perché tutta la personalità della macchina sarà costruita dal CMS.

    PS Non so esattamente che cosa significa l'output ifconfig in questo context – è prodotto da un file di configuration e da alcuni script (altrimenti non sarebbe presente all'avvio) e possono essere gestiti da un CMS, se necessario.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.