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

Cómo mover un directorio de datos PostgreSQL a una nueva ubicación en Ubuntu 18.04

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 las transacciones, pub / sub y failover automático, entre otras funcionalidades. Se recomienda utilizar Redis con Linux para entornos de producción, pero los desarrolladores también menciona OS X como una plataforma en la que se desarrollan y de prueba. Redis tiene clientes escritos en la mayoría de los idiomas, con los recomendados ofrecen 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. La redundancia 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.

Al final de esta guía, se han establecido dos Redis Gotitas en digitalocean, de la siguiente manera:

  • uno de gota para el servidor maestro Redis
  • uno de gota para el servidor esclavo Redis

También vamos a demostrar cómo para cambiar al servidor esclavo y configurarlo como un maestro temporal.

siento libre para configurar más de un servidor esclavo.

Este artículo se centra en la creación de un cluster Redis maestro-esclavo; para aprender más sobre Redis en general y su uso básico como base de datos, consulte este tutorial uso.

Requisitos previos

bien esto puede funcionar en versiones anteriores y otras distribuciones de Linux, se recomienda Ubuntu 14.04.

para propósitos de prueba, usaremos pequeños casos ya que no hay carga de trabajo real para ser manejada, pero los entornos de producción puede requerir servidores más grandes.

  • Ubuntu 14.04 LTS
  • Dos gotas, la de cualquier tamaño que necesita; un maestro y uno o más esclavos (s)
  • El acceso a sus máquinas a través de SSH con un usuario sudo no root como se explica en Configuración inicial del servidor con Ubuntu 14.04

Paso 1 – Instalar Redis

A partir de la gotita que la voluntad sede de nuestro servidor maestro , nuestro primer paso es instalar Redis. En primer lugar tenemos que añadir repositorio Redis de Chris Lea (como siempre, toma mucho cuidado al añadir repositorios de terceros; estamos utilizando éste porque su mantenedor es una figura de renombre):

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

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

Pulse ENTER para aceptar el repositorio.

Ejecutar el siguiente comando para actualizar nuestros paquetes:

sudo apt-get update

  • sudo apt-get update

Instalar el servidor Redis:

sudo apt-get install redis-server

  • sudo apt-get install redis-servidor

Compruebe que Redis está en marcha :

redis-benchmark -q -n 1000 -c 10 -P 5

  • ReDiS del índice de referencia -q -n 1000-C10 -P 5

El comando anterior está diciendo que queremos Redis del índice de referencia se ejecute en modo silencioso, con 1.000 solicitudes totales, 10 conexiones en paralelo y la tubería 5 peticiones. Para obtener más información sobre los puntos de referencia que se ejecutan para Redis, mecanografía –help Redis del índice de referencia en su terminal imprimirá información útil con ejemplos.

deja pasar el punto de referencia. Después de que haya terminado, debería ver una salida similar a la siguiente:

OutputPING_INLINE: 166666.67 requests per second
PING_BULK: 249999.98 requests per second
SET: 249999.98 requests per second
GET: 499999.97 requests per second
INCR: 333333.34 requests per second
LPUSH: 499999.97 requests per second
LPOP: 499999.97 requests per second
SADD: 499999.97 requests per second
SPOP: 499999.97 requests per second
LPUSH (needed to benchmark LRANGE): 499999.97 requests per second
LRANGE_100 (first 100 elements): 111111.12 requests per second
LRANGE_300 (first 300 elements): 27777.78 requests per second
LRANGE_500 (first 450 elements): 8333.33 requests per second
LRANGE_600 (first 600 elements): 6369.43 requests per second
MSET (10 keys): 142857.14 requests per second

Ahora repita esta sección para el servidor esclavo Redis . Si está configurando más gotitas, es posible configurar hasta servidor esclavo s según sea necesario.

En este punto, Redis está instalado y en ejecución en nuestros dos nodos. Si la salida de cualquier nodo no es similar a lo que se muestra arriba, repetir el proceso de configuración con cuidado y compruebe que todos los requisitos se cumplen

Paso 2 – Configurar Redis Maestro

Ahora que Redis está en funcionamiento en nuestro clúster de dos Droplet , tenemos que editar sus archivos de configuración. Como veremos más adelante, existen pequeñas diferencias entre la configuración del servidor maestro y el esclavo. de

Let primera apertura con nuestro maestro . /etc/redis/redis.conf

abierta con su editor de texto favorito:

sudo nano /etc/redis/redis.conf

  • sudo nano /etc/redis/redis.conf

Editar las siguientes líneas.

establecer un valor razonable para el temporizador de mantenimiento de conexión para TCP:

tcp-keepalive 60

hacer que el servidor accesible a cualquier persona en la web comentando esta línea:

#bind 127.0.0.1

