Utilizzo della reindicizzazione offline per ridurre i tempi di inattività durante un aggiornamento offline-reindexing-to-reduce-downtime-during-upgrades

Introduzione introduction

Una delle problematiche principali nell’aggiornamento di Adobe Experience Manager è il tempo di inattività associato all’ambiente di authoring quando viene eseguito un aggiornamento sul posto. Gli autori dei contenuti non potranno accedere all’ambiente durante un aggiornamento. È pertanto consigliabile ridurre al minimo il tempo necessario per eseguire l'aggiornamento. Per gli archivi di grandi dimensioni, in particolare i progetti AEM Assets, che in genere hanno archivi di dati di grandi dimensioni e un elevato livello di caricamenti di risorse all’ora, la reindicizzazione degli indici Oak richiede una percentuale significativa del tempo di aggiornamento.

Questa sezione descrive come utilizzare lo strumento Oak-run per reindicizzare l’archivio prima di l'esecuzione dell'aggiornamento, riducendo in tal modo il tempo di inattività durante l'aggiornamento effettivo. I passaggi presentati possono essere applicati a Lucene indici per le versioni AEM 6.4 e successive.

Panoramica overview

Le nuove versioni dell’AEM introducono modifiche alle definizioni dell’indice Oak man mano che il set di funzioni viene espanso. Le modifiche agli indici Oak forzano la reindicizzazione durante l’aggiornamento dell’istanza AEM. La reindicizzazione è costosa per le distribuzioni delle risorse in quanto il testo nelle risorse (ad esempio, il testo nel file PDF) viene estratto e indicizzato. Con gli archivi MongoMK, i dati vengono mantenuti sulla rete, aumentando ulteriormente il tempo necessario per la reindicizzazione.

Il problema che la maggior parte dei clienti si trova ad affrontare durante un aggiornamento è la riduzione della finestra di inattività. La soluzione è salta l’attività di reindicizzazione durante l’aggiornamento. A tal fine, è possibile creare i nuovi indici precedente per eseguire l’aggiornamento, importali semplicemente durante l’aggiornamento.

Approccio approach

offline-reindexing-upgrade-text-extraction

L’idea è quella di creare l’indice prima dell’aggiornamento, rispetto alle definizioni dell’indice della versione AEM di destinazione utilizzando Oak-run strumento. Il diagramma precedente mostra l’approccio alla reindicizzazione offline.

Inoltre, questo è l’ordine delle fasi descritto nell’approccio:

  1. Il testo dai file binari viene estratto per primo
  2. Vengono create le definizioni dell’indice di destinazione
  3. Vengono creati indici offline
  4. Gli indici vengono quindi importati durante il processo di aggiornamento

Estrazione testo text-extraction

Per abilitare l’indicizzazione completa in AEM, il testo da file binari come PDF viene estratto e aggiunto all’indice. In genere si tratta di un passaggio costoso nel processo di indicizzazione. L’estrazione del testo è un passaggio di ottimizzazione consigliato soprattutto per la reindicizzazione degli archivi di risorse in quanto archiviano un numero elevato di dati binari.

offline-reindexing-upgrade-text-extraction

Il testo dei file binari memorizzati nel sistema può essere estratto utilizzando lo strumento oak-run con la libreria tika. Un clone dei sistemi di produzione può essere acquisito prima dell’aggiornamento e utilizzato per questo processo di estrazione del testo. Questo processo crea quindi l’archivio di testo seguendo i passaggi seguenti:

1. Attraversa l’archivio e raccogli i dettagli dei file binari

Questo passaggio genera un file CSV contenente una tupla di file binari, un percorso e un ID BLOB.

Esegui il comando seguente dalla directory da cui desideri creare l’indice. L’esempio seguente presuppone la home directory del repository.

java java -jar oak-run.jar tika <nodestore path> --fds-path <datastore path> --data-file text-extraction/oak-binary-stats.csv --generate

Dove nodestore path è il mongo_ur o crx-quickstart/repository/segmentstore/

Utilizza il --fake-ds-path=temp parametro invece di –fds-path per accelerare il processo.

