Memcached escucha en las interfaces seleccionadas

9

Estoy configurando Memcached en un servidor Debian que tiene dos interfaces: eth0 (público) y eth1 (privado).

Quiero que Memcached escuche en eth1 y lo (loopback) para que se pueda acceder incluso si la red privada se cae pero NO eth0 (public).

Desde la página de manual para memcached, entiendo que la -lopción solo puede tomar una dirección IP. Pensé en usar sockets UNIX para conexiones locales, pero la página del manual dice

-s
Ruta del socket Unix para escuchar ( deshabilita el soporte de red ).

El único otro método que conozco es bloquear las conexiones a través de eth0 usando IPTables. ¿Hay alguna otra solución que no utilice el firewall?

A.Jesin
fuente

Respuestas:

8

No es tan conveniente como enumerar una interfaz y obtener todas sus direcciones enlazadas, y requiere conocer todas las direcciones enlazadas a una interfaz, pero se puede hacer. (Tenga en cuenta que no puede simplemente enumerar algunas interfaces, como ha descubierto, ya sea una única interfaz, todas las interfaces o una lista de IP).

La -lopción puede tomar una interfaz, INADDR_ANY (que significa todas las direcciones en todas las interfaces) o una lista de direcciones IP separadas por comas. Una dirección IP puede tener una especificación de puerto opcional. Entonces, por ejemplo

memcached -l 127.0.0.1:11211,127.0.0.1:11212,10.1.2.3

tendrá memcached escuchar lo0 solo en 127.0.0.1 en los puertos 11211 y 11212 y también en la dirección 10.1.2.3 (en la interfaz que sea) en cualquier puerto establecido por -po -U.

Debe saber / tener todas las direcciones que desea vincular. Esta es quizás una gran brecha entre lo0una lista de IP (ya que las limitaciones de recursos internos predeterminadas de memcached no permitirán vincular las direcciones ~ 2 ^ 24 en esa interfaz)

Eric Towers
fuente
Usar una lista de direcciones IP separadas por comas funciona. ¡Muchas gracias! ¿Se introdujo esta característica en una versión específica? Porque no puedo encontrar la línea "o una lista de direcciones IP separadas por comas" en ninguna página de manual.
A.Jesin
1
@ A.Jesin: hurgando en configuraciones antiguas, esto ha existido desde al menos 2009. Parece que en 2007 se agregó un parche para múltiples IP grokbase.com/t/danga/memcached/078qdmzphz/… y lists.danga.com/ pipermail / memcached / archivos adjuntos / 20070823 /… . Para mí no está claro si esto es memcached ascendente o algunas modificaciones locales que eventualmente lo hicieron ascendente.
Eric Towers
@ A.Jesin: Además, no olvide que en los sitios de StackExchange puede "aceptar" la respuesta que mejor funcione para usted (para que, en el futuro, otros que tengan su misma pregunta encuentren la mejor respuesta de inmediato).
Eric Towers
¡Interesante! Esto parece haberlo hecho en sentido ascendente, pero la versión en CentOS 6.x aún no lo admite.
falso el
10

Como se señaló en la respuesta aceptada, las versiones más recientes lo admiten:

memcached -l 127.0.0.1:11211,127.0.0.2:11211  

o

memcached -l 127.0.0.1:11211 -l 127.0.0.2:11211  

Las versiones anteriores (incluidas con CentOS 6.5 o anterior) aún no lo admiten, pueden escuchar en todas las interfaces, una sola dirección IP o un socket.
No es una combinación de esos.

Su única forma de resolver esto es vincularlo a todas las interfaces y cortafuegos a la interfaz pública o vincularlo solo a 127.0.0.1 y enviar las solicitudes a eth1: 11211 a lo0: 11211 a través de iptables.

falsificador
fuente