Dada la naturaleza de Redis, y sus velocidades muy altas, un atacante puede bruta forzar la contraseña sin muchos problemas. Es por ello que se recomienda descomentar la línea requirepass y la adición de una contraseña compleja (o una frase de contraseña compleja, de preferencia):

requirepass your_redis_master_password

Dependiendo de su situación de uso, es posible que cambie la siguiente línea o no. Para el propósito de este tutorial, se supone que debe ocurrir sin la eliminación de clave. Descomentar esta línea y configurarlo como sigue:

maxmemory-policy noeviction

Por último, queremos hacer los siguientes cambios, necesarios para realizar copias de seguridad de los datos. Descomentar y / o establecer estas líneas como se muestra:

appendonly yes
appendfilename redis-staging-ao.aof

guardar los cambios.

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

sudo service redis-server restart

  • sudo servicio Redis-servidor reinicio

Si desea hacer un esfuerzo adicional, se puede añadir un poco de contenido único a la base de datos maestra siguiendo el Redis Operaciones secciones de este tutorial, por lo que más tarde pueden ver la forma en que se replica en el servidor esclavo.

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

Paso 3 – Configurar Redis Esclavo

Tenemos que hacer algunos cambios que permiten que nuestro servidor esclavo para conectarse a nuestra instancia principal:

abierto /etc/redis/redis.conf con su editor de texto favorito:

sudo nano /etc/redis/redis.conf

  • sudo nano /etc/redis/redis.conf

Editar las líneas siguientes; algunos ajustes serán similares a los del maestro.

hacer que el servidor accesible a cualquier persona en la web comentando esta línea:

#bind 127.0.0.1

El servidor esclavo necesita una contraseña, así que podemos darle órdenes (tales como INFO). Descomentar esta línea y establecer una contraseña de servidor:

requirepass your_redis_slave_password

descomentar esta línea e indicar la dirección IP en la que se puede alcanzar el servidor maestro , seguido por el conjunto de puertos en esa máquina. De manera predeterminada, el puerto es 6379:

slaveof your_redis_master_ip 6379

Elimine la línea masterauth y proporcionar la contraseña / contraseña que configuró anteriormente en el servidor maestro :

masterauth your_redis_master_password

Ahora guardar los cambios y salir del archivo. A continuación, reinicie el servicio como lo hicimos en nuestro servidor maestro:

sudo service redis-server restart

  • sudo servicio Redis-servidor reinicio

Esto reinicializar Redis y cargar nuestros archivos modificados.

Conectar a Redis:

redis-cli -h 127.0.0.1 -p 6379

  • Redis-cli -h 127.0.0.1 -p 6379

Autorizar con contraseña del servidor esclavo :

AUTH your_redis_slave_password

  • AUTH your_redis_slave_password

En este momento nos estamos quedando un funcional maestro-esclavo cúmulo Redis, con las dos máquinas configurado correctamente.

Paso 4 – Verificar la Prueba

maestro-esclavo de replicación

nuestra configuración nos permitirá entender mejor el comportamiento de nuestros Redis Las gotas, una vez que queremos empezar el comportamiento de conmutación por error de secuencias de comandos. Lo que queremos hacer ahora es asegurarse de que nuestra configuración está funcionando correctamente, y nuestro maestro está hablando con los casos Redis esclavos.

En primer lugar, se conectan a través de nuestro terminal Redis, en el servidor maestro :

Primero conecte a la instancia local, corriendo por defecto en el puerto 6379. En caso de que haya cambiado el puerto, modificar el comando en consecuencia.

redis-cli -h 127.0.0.1 -p 6379

  • Redis-cli -h 127.0.0.1 -p 6379

Ahora autenticarse con Redis con la contraseña que estableció al configurar el maestro:

AUTH your_redis_master_password

  • AUTH your_redis_master_password

y usted debe obtener un OK como respuesta . Ahora, sólo tiene que ejecutar:

INFO

  • INFO

Va a ver todo lo que necesita saber acerca del servidor Redis maestro. Estamos especialmente interesados ​​en la sección #Replication, que debe ser similar a la siguiente salida:

Output. . .

# Replication
role:master
connected_slaves:1
slave0:ip=111.111.111.222,port=6379,state=online,offset=407,lag=1
master_repl_offset:407
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:406

. . .

Aviso los connected_slaves: 1 línea, lo que indica nuestra otra instancia está hablando con el maestro de la gotita. También se puede ver que se obtiene la dirección IP de esclavos, junto con el puerto, el estado y otra información.

Ahora vamos a echar un vistazo a la sección #Replication en nuestra máquina de esclavos. El proceso es el mismo que para nuestro servidor maestro. Conectarse a la instancia Redis, emita el comando INFO, y ver la salida:

Output. . .

