Was dieses Modul tut #
Memcached wird über eine Textdatei und eine Handvoll Flags konfiguriert: wie viel RAM, wie viele Threads, wie viele Verbindungen. Die richtigen Zahlen hängen von der Instanzgröße ab, und danebenzuliegen ist teuer — entweder ist der Cache zu klein oder du frisst den RAM, den das System braucht.
Das Modul memcached übernimmt das und alles rundherum: es berechnet das Tuning aus dem echten RAM der Maschine, verwaltet die SASL-Zugangsdaten (in diesem Image Pflicht), pflegt das TLS-Zertifikat, das beim ersten Start erzeugt wird —nie im AMI eingebacken— und liefert den Live-Status mit den Statistiken des Dienstes.
Befehle, die Zugangsdaten lesen oder die Konfiguration ändern, brauchen root (nutze sudo). Vorsicht bei optimize: neue Werte anzuwenden startet den Dienst neu, und ein Neustart leert den Cache. Wenn du lieber selbst neu startest, nimm --no-restart.
Schnellanleitung #
Wähle, was du tun willst. Jedes Rezept bringt den fertigen Befehl mit — kopieren und auf Kopieren drücken.
1
Dienststatus ansehen
Prüfe auf einen Blick, ob der Cache gesund ist und welches Tuning greift.
Verbinde dich per SSH mit dem Benutzer ubuntu auf deine Instanz.
Frag den Status ab: du siehst, auf welchen Ports gelauscht wird, ob TLS und SASL aktiv sind, das angewandte Tuning und Live-Statistiken (belegter Speicher, Elemente, Treffer und Fehlschläge):
$ sudo imaxe memcached statusFür ein Dashboard oder ein Skript? Hänge --json an:
$ sudo imaxe memcached status --jsonhits wächst und evictions niedrig bleibt, ist der Cache gut dimensioniert. Schießen die Verdrängungen hoch, spring zu Cache-Größe anpassen.2
Mit dem Cache verbinden
Hol dir Benutzer, Passwort und Port, um deine Anwendung darauf zu richten.
Dieses Image verlangt SASL: es gibt keinen anonymen Zugriff. Frag die Zugangsdaten dieser Instanz ab (das Passwort kommt maskiert):
$ sudo imaxe memcached credentialsWenn du es wirklich kopieren willst, gib es im Klartext aus:
$ sudo imaxe memcached credentials --show-password11211 spricht TLS; 11212 ist Klartext und lauscht nur auf Loopback, für die Werkzeuge des Systems. Öffne 11211 nicht ins Internet: öffne es für den CIDR deiner VPC.3
Cache-Größe anpassen
Berechne Speicher, Threads und Verbindungen für die echte Maschinengröße neu.
Sieh dir erst an, welche Werte herauskämen, ohne etwas zu ändern:
$ sudo imaxe memcached optimize --showÜberzeugen sie dich, wende sie an. Der Dienst startet neu und der Cache wird geleert:
$ sudo imaxe memcached optimizeMehr Cache und weniger Reserve fürs System? Erhöhe den RAM-Prozentsatz:
$ sudo imaxe memcached optimize --memory-pct 75--dry-run siehst du zusätzlich den Konfigurationsblock, der geschrieben würde. Und mit --no-restart wird angewandt, ohne neu zu starten: die neuen Werte greifen beim nächsten Start.4
SASL-Benutzer anlegen
Lege Zugangsdaten für deine Anwendungen an, rotiere oder lösche sie.
Liste die Benutzer in der SASL-Datenbank auf:
$ sudo imaxe memcached users listLege einen pro Anwendung an, mit zufälligem Passwort:
$ sudo imaxe memcached users add app1Ein bestimmtes Passwort? Übergib es über die Standardeingabe, damit es weder in ps noch in der Historie landet:
$ sudo imaxe memcached users add app1 --stdinimaxe memcached users rotate <Benutzer>. Ohne Namen rotiert der Produktbenutzer.5
TLS-Zertifikat prüfen
Prüfe die Gültigkeit und erneuere das Zertifikat der Instanz.
Das Zertifikat entsteht beim ersten Start jeder Instanz und wird nie zwischen Maschinen geteilt. Sieh dir das aktuelle an:
$ sudo imaxe memcached tls showErneuere es jederzeit, auch wenn das aktuelle noch gültig ist:
$ sudo imaxe memcached tls renew --forcetls show aus.Zugangsdaten und Zertifikat werden bei jedem Start von instance-setup erzeugt, aufgerufen durch systemd. Antwortet ein Befehl mit Code 65, hat diese Instanz ihren ersten Start nicht abgeschlossen: prüfe sudo systemctl status memcached, bevor du etwas änderst.
Übersicht #
imaxe memcached <Unterbefehl> [flags]Fast alle Unterbefehle brauchen root (nutze sudo), weil sie die SASL-Datenbank, das Zertifikat oder die Dienstkonfiguration lesen. Hänge --json an status, credentials, users list oder tls show für maschinenlesbare Ausgabe.
Unterbefehle #
| Unterbefehl | Was er tut | Relevante Flags |
|---|---|---|
| optimize | Berechnet und setzt die beste Cache-Größe, Threads und Verbindungen für diese Instanz. | --memory-pct --dry-run --show --no-restart |
| status | Dienststatus: Listener, TLS, SASL, angewandtes Tuning und Live-Statistiken. | --json |
| credentials | Zeigt die SASL-Zugangsdaten dieser Instanz und wie man sich verbindet. | --json --show-password |
| users | Verwaltet SASL-Benutzer: list, add, rotate und delete. | --password --stdin --json |
| set-password | Ändert das Passwort des SASL-Benutzers des Produkts. Kurzform von users rotate. | --random --stdin |
| open-port | Öffnet den memcached-Port in der Host-Firewall (ufw). | --cidr --json |
| close-port | Schließt den Port in der Host-Firewall und entfernt vorhandene Regeln. | --json |
| tls | TLS-Zertifikat dieser Instanz: show und renew. | --force --json |
| instance-setup | Bereitet die Instanz vor dem Start des Dienstes vor. systemd ruft es bei jedem Start auf. | --bake |
Argumente und Flags #
| Flag | Typ | Standard | Beschreibung |
|---|---|---|---|
| --memory-pct | int | 60 | In optimize: Prozentsatz des nutzbaren RAM für den Cache. |
| --reserve-mem-mb | int | 512 | In optimize: RAM in MB, die unangetastet bleibt — reserviert für System und übrige Dienste. |
| --threads | int | 0 | In optimize: Worker-Threads. 0 leitet sie aus der CPU-Anzahl ab. |
| --max-connections | int | 0 | In optimize: gleichzeitige Verbindungen. 0 leitet sie aus der Cache-Größe ab. |
| --dry-run | bool | false | In optimize: schreibt nichts; zeigt die Werte und den Konfigurationsblock, der angewandt würde. |
| --show | bool | false | In optimize: gibt nur die berechneten Werte aus. |
| --no-restart | bool | false | In optimize: schreibt die Konfiguration, startet den Dienst aber nicht neu. Ein Neustart leert den Cache. |
| --password | string | — | In users add/rotate: konkretes Passwort. Fehlt es, wird ein zufälliges erzeugt. |
| --stdin | bool | false | In users add/rotate: liest das Passwort von der Standardeingabe, damit es weder in ps noch in der Historie auftaucht. |
| --show-password | bool | false | In credentials: gibt das Passwort im Klartext aus. Standardmäßig maskiert. |
| --force | bool | false | In tls renew: erneuert auch dann, wenn das aktuelle Zertifikat gültig und von dieser Instanz ist. |
| --random | bool | false | Bei set-password: erzeugt ein starkes Passwort und gibt es einmalig aus. |
| --cidr | string | — | Bei open-port: beschränkt die Regel auf diese Quelle. Ohne Angabe ist jede Quelle erlaubt. |
| --json | bool | false | Gibt das Ergebnis als strukturiertes JSON auf stdout aus. |
Dateien und Pfade #
| Pfad | Inhalt |
|---|---|
| /etc/imaxe/memcached.yml | Modulkonfiguration: Dienst, Pfade und die Standardwerte für optimize, TLS und SASL. |
| /etc/memcached.conf | memcached-Konfiguration. Wird von optimize geschrieben: nicht von Hand bearbeiten. |
| /etc/systemd/system/memcached.service.d/ | systemd-Drop-in mit den Startparametern, die das Modul setzt. |
| /etc/memcached/tls/ | Zertifikat und privater Schlüssel dieser Instanz, beim ersten Start erzeugt. |
| /etc/sasl2/memcached-sasldb2 | SASL-Datenbank mit den Benutzern und ihren Passwörtern. |
Beispiel für 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: memcachedExit-Codes und Logs #
Jeder Aufruf liefert einen Code, den du mit echo $? prüfen kannst — praktisch zum Verketten in Skripten:
Verfolge den Dienst live, während du arbeitest:
$ sudo systemctl status memcached
$ sudo journalctl -u memcached -fFehlerbehebung #
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Es kommt NOSECRET (Code 65) | Die Instanz hat ihren ersten Start nicht abgeschlossen — dabei entstehen die Zugangsdaten. | Prüfe sudo systemctl status memcached und versuch es erneut. |
| Es kommt NOMEMCACHED (Code 64) | Das Modul ist installiert, memcached aber nicht auf dem Host. | Du bist auf einem anderen Image als dem des Produkts: installiere memcached oder nutze das richtige AMI. |
Viele evictions im status | Der Cache ist zu klein für das, was du speicherst: Elemente werden verdrängt, um Platz zu schaffen. | Erhöhe den Prozentsatz mit optimize --memory-pct oder wechsle auf eine Instanz mit mehr RAM. |
| Der Cache ist plötzlich leer | Der Dienst wurde neu gestartet, und memcached schreibt nichts auf Platte. | Nach optimize normal. Zum Anwenden ohne Neustart nimm --no-restart. |
| Der Client lehnt das Zertifikat ab | Es ist selbstsigniert und für jede Instanz eigen. | Vertraue ihm im Client oder prüfe seinen Fingerabdruck mit tls show. |
Steckst du beim Modul Memcached fest?
Schreib uns mit der Ausgabe von «imaxe <module> status --json» und wir antworten dir schnell.