GNU/Linux >> Linux Esercitazione >  >> Linux

Una guida di SRE a Memcached per la creazione di applicazioni scalabili

Memcached è un sistema di memorizzazione nella cache di memoria generico. Ciò significa che è progettato per salvare (o memorizzare nella cache) le risposte alle domande che richiedono molto tempo per essere calcolate o recuperate ed è probabile che venga chiesto di nuovo . Un caso d'uso comune è accelerare l'uso di un database:ad esempio, se ci aspettiamo di aver bisogno ripetutamente dell'elenco dei "nomi di tutte le persone che fanno parte del team X", potremmo inserire questi dati in Memcached piuttosto che eseguire una query SQL ogni volta. (Nota:a volte Memcached viene chiamato "memcache". Ci atterremo al nome completo in tutto questo articolo.)

Le cache sono utili per la creazione di applicazioni e infrastrutture scalabili, che è il fulcro dell'essere un ingegnere dell'affidabilità del sito (SRE). Questo articolo esamina ciò che serve per utilizzare Memcached in modo efficace.

Consigli sulla memoria e demonizzazione di Memcached

Memcached funziona meglio quando è limitato alla quantità di memoria che il sistema ha a disposizione:verrà sfrattato dati quando occupa più spazio del limite di memoria. Sarà necessario un po' di spazio di memoria per ciò che possiamo chiamare "overhead":memoria necessaria per le operazioni amministrative di Memcached, il sistema operativo e i processi ausiliari.

Più contenuti eccezionali

  • Corso online gratuito:panoramica tecnica di RHEL
  • Impara i comandi avanzati di Linux
  • Scarica cheat sheet
  • Trova un'alternativa Open Source
  • Leggi i migliori contenuti Linux
  • Dai un'occhiata alle risorse open source

Questo viene impostato tramite -m flag della riga di comando, che è probabilmente l'unico flag di cui avrai bisogno per eseguire Memcached. Il -d Il flag (daemonize) di solito non è utile:sui moderni sistemi operativi basati su systemd, Memcached non dovrebbe demonizzarsi. Allo stesso modo, se lo esegui in Docker, non dovrebbe nemmeno demonizzarsi.

L'esecuzione di Memcached in un container va bene, ma è importante considerare cos'altro è in esecuzione sull'host e regolare attentamente i requisiti di memoria.

Esame dei dati Memcached con statistiche

Quando esegui Memcached, è spesso una buona idea connettersi direttamente e giocare per vedere cosa sta succedendo. È ragionevolmente sicuro, anche con le istanze di produzione, a patto di prestare un po' di attenzione.

Il comando più sicuro da eseguire è stats . Farà in modo che Memcached emetta un gran numero di statistiche e dettagli che sono spesso utili:

$ echo stats | nc localhost 11211
...
STAT uptime 1346
...
STAT max_connections 1024
STAT curr_connections 2
STAT total_connections 6
STAT rejected_connections 4
...
STAT get_hits 0
STAT get_misses 0
STAT get_expired 0
...
END

Le statistiche più interessanti sono solitamente "hit", "mancati" e "scaduti". Questi possono spesso raccontare una storia interessante sull'efficacia della cache. Se l'efficacia viene ridotta, questo è motivo di preoccupazione, poiché potrebbe degradare le prestazioni dell'applicazione.

Una cosa leggermente meno sicura da provare è un negozio e recupera. Questo è un buon modo per "calciare le gomme" e imparare come funziona:

$ echo stats | nc localhost 11211
set my_key 0 0 8
my_value^M
STORED
get my_key
VALUE my_key 0 8
my_value
END

Dopo aver digitato mio_valore , è necessario inviare una fine di riga in stile DOS:return e newline. Questo viene fatto in una console Linux usando Ctrl+V e quindi premendo Invio , che genererà il ritorno carattere (ASCII 13), quindi premere Invio come al solito per produrre il newline carattere (ASCII 10).

Il primo 0 sta per "metadati" e passa 0 significa che non ci sono metadati interessanti. Viene trattata come una maschera di bit, quindi 0 ha tutti i bit disattivati. Il secondo 0 è per tempo di scadenza. Significa "non scadono". In generale, questo va bene per i test. Negli ambienti di produzione è bene impostare un tempo di scadenza per le chiavi.

Se si tratta di un'istanza importante, prestare attenzione a non sovrascrivere una chiave importante. Tuttavia, la possibilità di archiviare e recuperare rapidamente tramite la riga di comando consente di assicurarsi che Memcached funzioni correttamente.

Condivisione di Memcached come servizio

Si noti che in una moderna configurazione di microservizi, molti servizi vorranno salvare i dati in Memcache e vale la pena elaborare una strategia per gestirli. Un'opzione è eseguire un Memcache, o un cluster, per servizio. Tuttavia, questo è spesso complicato e richiede una manutenzione elevata. Spesso, la cosa giusta è che i servizi condividano un Memcache. In tal caso, è una buona idea attuare alcune politiche ragionevoli; ad esempio, imponendo di anteporre il nome del servizio alla chiave. Ciò consente di verificare quali servizi utilizzano quanto spazio utilizzando il cachedump comando:

$ echo 'stats items' | nc -w 1 localhost 11211|grep ':number '
STAT items:1:number 2

Questo comando mostrerà tutti gli ID "lastra". Memcache memorizza chiavi di dimensioni simili in lastre; questo esempio ha solo una lastra:

$ echo 'stats cachedump 1 1000' | nc -w 1 localhost 11211
ITEM my_key [8 b; 0 s]
ITEM foo [5 b; 0 s]
END

Qui ci sono due chiavi:una con un valore di 8 byte e una con un valore di 5 byte.

In uno scenario più realistico con molte chiavi, potresti voler elaborare questi dati con awk o uno script e, utilizzando una convenzione locale, scopri quanto spazio sta utilizzando ciascun servizio.

Questo può essere integrato in un sistema di monitoraggio, come Prometheus, per monitorare il comportamento nel tempo.

Inoltre, poiché molti team condividono lo stesso servizio, è utile suggerire che i servizi crittografano e autentichino i dati che stanno memorizzando nella cache. La crittografia simmetrica sulle moderne CPU è efficiente e ciò consente modelli di sicurezza molto più semplici. Un esempio di libreria che supporta questo è Fernet della crittografia. (Fammi sapere nei commenti se vuoi saperne di più su questo.)

Conclusione

Memcached è una tecnologia open source comune per il supporto di un SRE. In questo articolo, ho esaminato come eseguire query su statistiche comuni a riguardo, offerto alcuni consigli sulla configurazione e mostrato come aiutare più team a condividere un singolo cluster Memcached in un modo facilmente monitorabile e sicuro. Hai altre domande su come gestire Memcached? Chiedi nei commenti e condividerò volentieri altri suggerimenti.


Linux
  1. Una guida al terminale Linux per principianti

  2. Come impacchettare applicazioni Python per Linux

  3. 3 approcci alla gestione dei segreti per le applicazioni Flatpak

  4. 4 strumenti per la creazione di sistemi Linux embedded

  5. Cos'è Linux? Una guida per utenti non tecnici

Guida all'installazione e all'uso del firewall CSF

Guida rapida ad Ansible per amministratori di sistema Linux

Guida per la configurazione del server SFTP in Linux

DEFT Linux Una distribuzione Linux per l'informatica forense

Una guida pratica per il comando chroot in Linux

Come installare e proteggere Memcached su Ubuntu 18.04