# Replication
role:slave
master_host:111.111.111.111
master_port:6379
master_link_status:up
master_last_io_seconds_ago:3
master_sync_in_progress:0
slave_repl_offset:1401
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

. . .

Podemos ver que esta máquina tiene el papel de esclavo, se comunica con el servidor Redis maestro, y no tiene esclavos de su propio.

Paso 5 – Cambiar al esclavo

edificio esta arquitectura, ya que también queremos fracasos para ser manejados de tal manera que aseguran la integridad de los datos y el tiempo de inactividad tan poco como sea posible para nuestra aplicación. Todo esclavo puede ser promovida a ser un maestro. En primer lugar, vamos a prueba de conmutación manual.

En una máquina esclavo , hay que conectarse a la instancia Redis:

redis-cli -h 127.0.0.1 -p 6379

  • Redis-cli -h 127.0.0.1 -p 6379

Ahora autenticarse con Redis con la contraseña que estableció al configurar el esclavo

AUTH your_redis_slave_password

  • AUTH your_redis_slave_password

Apague el comportamiento de esclavos:

SLAVEOF NO ONE

  • SLAVEOF NADIE

La respuesta debe estar bien. Ahora escribe:

INFO

  • INFO

Busque la sección # replicación para encontrar el siguiente resultado:

Output. . .

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

. . .

Como era de esperar, el esclavo se ha convertido en un maestro, y ahora está listo para aceptar conexiones desde otras máquinas (si ninguna). Podemos utilizarlo como copia de seguridad temporal, mientras que de depuración nuestro servidor maestro principal.

Si tiene varios esclavos que dependía del maestro inicial, todos ellos tienen que estar apuntando hacia el maestro recién ascendido.

Esto puede ser fácilmente secuencias de comandos, con los siguientes pasos que deben ejecutarse una vez que se detecta un fallo:

  • Desde la aplicación, enviar todas las solicitudes de Redis a una máquina de esclavos
  • En ese esclavo, ejecutar el comando SLAVEOF NADIE . A partir de la versión 1.0.0 Redis, este comando le dice al esclavo de detener la replicación de datos y empezar a actuar como un servidor maestro
  • En todos los esclavos restantes (si lo hay), en funcionamiento Puerto SLAVEOF nombre de host va a darles instrucciones para detener la replicación del viejo maestro , descartar los datos ha dejado de utilizar por completo, y empezar la replicación del nuevo maestro. Asegúrese de reemplazar el nombre de host y el puerto con los valores correctos, de su maestro recién ascendido
  • Después de analizar el problema, es posible que vuelva a tener su inicial del servidor como maestro, si su configuración particular requiere que

Hay muchas maneras de lograr los pasos explicados anteriormente. Sin embargo, es a usted para poner en práctica una solución adecuada para su entorno, y asegúrese de probarlo a fondo antes de que ocurran fallos reales.

Paso 6 – Conectar de nuevo para volver a conectar el Maestro

Vamos al servidor maestro original. En el servidor esclavo , acceda a Redis y ejecutar el siguiente:

SLAVEOF your_redis_master_ip 6379

  • SLAVEOF your_redis_master_ip 6379

Si ejecuta el comando INFO de nuevo, debería ver que hemos vuelto a la configuración original.

Conclusión

Hemos configurar correctamente un entorno que consta de dos servidores, uno que actúa como Redis maestro, y los otros datos de replicación como esclavo. De esta manera, si el servidor maestro nunca se desconecta o pierde nuestros datos, sabemos cómo cambiar a uno de nuestros esclavos para la recuperación hasta que el problema está cuidado.

pasos siguientes

pueden incluir secuencias de comandos de conmutación por error el procedimiento automatizado, o asegurar las comunicaciones seguras entre todas las gotitas mediante el uso de soluciones VPN como OpenVPN o Tinc. Además, las pruebas de los procedimientos y secuencias de comandos son vitales para la validación de sus configuraciones.

Además, se deben tomar precauciones cuando se implementa este tipo de configuración en entornos de producción. La página de documentación Redis debe ser estudiado y debe tener una comprensión clara de cuál es el modelo de seguridad es adecuada para su aplicación. A menudo usamos Redis como almacenamiento de sesión, y la información que contiene puede ser valiosa para un atacante. La práctica común es tener estas máquinas accesibles sólo a través de la red privada, y colocarlos detrás de múltiples capas de seguridad.

Este es un simple punto en el que el almacén de datos puede ser construido a partir; de ninguna manera una guía exhaustiva sobre la configuración de Redis utilizar arquitectura maestro-esclavo. Si hay algo que se tiene en cuenta esta guía debe cubrir, por favor dejar comentarios a continuación. Para obtener más información y ayuda sobre este tema, el digitalocean Q & A es un buen lugar para comenzar.

Deja un comentario

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