Qué hace este módulo #
Memcached se configura con un fichero de texto y un puñado de flags: cuánta RAM dedicarle, cuántos hilos, cuántas conexiones. Acertar con esos números depende del tamaño de la instancia, y equivocarse sale caro — te quedas corto de cache o te comes la RAM que necesita el sistema.
El módulo memcached se encarga de eso y de todo lo que rodea al servicio: calcula el tuning a partir de la RAM real de la máquina, gestiona las credenciales SASL (obligatorias en esta imagen), mantiene el certificado TLS que se genera en el primer arranque —nunca se hornea en la AMI— y te da el estado en vivo con las estadísticas del servicio.
Los comandos que leen credenciales o tocan la configuración necesitan root (usa sudo). Ojo con optimize: al aplicar valores nuevos se reinicia el servicio, y un reinicio vacía la cache. Si prefieres aplicar y reiniciar tú, usa --no-restart.
Guía rápida #
Elige lo que quieres hacer. Cada receta trae el comando ya escrito — solo cópialo y pulsa Copiar.
1
Ver el estado del servicio
Comprueba de un vistazo que la cache está sana y qué tuning tiene aplicado.
Conéctate por SSH a tu instancia con el usuario ubuntu.
Pide el estado: verás en qué puertos escucha, si TLS y SASL están activos, el tuning aplicado y las estadísticas en vivo (memoria en uso, elementos, aciertos y fallos):
$ sudo imaxe memcached status¿Lo quieres para un panel o un script? Añade --json:
$ sudo imaxe memcached status --jsonhits crece y evictions se mantiene bajo, la cache está bien dimensionada. Si las expulsiones se disparan, salta a Ajustar el tamaño.2
Conectarme a la cache
Consigue el usuario, la password y el puerto para apuntar tu aplicación.
Esta imagen exige SASL: no hay acceso anónimo. Pide las credenciales de esta instancia (la password sale enmascarada):
$ sudo imaxe memcached credentialsCuando vayas a copiarla de verdad, muéstrala en claro:
$ sudo imaxe memcached credentials --show-password11211 va con TLS; el 11212 es texto plano y solo escucha en loopback, para las herramientas del propio sistema. No abras el 11211 a Internet: ábrelo al CIDR de tu VPC.3
Ajustar el tamaño de la cache
Recalcula memoria, hilos y conexiones para el tamaño real de la máquina.
Mira primero qué valores saldrían, sin tocar nada:
$ sudo imaxe memcached optimize --showSi te convencen, aplícalos. El servicio se reinicia y la cache se vacía:
$ sudo imaxe memcached optimize¿Quieres más cache y menos margen para el sistema? Sube el porcentaje de RAM:
$ sudo imaxe memcached optimize --memory-pct 75--dry-run ves además el bloque de configuración que se escribiría. Y con --no-restart se aplica sin reiniciar: los valores nuevos entran en el siguiente arranque.4
Dar de alta usuarios SASL
Crea, rota o borra las credenciales que usan tus aplicaciones.
Lista los usuarios que existen en la base SASL:
$ sudo imaxe memcached users listDa de alta uno por aplicación, con password aleatoria:
$ sudo imaxe memcached users add app1¿Password concreta? Pásala por la entrada estándar para que no quede en ps ni en el historial del shell:
$ sudo imaxe memcached users add app1 --stdinimaxe memcached users rotate <usuario>. Sin nombre rota la del usuario del producto.5
Revisar el certificado TLS
Comprueba la caducidad y renueva el certificado de la instancia.
El certificado se genera en el primer arranque de cada instancia, así que nunca se comparte entre máquinas. Mira el que está en uso:
$ sudo imaxe memcached tls showRenuévalo cuando quieras, aunque el actual siga siendo válido:
$ sudo imaxe memcached tls renew --forcetls show.La credencial y el certificado los materializa instance-setup en cada arranque, llamado por systemd. Si un comando responde con el código 65, esa instancia no ha completado su primer arranque: revisa sudo systemctl status memcached antes de tocar nada.
Sinopsis #
imaxe memcached <subcomando> [flags]Casi todos los subcomandos necesitan root (usa sudo) porque leen la base SASL, el certificado o la configuración del servicio. Añade --json a status, credentials, users list o tls show para salida legible por máquina.
Subcomandos #
| Subcomando | Qué hace | Flags relevantes |
|---|---|---|
| optimize | Calcula y aplica el mejor tamaño de cache, hilos y conexiones para esta instancia. | --memory-pct --dry-run --show --no-restart |
| status | Estado del servicio: escuchas, TLS, SASL, tuning aplicado y estadísticas en vivo. | --json |
| credentials | Muestra las credenciales SASL de esta instancia y cómo conectarse. | --json --show-password |
| users | Gestiona los usuarios SASL: list, add, rotate y delete. | --password --stdin --json |
| set-password | Cambia la password del usuario SASL del producto. Atajo de users rotate. | --random --stdin |
| open-port | Abre el puerto de memcached en el cortafuegos del host (ufw). | --cidr --json |
| close-port | Cierra el puerto en el cortafuegos del host y retira las reglas que hubiera. | --json |
| tls | Certificado TLS de esta instancia: show y renew. | --force --json |
| instance-setup | Prepara la instancia antes de arrancar el servicio. Lo llama systemd en cada arranque. | --bake |
Argumentos y flags #
| Flag | Tipo | Por defecto | Descripción |
|---|---|---|---|
| --memory-pct | int | 60 | En optimize: porcentaje de la RAM utilizable que se dedica a la cache. |
| --reserve-mem-mb | int | 512 | En optimize: RAM en MB que no se toca, reservada para el sistema y el resto de servicios. |
| --threads | int | 0 | En optimize: hilos de proceso. 0 los deriva del número de CPUs. |
| --max-connections | int | 0 | En optimize: conexiones simultáneas. 0 las deriva del tamaño de la cache. |
| --dry-run | bool | false | En optimize: no escribe nada; muestra los valores y el bloque de configuración que se aplicaría. |
| --show | bool | false | En optimize: solo imprime los valores calculados. |
| --no-restart | bool | false | En optimize: escribe la configuración pero no reinicia el servicio. Un reinicio vacía la cache. |
| --password | string | — | En users add/rotate: password concreta. Si se omite, se genera aleatoria. |
| --stdin | bool | false | En users add/rotate: lee la password de la entrada estándar, para que no aparezca en ps ni en el historial. |
| --show-password | bool | false | En credentials: imprime la password en claro. Por defecto se enmascara. |
| --force | bool | false | En tls renew: regenera aunque el certificado actual sea válido y de esta instancia. |
| --random | bool | false | En set-password: genera una password fuerte y la imprime una sola vez. |
| --cidr | string | — | En open-port: limita la regla a ese origen. Sin él, se permite cualquier origen. |
| --json | bool | false | Emite el resultado como JSON estructurado en stdout. |
Ficheros y rutas #
| Ruta | Contenido |
|---|---|
| /etc/imaxe/memcached.yml | Configuración del módulo: servicio, rutas, y los valores por defecto de optimize, TLS y SASL. |
| /etc/memcached.conf | Configuración de memcached. La escribe optimize: no la edites a mano. |
| /etc/systemd/system/memcached.service.d/ | Drop-in de systemd con los parámetros de arranque que aplica el módulo. |
| /etc/memcached/tls/ | Certificado y clave privada de esta instancia, generados en el primer arranque. |
| /etc/sasl2/memcached-sasldb2 | Base de datos SASL con los usuarios y sus passwords. |
Ejemplo de 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: memcachedCódigos de salida y logs #
Cada ejecución devuelve un código que puedes comprobar con echo $? — útil para encadenar en scripts:
Sigue el servicio en vivo mientras operas:
$ sudo systemctl status memcached
$ sudo journalctl -u memcached -fResolución de problemas #
| Síntoma | Causa probable | Solución |
|---|---|---|
| Sale NOSECRET (código 65) | La instancia no ha completado su primer arranque, que es cuando se materializa la credencial. | Comprueba sudo systemctl status memcached y vuelve a intentarlo. |
| Sale NOMEMCACHED (código 64) | El módulo está instalado pero memcached no está en el host. | Estás en una imagen que no es la del producto: instala memcached o usa la AMI correcta. |
Muchas evictions en status | La cache es pequeña para lo que guardas: se expulsan elementos para hacer sitio. | Sube el porcentaje con optimize --memory-pct o cambia a una instancia con más RAM. |
| La cache aparece vacía de golpe | El servicio se ha reiniciado, y memcached no persiste nada en disco. | Normal tras optimize. Para aplicar sin reiniciar, usa --no-restart. |
| El cliente rechaza el certificado | Es autofirmado y propio de cada instancia. | Confía en él en tu cliente o valida su huella con tls show. |
¿Te atascaste con el módulo Memcached?
Escríbenos con la salida de «imaxe <módulo> status --json» y te respondemos rápido.