Site is under maintenance mode. Please wait few min!
Saltar al contenido

Cómo almacenar activos de WordPress en espacios digitales oceánicos

marzo 4, 2020

 

Introducción

Redis es un almacén de datos clave-valor de código abierto, utilizando un modelo de almacenamiento en memoria con las escrituras en disco opcionales para la persistencia. Cuenta con transacciones, un patrón de mensajería pub / sub y conmutación automática entre otra funcionalidad. Redis tiene clientes escritos en la mayoría de los idiomas con los recomendados destacados en su página web.

para entornos de producción, replicar sus datos a través de al menos dos nodos se considera la mejor práctica. Esto permite la recuperación en caso de fallo medio ambiente, lo cual es especialmente importante cuando la base de usuarios de la aplicación crece. También le permite de forma segura interactúan con los datos de producción sin modificar o afectar el rendimiento.

En esta guía, vamos a configurar la replicación entre dos servidores, tanto con Ubuntu 16.04. Este proceso se puede adaptar fácilmente para más servidores si es necesario.

Requisitos previos

Con el fin de completar esta guía, tendrá acceso a dos servidores de Ubuntu 16.04. En línea con la terminología que utiliza Redis, nos referiremos a los servidores primarios responsables de aceptar solicitudes de escritura como el servidor maestro y el servidor de sólo lectura secundaria como el servidor esclavo .

Usted debe tener un usuario no root con privilegios sudo configurados en cada uno de estos servidores. Además, esta guía se supone que tiene un servidor de seguridad básica en su lugar. Puedes seguir nuestra guía de configuración inicial del servidor de Ubuntu 16.04 para cumplir con estos requisitos.

Cuando esté listo para comenzar, continuar con esta guía.

Paso 1: Instalar Redis

Para empezar, vamos a instalar Redis tanto en el maestro y esclavo servidores.

vamos a instalar un paquete de hasta a la fecha de Redis Server utilizando de Chris Lea Redis PPA. Siempre tenga cuidado al habilitar los repositorios de terceros. En este caso, Chris Lea es un empaquetador bien establecida que mantiene muchos paquetes de alta calidad.

En primer lugar, añadir el PPA a ambos de sus servidores:

sudo apt-add-repository ppa:chris-lea/redis-server

  • sudo ppa add-apt-repositorio: Chris-Lea / Redis-servidor

Pulse ENTER para aceptar el repositorio.

A continuación, actualizar índice de paquetes local del servidor e instalar el paquete del servidor Redis escribiendo:

sudo apt-get update
sudo apt-get install redis-server

  • sudo apt-get update
  • sudo apt-get install redis-servidor

Esto instalará el servidor Redis e iniciar el Servicio.

Compruebe que Redis es en servicio escribiendo:

redis-cli ping

  • Redis-cli de ping

Usted debe recibir de vuelta la siguiente respuesta:

OutputPONG

Esto indica que se está ejecutando y Redis es accesible para el cliente local.

Paso 2: el tráfico seguro entre los dos servidores

Antes de configurar la replicación, es importante comprender las implicaciones de modelo de seguridad de Redis. Redis ninguna oferta opciones de cifrado nativo y se supone que se ha desplegado en una red privada de compañeros de confianza.

Si Redis se implementa en una red aislada …

Si los servidores están operando en una red aislada, es probable que sólo necesita ajustar el archivo de configuración Redis para unirse a su dirección IP de red aislada.

Abrir el archivo de configuración Redis en cada equipo:

sudo nano /etc/redis/redis.conf

  • sudo nano /etc/redis/redis.conf

Encuentra la línea se unen y anexar propia dirección IP aislada de red del servidor:

bind 127.0.0.1 isolated_IP_address

Guardar y cerrar el archivo . Reinicie el servicio escribiendo:

sudo systemctl restart redis-server.service

  • sudo systemctl reinicio Redis-server.service

abrir el acceso al puerto Redis:

sudo ufw allow 6379

  • sudo permiten UFW 6379

Ahora debería ser capaz de acceder a un servidor el otro por proporcionar la dirección IP del servidor alternativo al comando Redis-CLI con la bandera -h:

redis-cli -h isolated_IP_address ping

  • Redis-cli -h isolated_IP_address de ping

OutputPONG

Redis es ahora capaz de aceptar conexiones de red aislada.

Si Redis es No implementado en un aislado Red …

