Cosa fa questo modulo #
Memcached si configura con un file di testo e una manciata di flag: quanta RAM dedicargli, quanti thread, quante connessioni. Azzeccare quei numeri dipende dalla dimensione dell'istanza, e sbagliare costa caro — o resti a corto di cache o ti mangi la RAM che serve al sistema.
Il modulo memcached se ne occupa, e di tutto ciò che circonda il servizio: calcola il tuning a partire dalla RAM reale della macchina, gestisce le credenziali SASL (obbligatorie in questa immagine), mantiene il certificato TLS generato al primo avvio —mai incorporato nell'AMI— e ti dà lo stato dal vivo con le statistiche del servizio.
I comandi che leggono credenziali o toccano la configurazione richiedono root (usa sudo). Attenzione a optimize: applicare valori nuovi riavvia il servizio, e un riavvio svuota la cache. Se preferisci riavviare tu, usa --no-restart.
Guida rapida #
Scegli cosa vuoi fare. Ogni ricetta porta il comando già scritto — copialo e premi Copia.
1
Vedere lo stato del servizio
Verifica a colpo d'occhio che la cache sia sana e quale tuning è applicato.
Collegati via SSH alla tua istanza con l'utente ubuntu.
Chiedi lo stato: vedrai su quali porte ascolta, se TLS e SASL sono attivi, il tuning applicato e le statistiche dal vivo (memoria in uso, elementi, hit e miss):
$ sudo imaxe memcached statusTi serve per un pannello o uno script? Aggiungi --json:
$ sudo imaxe memcached status --jsonhits cresce e evictions resta basso, la cache è ben dimensionata. Se le espulsioni schizzano, passa a Regolare la dimensione.2
Collegarmi alla cache
Ottieni utente, password e porta per puntarci la tua applicazione.
Questa immagine richiede SASL: niente accesso anonimo. Chiedi le credenziali di questa istanza (la password esce mascherata):
$ sudo imaxe memcached credentialsQuando devi copiarla davvero, mostrala in chiaro:
$ sudo imaxe memcached credentials --show-password11211 parla TLS; la 11212 è in chiaro e ascolta solo su loopback, per gli strumenti del sistema. Non aprire la 11211 su Internet: aprila al CIDR della tua VPC.3
Regolare la dimensione della cache
Ricalcola memoria, thread e connessioni per la dimensione reale della macchina.
Guarda prima quali valori uscirebbero, senza toccare nulla:
$ sudo imaxe memcached optimize --showSe ti convincono, applicali. Il servizio si riavvia e la cache si svuota:
$ sudo imaxe memcached optimizeVuoi più cache e meno margine per il sistema? Alza la percentuale di RAM:
$ sudo imaxe memcached optimize --memory-pct 75--dry-run vedi anche il blocco di configurazione che verrebbe scritto. E con --no-restart si applica senza riavviare: i valori nuovi entrano al prossimo avvio.4
Creare utenti SASL
Crea, ruota o elimina le credenziali usate dalle tue applicazioni.
Elenca gli utenti presenti nel database SASL:
$ sudo imaxe memcached users listCreane uno per applicazione, con password casuale:
$ sudo imaxe memcached users add app1Password specifica? Passala sullo standard input, così non finisce né in ps né nella cronologia:
$ sudo imaxe memcached users add app1 --stdinimaxe memcached users rotate <utente>. Senza nome ruota quella dell'utente del prodotto.5
Controllare il certificato TLS
Controlla la scadenza e rinnova il certificato dell'istanza.
Il certificato si genera al primo avvio di ogni istanza, quindi non è mai condiviso tra macchine. Guarda quello in uso:
$ sudo imaxe memcached tls showRinnovalo quando vuoi, anche se l'attuale è ancora valido:
$ sudo imaxe memcached tls renew --forcetls show.Credenziale e certificato li materializza instance-setup a ogni avvio, chiamato da systemd. Se un comando risponde con il codice 65, quell'istanza non ha completato il primo avvio: controlla sudo systemctl status memcached prima di toccare altro.
Sinossi #
imaxe memcached <sottocomando> [flags]Quasi tutti i sottocomandi richiedono root (usa sudo) perché leggono il database SASL, il certificato o la configurazione del servizio. Aggiungi --json a status, credentials, users list o tls show per un output leggibile dalle macchine.
Sottocomandi #
| Sottocomando | Cosa fa | Flag rilevanti |
|---|---|---|
| optimize | Calcola e applica la migliore dimensione di cache, thread e connessioni per questa istanza. | --memory-pct --dry-run --show --no-restart |
| status | Stato del servizio: ascolti, TLS, SASL, tuning applicato e statistiche dal vivo. | --json |
| credentials | Mostra le credenziali SASL di questa istanza e come collegarsi. | --json --show-password |
| users | Gestisce gli utenti SASL: list, add, rotate e delete. | --password --stdin --json |
| set-password | Cambia la password dell'utente SASL del prodotto. Scorciatoia di users rotate. | --random --stdin |
| open-port | Apre la porta di memcached nel firewall dell'host (ufw). | --cidr --json |
| close-port | Chiude la porta nel firewall dell'host e rimuove le regole presenti. | --json |
| tls | Certificato TLS di questa istanza: show e renew. | --force --json |
| instance-setup | Prepara l'istanza prima di avviare il servizio. Lo chiama systemd a ogni avvio. | --bake |
Argomenti e flag #
| Flag | Tipo | Predefinito | Descrizione |
|---|---|---|---|
| --memory-pct | int | 60 | In optimize: percentuale della RAM utilizzabile dedicata alla cache. |
| --reserve-mem-mb | int | 512 | In optimize: RAM in MB che non si tocca, riservata al sistema e agli altri servizi. |
| --threads | int | 0 | In optimize: thread di lavoro. 0 li deriva dal numero di CPU. |
| --max-connections | int | 0 | In optimize: connessioni simultanee. 0 le deriva dalla dimensione della cache. |
| --dry-run | bool | false | In optimize: non scrive nulla; mostra i valori e il blocco di configurazione che verrebbe applicato. |
| --show | bool | false | In optimize: stampa solo i valori calcolati. |
| --no-restart | bool | false | In optimize: scrive la configurazione ma non riavvia il servizio. Un riavvio svuota la cache. |
| --password | string | — | In users add/rotate: password specifica. Se omessa, ne viene generata una casuale. |
| --stdin | bool | false | In users add/rotate: legge la password dallo standard input, così non compare in ps né nella cronologia. |
| --show-password | bool | false | In credentials: stampa la password in chiaro. Per impostazione predefinita è mascherata. |
| --force | bool | false | In tls renew: rigenera anche se il certificato attuale è valido e di questa istanza. |
| --random | bool | false | In set-password: genera una password forte e la stampa una sola volta. |
| --cidr | string | — | In open-port: limita la regola a quell'origine. Senza, è consentita qualsiasi origine. |
| --json | bool | false | Emette il risultato come JSON strutturato su stdout. |
File e percorsi #
| Percorso | Contenuto |
|---|---|
| /etc/imaxe/memcached.yml | Configurazione del modulo: servizio, percorsi e valori predefiniti di optimize, TLS e SASL. |
| /etc/memcached.conf | Configurazione di memcached. La scrive optimize: non modificarla a mano. |
| /etc/systemd/system/memcached.service.d/ | Drop-in di systemd con i parametri di avvio applicati dal modulo. |
| /etc/memcached/tls/ | Certificato e chiave privata di questa istanza, generati al primo avvio. |
| /etc/sasl2/memcached-sasldb2 | Database SASL con gli utenti e le loro password. |
Esempio di memcached.yml:
service: memcached
port: 11211
optimize:
memory_pct: 60
memory_min_mb: 64
reserve_mem_mb: 512
threads: 0
max_connections: 0
tls:
enabled: true
days: 3650
plain_local_port: 11212
sasl:
enabled: true
user: memcachedCodici di uscita e log #
Ogni esecuzione restituisce un codice che puoi controllare con echo $? — utile per concatenare negli script:
Segui il servizio dal vivo mentre operi:
$ sudo systemctl status memcached
$ sudo journalctl -u memcached -fRisoluzione dei problemi #
| Sintomo | Causa probabile | Soluzione |
|---|---|---|
| Esce NOSECRET (codice 65) | L'istanza non ha completato il primo avvio, che è quando si materializza la credenziale. | Controlla sudo systemctl status memcached e riprova. |
| Esce NOMEMCACHED (codice 64) | Il modulo è installato ma memcached non è sull'host. | Sei su un'immagine diversa da quella del prodotto: installa memcached o usa l'AMI giusta. |
Molte evictions in status | La cache è piccola per quello che memorizzi: gli elementi vengono espulsi per fare spazio. | Alza la percentuale con optimize --memory-pct o passa a un'istanza con più RAM. |
| La cache appare vuota all'improvviso | Il servizio si è riavviato, e memcached non persiste nulla su disco. | Normale dopo optimize. Per applicare senza riavviare, usa --no-restart. |
| Il client rifiuta il certificato | È autofirmato e proprio di ogni istanza. | Fidati nel tuo client o valida l'impronta con tls show. |
Bloccato con il modulo Memcached?
Scrivici allegando l'output di «imaxe <module> status --json» e ti rispondiamo in fretta.