2. Riutilizza l’archivio di testo binario disponibile nell’indice esistente

Scaricare i dati di indice dal sistema esistente ed estrarre l'archivio di testo.

Puoi scaricare i dati di indice esistenti utilizzando il seguente comando:

java -jar oak-run.jar index <nodestore path> --fds-path=<datastore path> --index-dump

Dove nodestore path è il mongo_ur o crx-quickstart/repository/segmentstore/

Quindi, utilizza l’immagine indice precedente per popolare l’archivio:

java -jar oak-run.jar tika --data-file text-extraction/oak-binary-stats.csv --store-path text-extraction/store --index-dir ./indexing-result/index-dumps/<oak-index-name>/data populate

Dove oak-index-name è il nome dell’indice full-text, ad esempio "lucene".

3. Esegui il processo di estrazione del testo utilizzando la libreria tika per i file binari non inclusi nel passaggio precedente

java -cp oak-run.jar:tika-app-1.21.jar org.apache.jackrabbit.oak.run.Main tika --data-file text-extraction/oak-binary-stats.csv --store-path text-extraction/store --fds-path <datastore path> extract

Dove datastore path è il percorso dell'archivio dati binario.

L’archivio di testo creato può essere aggiornato e riutilizzato per scenari futuri di reindicizzazione.

Per ulteriori dettagli sul processo di estrazione del testo, vedi Documentazione Oak-run.

Reindicizzazione offline offline-reindexing

offline-reindexing-upgrade-offline-reindexing

Crea l’indice Lucene offline prima dell’aggiornamento. Se utilizzi MongoMK, si consiglia di eseguirlo direttamente su uno dei nodi MongoMk, in quanto questo evita il sovraccarico della rete.

Per creare l’indice offline, effettua le seguenti operazioni:

1. Genera definizioni indice Oak Lucene per la versione AEM di destinazione

Effettua il dump delle definizioni di indice esistenti. Le definizioni degli indici che hanno subito modifiche sono state generate utilizzando il bundle dell’archivio Adobe Granite della versione dell’AEM di destinazione e oak-run.

Per scaricare la definizione dell’indice da sorgente Istanza AEM, esegui questo comando:

NOTE
Per ulteriori dettagli sulle definizioni dell'indice di dumping, consultare il Documentazione Oak.
java -jar oak-run.jar index --fds-path <datastore path> <nodestore path> --index-definitions

Dove datastore path e nodestore path provengono da sorgente istanza AEM.

Quindi, genera le definizioni dell’indice da destinazione Versione AEM utilizzando il bundle dell’archivio Granite della versione di destinazione.

java -cp oak-run.jar:bundle-com.adobe.granite.repository.jar org.apache.jackrabbit.oak.index.IndexDefinitionUpdater --in indexing-definitions_source.json --out merge-index-definitions_target.json --initializer com.adobe.granite.repository.impl.GraniteContent
NOTE
Il processo di creazione della definizione dell’indice precedente è supportato solo dal oak-run-1.12.0 versione successiva. Il targeting viene eseguito utilizzando il bundle dell’archivio Granite com.adobe.granite.repository-x.x.xx.jar.

I passaggi precedenti creano un file JSON denominato merge-index-definitions_target.json che è la definizione dell’indice.

2. Creare un punto di controllo nell’archivio

Creare un punto di controllo nella produzione sorgente Istanza di AEM con una lunga durata. Questa operazione deve essere eseguita prima di clonare l’archivio.

Tramite la console JMX disponibile all’indirizzo http://serveraddress:serverport/system/console/jmx, vai a CheckpointMBean e creare un punto di controllo con una durata sufficiente (ad esempio, 200 giorni). Per questo, richiama CheckpointMBean#createCheckpoint con 17280000000 come argomento della durata in millisecondi.

Al termine, copia il nuovo ID punto di controllo creato e convalida la durata tramite JMX. CheckpointMBean#listCheckpoints.

NOTE
Questo punto di controllo verrà eliminato quando l’indice verrà importato in un secondo momento.

Per ulteriori dettagli, consulta creazione di punti di controllo dalla documentazione di Oak.