Para redes que no están aisladas o que no controla, es imperativo que el tráfico está asegurada a través de otros medios. Hay muchas opciones para proteger el tráfico entre los servidores Redis, incluyendo:

  • de túnel con stunnel: Necesitará un túnel de entrada y salida para cada servidor. Un ejemplo está disponible hacia la parte inferior de la guía.
  • de túnel con spiped: Usted tendrá que crear dos archivos de unidades systemd por servidor, uno para comunicarse con el servidor remoto y uno para la transmisión de las conexiones a su propio proceso Redis. Los detalles se incluyen hacia la parte inferior de la guía.
  • Configuración de una VPN con PeerVPN: Ambos servidores tendrán que ser accesibles en la VPN.

Utilizando uno de los métodos anteriores, establecer un método de comunicación seguro entre el maestro y el servidor Redis esclavo. Usted debe conocer la dirección IP y el puerto que necesita cada máquina de forma segura a conectarse al servicio Redis en su par.

Paso 3: Configurar Redis Maestro

Ahora que Redis es en servicio en cada servidor y un canal seguro de comunicación ha sido establecida, tenemos que editar sus archivos de configuración. Vamos a empezar con el servidor que funcionará como el maestro . /etc/redis/redis.conf

abierta con su editor de texto favorito:

sudo nano /etc/redis/redis.conf

  • sudo nano /etc/redis/redis.conf

Comience por encontrar la configuración TCP-keepalive y se establece en 60 segundos como el comentarios sugieren. Esto ayudará a Redis detectar problemas de red o de servicio:

. . .
tcp-keepalive 60
. . .

Encuentra la directiva requirepass y la puso a una frase de contraseña fuerte. Mientras que el tráfico de Redis debe estar a salvo de terceros, esto proporciona autenticación a sí Redis. Desde Redis es rápido y no clasifica los intentos de contraseña límite, elegir una contraseña fuerte, compleja para proteger contra los intentos de fuerza bruta:

requirepass your_redis_master_password

Por último, hay algunos ajustes opcionales es posible que desee ajustar en función de su situación de uso.

Si usted no quiere Redis a las teclas de forma automática ciruela más antiguos y menos usadas ya que se llena, puede desactivar el desalojo automática de claves:

maxmemory-policy noeviction

Para la mejora de las garantías de durabilidad, puede activar la persistencia de archivos sólo de adición. Esto ayudará a minimizar la pérdida de datos en caso de un fallo del sistema a expensas de los archivos más grandes y ligeramente menor rendimiento:

appendonly yes
appendfilename "redis-staging-ao.aof"

Cuando haya terminado, guarde y cierre el archivo.

Reiniciar el servicio Redis para recargar nuestros cambios de configuración:

sudo systemctl restart redis-server.service

  • sudo systemctl reinicio Redis-server.service

Ahora que el servidor principal configurado, tome un momento para probarlo.

Paso 4: Prueba del Registro Redis Maestro

que se puede autenticar usando la contraseña que estableció por iniciar el cliente Redis:

redis-cli

  • Redis-cli

En primer lugar, trata de un comando sin necesidad de autenticación: información

info replication

  • la replicación

Usted debe obtener la siguiente respuesta:

Redis master outputNOAUTH Authentication required.

se espera e indica que nuestro servidor Redis está rechazando correctamente las solicitudes no autenticadas.

A continuación, utilice el comando de autenticación para autenticar:

auth your_redis_master_password

  • auth your_redis_master_password

Debe recibir confirmación de que sus credenciales fueron aceptadas:

Redis master outputOK

Si intenta de nuevo el comando, se debe tener éxito esta vez:

info replication

  • información replicación

Redis master output# Replication
role:master
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

Mientras que usted está autenticado, establecer una clave de prueba para que podamos comprobar la replicación posterior: ensayo de deformación

set test 'this key was defined on the master server'

  • ‘esta clave se definió en el servidor maestro atrás

salida a la shell del sistema operativo cuando ya ha terminado: la salida

exit

Ahora que tenemos el servidor maestro listo, vamos a pasar a nuestra máquina de esclavos.

Paso 5: Configurar el esclavo Redis

A continuación, tenemos que hacer algunos cambios para permitir que nuestro servidor esclavo para conectarse a nuestra instancia principal. /etc/redis/redis.conf

abierto en el servidor esclavo:

