Salta al contenuto

Come posso configurare il periodo di conservazione per il mio cluster MSK?

4 minuti di lettura
0

Desidero aggiornare il periodo di conservazione per il mio cluster Amazon Managed Streaming per Apache Kafka (Amazon MSK).

Breve descrizione

Utilizza il periodo di conservazione dei dati di Amazon MSK per controllare la quantità di dati che archivi in un cluster MSK. Quando imposti un periodo di conservazione, puoi eliminare automaticamente i vecchi messaggi che non ti servono e potresti ridurre i costi di archiviazione e migliorare le prestazioni del cluster.

Per impostazione predefinita, il periodo di conservazione dei dati di Amazon MSK è di 7 giorni. Tuttavia, puoi modificare il periodo di conservazione in base alle tue esigenze. Se non configuri correttamente il periodo di conservazione, Amazon MSK potrebbe non eliminare i dati nel periodo di tempo corretto.

Apache Kafka divide le partizioni dei topic in segmenti. La dimensione massima predefinita di un segmento è 1 GB. Per modificare la dimensione massima, aggiorna log.segment.bytes a livello di broker o **segment.bytes ** a livello di topic. Per ulteriori informazioni, consulta Updating broker configs (Aggiornamento delle configurazioni del broker) e Updating default topic configuration (Aggiornamento della configurazione predefinita di un topic) sul sito web Apache Kafka.

Apache Kafka utilizza anche log.roll.ms per controllare il ciclo di vita di un segmento. Queste impostazioni determinano l'età massima di un segmento e il valore predefinito è 168 ore. Apache Kafka crea nuovi segmenti solo quando segments.bytes o log.roll.ms raggiunge il valore limite configurato. Una volta che Apache Kafka ha creato il nuovo segmento, i segmenti più vecchi sono inattivi. MSK elimina poi i segmenti più vecchi quando i nuovi segmenti raggiungono il valore retention.ms configurato.

Nota: solo i segmenti inattivi possono essere eliminati.

Risoluzione

Per configurare il periodo di conservazione, modifica il parametro retention.ms e l'impostazione segment.ms.

Ad esempio, se imposti il valore di segment.ms su 24hrs e il valore di retention.ms su 24hrs, Amazon MSK elimina i dati dopo 48 ore. Il segmento è quindi inattivo, a seconda che soddisfi prima l'intervallo di tempo di 24 ore o il limite di dati di 1 GB.

Per eliminare i dati dopo 24 ore, riduci il valore predefinito di segment.ms a 1hr e il valore di retention.ms a 23hrs. Amazon MSK elimina i dati dopo 24 ore o quando il segmento raggiunge il valore di dimensione configurato, a seconda dell'evento che si verifica per primo.

Per calcolare la dimensione corrente di tutti i topic, esegui questo comando dall'interfaccia a riga di comando (CLI) di Apache Kafka in Amazon MSK:

./kafka-topics.sh --command-config client.properties --bootstrap-server $BK --list |
xargs -I{} sh -c "echo -n '{} - ' &&
./kafka-log-dirs.sh --command-config client.properties --bootstrap-server $BK --topic-list {} --describe |
grep '^{'  |
jq '[ ..|.size? | numbers ] | add' |
numfmt --to iec " |
tee /tmp/topics-by-size.list

Nota: il comando precedente utilizza l'interfaccia a riga di comando di Apache Kafka per elencare tutti i topic, quindi calcola e restituisce la dimensione di ogni topic.

Esempio di output:

BrandNewTopic - 0
CrossAccountMskTopic - 0
NewTopicwithNewInstance - 0
SameAccountMskTopic - 0
Test - 0
__amazon_msk_canary - 4.6M
__consumer_offsets - 33M
dataloss - 1.8K
datalossB1 - 999
provisioned - 0

Di seguito sono riportate le best practice per l'utilizzo dello storage:

  • Controlla il valore di log.segments.bytes o log.roll.ms e riduci il valore per il segmento. Se imposti un valore inferiore, puoi creare segmenti frequentemente e disattivare i segmenti più vecchi.
  • Ottimizza i parametri segment.ms e segment.bytes per bilanciare l'efficienza dello storage e le prestazioni del broker. Non impostare i parametri troppo bassi perché ciò può creare un sovraccarico aggiuntivo della CPU e sollecitare eccessivamente le risorse del broker.

Nota: log.segments.bytes e log.roll.ms sono impostazioni dei segmenti a livello di broker. segment.bytes e segment.ms sono impostazioni dei segmenti a livello di topic. Le impostazioni a livello di topic hanno una precedenza elevata rispetto alle impostazioni a livello di broker.

Informazioni correlate

retention.ms sul sito web Apache Kafka