Eseguire l'indicizzazione offline per le definizioni dell'indice generato

La reindicizzazione Lucene può essere eseguita offline utilizzando oak-run. Questo processo crea i dati di indice nel disco in indexing-result/indexes. È vero non scrivi nell’archivio e non richiede quindi l’arresto dell’istanza AEM in esecuzione. L'archivio di testo creato viene inserito in questo processo:

java -Doak.indexer.memLimitInMB=500 -jar oak-run.jar index <nodestore path> --reindex --doc-traversal-mode --checkpoint <checkpoint> --fds-path <datastore path> --index-definitions-file merge-index-definitions_target.json --pre-extracted-text-dir text-extraction/store

Sample <checkpoint> looks like r16c85700008-0-8
—fds-path: path to data store.
--pre-extracted-text-dir: Directory of pre-extracted text.
merge-index-definitions_target: JSON file having merged definitions for the target AEM instance. indexes in this file will be re-indexed.

Utilizzo del --doc-traversal-mode Il parametro è utile con le installazioni di MongoMK in quanto migliora notevolmente il tempo di reindicizzazione effettuando lo spooling del contenuto dell’archivio in un file flat locale. Tuttavia, richiede spazio su disco aggiuntivo di dimensioni doppie rispetto a quelle dell’archivio.

Se è presente MongoMK, questo processo può essere accelerato se questo passaggio viene eseguito in un’istanza più vicina all’istanza MongoDB. Se viene eseguito sullo stesso computer, è possibile evitare il sovraccarico di rete.

Ulteriori dettagli tecnici sono disponibili nella sezione documentazione oak-run per l’indicizzazione.

Importazione degli indici importing-indexes

Con AEM 6.4 e versioni più recenti, AEM ha la funzionalità incorporata di importare gli indici dal disco nella sequenza di avvio. La cartella <repository>/indexing-result/indexes viene controllato per verificare la presenza di dati di indice durante l'avvio. È possibile copiare l’indice precreato nella posizione precedente durante la processo di aggiornamento prima di iniziare con la nuova versione di destinazione JAR per AEM. AEM lo importa nell’archivio e rimuove il punto di controllo corrispondente dal sistema. Pertanto, una reindicizzazione è completamente evitata.

Ulteriori suggerimenti e risoluzione dei problemi troubleshooting

Di seguito sono riportati alcuni suggerimenti utili e istruzioni per la risoluzione dei problemi.

Ridurre l'impatto sul sistema di produzione live reduce-the-impact-on-the-live-production-system

Si consiglia di clonare il sistema di produzione e creare l’indice offline utilizzando il clone. Questo elimina qualsiasi potenziale impatto sul sistema di produzione. Tuttavia, il punto di controllo necessario per l’importazione dell’indice deve essere presente nel sistema di produzione. Pertanto, è fondamentale creare un punto di controllo prima di eseguire il clone.

Preparare un Runbook e un’esecuzione di prova prepare-a-runbook-and-trial-run

Si consiglia di preparare un runbook ed eseguire alcune prove prima di eseguire l’aggiornamento in produzione.

Modalità Di Trasferimento Dei Documenti Con Indicizzazione Offline doc-traversal-mode-with-offline-indexing

L’indicizzazione offline richiede più attraversamenti dell’intero archivio. Con le installazioni MongoMK, l’accesso all’archivio avviene tramite la rete, con un impatto sulle prestazioni del processo di indicizzazione. Un'opzione consiste nell'eseguire il processo di indicizzazione offline sulla replica MongoDB stessa che eliminerà il sovraccarico di rete. Un’altra opzione è l’utilizzo della modalità di attraversamento documenti.

È possibile applicare la modalità di attraversamento dei documenti aggiungendo il parametro della riga di comando —doc-traversal al comando oak-run per l’indicizzazione offline. Questa modalità effettua lo spool di una copia dell'intero repository nel disco locale come file flat e la utilizza per eseguire l'indicizzazione.

recommendation-more-help
19ffd973-7af2-44d0-84b5-d547b0dffee2