sudo nano /etc/redis/redis.conf

  • sudo nano /etc/redis/redis.conf

En primer lugar, encontrar y elimine la línea slaveof. Esta directiva tiene la dirección IP y el puerto que se utiliza para contactos de forma segura al servidor Redis principal, separado por un espacio. Por defecto, el servidor Redis escucha en 6379 en la interfaz local, pero cada uno de los métodos de seguridad de red modifica el valor por defecto de alguna manera para que las partes externas. El

que los valores de uso dependerá del método que utilizó para asegurar su tráfico de red:

  • aislado de red: mediante la dirección IP y el puerto de red aislada Redis (6379) del servidor maestro (por ejemplo slaveof isolated_IP_address 6379).
  • stunnel o spiped: utilizan la interfaz local (127.0.0.1) y el puerto configurado para el tráfico del túnel (esto sería slaveof 127.0.0.1 8000 si ha seguido la guía).
  • PeerVPN: Uso de direcciones IP VPN del servidor principal y el puerto regular de Redis (esto sería slaveof 10.8.0.1 6379 si ha seguido la guía).

La forma general es:

slaveof ip_to_contact_master port_to_contact_master

A continuación, elimine y rellene la línea masterauth con la contraseña establecida para el servidor maestro Redis:

masterauth your_redis_master_password

establecer una contraseña para el servidor esclavo para evitar el acceso no autorizado. Las mismas recomendaciones acerca complejidad de la contraseña se aplican aquí:

requirepass your_redis_slave_password

Guardar y cerrar el archivo cuando haya terminado.

Paso 6: Probar la Redis Esclavo y aplicar los cambios

Antes de reiniciar el servicio para poner en práctica nuestros cambios, vamos a conectar a la instancia local Redis en la máquina de esclavos y verificar que la clave de prueba no está definido: redescubrir

redis-cli

  • cli

de consulta para la clave escribiendo:

get test

  • consiguen prueba

deberías obtener la siguiente respuesta:

Redis slave output(nil)

Esto indica que la instancia local Redis no tiene una clave denominada prueba. posterior salida al shell escribiendo:

exit

    salida

  • servicio

Reinicie los Redis en el esclavo para implementar estos cambios:

sudo systemctl restart redis-server.service

  • sudo systemctl reinicio Redis-server.service

Esto se aplicará todos los cambios hicimos al archivo de configuración de los esclavos Redis.

Volver a conectar a la instancia Redis local de nuevo:

redis-cli

  • Redis-cli

Al igual que con el servidor maestro Redis, operaciones ahora deben fallar si no autorizada:

get test

  • obtener prueba

Redis slave output(error) NOAUTH Authentication required.

Ahora, la autenticación mediante el la contraseña del Redis esclavo que se establece en la última sección:

auth your_redis_slave_password

  • auth your_redis_slave_password

Redis slave outputOK

Si tratamos de acceder a la clave esta vez, nos encontraremos que está disponible:

get test

  • obtener prueba

Redis slave output"this key was defined on the master server"

vez reiniciamos nuestro servicio Redis en el esclavo, la replicación se inició inmediatamente.

Esto se puede comprobar con el comando de información de Redis, que reporta información acerca de la replicación. El valor de MASTER_HOST y MASTER_PORT debe coincidir con los argumentos que utilizó para la opción slaveof: información

info replication

  • replicación

Redis slave output# Replication
role:slave
master_host:10.8.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:1387
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

Si quieres pasar a ver la misma información en el servidor maestro Redis, se vería algo como esto:

información info replication

  • replicación

Redis master output# Replication
role:master
connected_slaves:1
slave0:ip=10.8.0.2,port=6379,state=online,offset=1737,lag=1
master_repl_offset:1737
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1736

Como se puede ver, los servidores maestro y esclavo identifican correctamente entre sí en su relación definida.

Paso 7: Promoción de un esclavo a maestro Redis

Una razón principal para la creación de la réplica es manejar los fallos con mínima pérdida de datos y tiempo de inactividad. Redis esclavos pueden ser promovidos a condición de maestro de tráfico de escritura mango en caso de un fallo del maestro Redis.

La promoción de un esclavo Redis manualmente

Nos puede hacerlo de forma manual desde el servidor esclavo Redis. Conectarse con el cliente Redis:

redis-cli

  • Redis-cli

la autentificación mediante la contraseña esclavo Redis:

auth your_redis_slave_password

  • auth your_redis_slave_password

Antes de promover el esclavo Redis, tratar de sobrescribir la clave de prueba:

set test 'this key was overwritten on the slave server'

  • equipo de prueba ‘esta clave se sobrescribe en el servidor esclavo’

esto debe fallar porque, por defecto, los esclavos Redis están configurados para ser de sólo lectura con la lectura de esclavos-única opción sí:

Redis slave output(error) READONLY You can't write against a read only slave.

para deshabilitar la replicación y promover el servidor actual a título de principal, utilice el comando slaveof con el valor de nadie:

slaveof no one

  • slaveof nadie

Redis slave outputOK

Compruebe la información de replicación de nuevo: información

info replication

  • replicación

Redis slave output# Replication
role:master
connected_slaves:0
master_repl_offset:6749
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

Como se puede ver, el esclavo se ha designado un maestro Redis.

intente sustituir la tecla de nuevo, y esta vez se debe tener éxito: ensayo de deformación

set test 'this key was overwritten on the slave server'

  • ‘esta clave se sobrescribe en el servidor esclavo’

Redis slave outputOK

Tenga en cuenta que desde el fichero de configuración todavía designa a este nodo como una Redis esclavo, si el servicio se reinicia sin modificar la configuración, se reanudará la replicación. También tenga en cuenta que cualquier configuración que utilizó para el maestro Redis puede ser necesario volver a aplicar aquí (por ejemplo, encender archivos sólo de adición o modificación de la política de desalojo).

Si hay algún otro esclavos, dirigirlas al maestro recién ascendido a continuar duplicar los cambios. Esto se puede hacer usando el comando slaveof y la conexión del nuevo maestro.

Para reanudar manualmente la replicación a la maestra original, apunte el maestro provisional y los esclavos al master original utilizando el comando slaveof con los valores utilizados en el fichero de configuración:

slaveof ip_to_contact_master port_to_contact_master

  • slaveof ip_to_contact_master port_to_contact_master

Redis slave outputOK

Si marca la clave en el esclavo de nuevo, usted debe ver que el valor original ha sido restaurado por el maestro Redis:

get test

  • obtener prueba

Redis slave output"this key was defined on the master server"

por razones de coherencia, todos los datos en el esclavo se vacía cuando se vuelve a sincronizar con una servidor maestro.

La promoción de un esclavo Redis automáticamente

la promoción automática de un esclavo Redis requiere coordinación con la capa de aplicación. Esto significa que la aplicación depende en gran medida del entorno de aplicación, por lo que es difícil sugerir acciones específicas.

Sin embargo, podemos repasar los pasos generales necesarios para llevar a cabo una conmutación por error automática. Los pasos siguientes se supone que todos los servidores Redis se han configurado para el acceso entre sí:

  • Desde la aplicación, detectan que el servidor maestro ya no está disponible.
  • Por un esclavo, ejecute el comando slaveof nadie. Esto detendrá la replicación y promoverlo a condición de maestro.
  • ajustar cualquier configuración de la nueva maestra para alinearse con los ajustes anteriores maestros. Esto se puede hacer con antelación en el archivo de configuración para la mayoría de las opciones. el tráfico
  • directa desde la aplicación al maestro Redis recién ascendido.
  • En ningún esclavos restantes, ejecute slaveof new_master_ip new_master_port. Esto hará que los esclavos detener la replicación del viejo maestro, desechar sus datos (ahora obsoleto) por completo, y empezar la replicación del nuevo maestro.

Después de haber restaurado el servicio al servidor maestro original, o bien puede permitir que reunirse como un señalador esclavo al maestro recién ascendido, ni permita que se reincorpora como el maestro, si es necesario.

Conclusión

hemos creado un entorno compuesto por dos servidores, uno que actúa como maestro y el otro Redis datos replicante como esclavo. Esto proporciona redundancia en caso de un fallo del sistema o de la red, y puede ayudar a distribuir las operaciones de lectura entre varios servidores por razones de rendimiento. Este es un buen punto de partida para el diseño de una configuración Redis para adaptarse a su aplicación de producción y las necesidades de infraestructura, pero no es de ninguna manera una guía exhaustiva sobre el tema. Para obtener más información acerca del uso de Redis para sus necesidades de aplicación, echa un vistazo a nuestros otros tutoriales Redis.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *