Redis es una base de datos de código abierto particularmente rápida gracias a sus datos que se pueden guardar tanto en la memoria como en el disco. Representa una de las mejores soluciones para el desarrollo de aplicaciones que requieren procesamiento de datos en tiempo real.
Este tutorial proporciona una explicación detallada de cómo instalar y configurar la base de datos Redis en un servidor con distribución Linux CentOS 7 y cómo mejorar la seguridad de su base de datos y crear una instalación de réplica.
Primero, conéctese a su servidor a través de una conexión SSH. Si aún no lo ha hecho, se recomienda seguir nuestra guía para conectarse de forma segura con el protocolo SSH. En caso de un servidor local, vaya al siguiente paso y abra la terminal de su servidor.
Instalación de Redis
Para instalar Redis, solo use el administrador de paquetes yum:
$ sudo yum install redis
Una vez completada la instalación, inicie el servicio e instálelo en el sistema:
$ sudo systemctl start redis
$ sudo systemctl enable redis
Comprobando la instalación
Para verificar la instalación correcta de Redis, use el cliente de línea de comando redis-cli, configurando un valor de prueba en su base de datos:
$ redis-cli set test 123456
OK
Si todo funciona correctamente, el servidor responderá con "OK". Por lo tanto, compruebe si el valor se ha guardado correctamente:
$ redis-cli get test
"123456"
Redis devolverá el valor recién guardado (en este caso, la cadena "123456"). Luego, elimine esta clave de prueba:
$ redis-cli del test
(integer) 1
Mejorando la seguridad de su instalación
La configuración inicial de Redis le permite conectarse a la base de datos solo desde una dirección local y sin requerir ninguna contraseña o forma de autenticación.
Todas las configuraciones de Redis son leídas por el archivo de configuración en /etc/redis.conf y se pueden sobrescribir en cualquier momento y en tiempo real, usando cualquier software de cliente a través de los comandos CONFIG SET / CONFIG GET. Sin embargo, recuerde que las configuraciones modificadas por el cliente no se guardan en el archivo de configuración y se perderán la próxima vez que inicie Redis. .
Para mejorar la seguridad de su base de datos, establezca una contraseña de autenticación modificando o insertando la entrada requirepass en el archivo de configuración:
requirepass 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4
La contraseña se guarda en el archivo de configuración de texto sin formato y debe ser lo suficientemente larga para soportar ataques de fuerza bruta, ya que Redis puede manejar varias conexiones por segundo.
Entre las configuraciones más importantes, también encontramos el enlace que establece qué dirección tiene Redis para habilitar la recepción de conexiones:
bind 127.0.0.1
Solo la dirección local 127.0.0.1 está habilitada de manera predeterminada. Sin embargo, si necesita exponer el servidor Redis al exterior, se pueden agregar direcciones adicionales, como:
bind 127.0.0.1 51.125.63.201
Otro error común es dejar el puerto predeterminado configurado para escuchar las conexiones entrantes. Esto permite que cualquier software de exploración de puertos localice el servidor Redis.
port 2589
Al cambiar el puerto de 6379 a 2589, el servicio Redis se puede ocultar y agregar un nivel adicional de seguridad a su instalación.
Después de completar todos los cambios en el archivo de configuración, reinicie el servicio:
$ sudo systemctl restart redis
Para verificar los parámetros recién aplicados, use redis-cli para obtener, por ejemplo, el parámetro de enlace actual, usando el nuevo puerto configurado y la contraseña establecida anteriormente:
$ redis-cli -a 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4 -p 2589 config get bind
El servidor debe responder con los parámetros requeridos:
1) "bind"
2) "127.0.0.1"
Creación de una instalación de réplica
Redis le permite configurar un servidor de réplica (copia) en unos pocos pasos. En comparación con la versión maestra, este servidor réplica se actualiza en tiempo real.
A través de esta configuración, se puede ofrecer un servicio de respaldo para lectura en caso de mal funcionamiento del servidor principal.
Después de conectarse al servidor secundario esclavo, complete la instalación de Redis usando yum:
$ sudo yum install redis
Los mismos procedimientos de seguridad del párrafo anterior también se pueden aplicar para proteger esta instancia de Redis. En el siguiente ejemplo, se utilizarán los parámetros predeterminados.
Para sincronizarse con el servidor principal (maestro), la máquina esclava debe comunicarse correctamente con la máquina maestra. Asegúrese de que la dirección IP pública esté presente en la configuración de la máquina maestra (parámetro de enlace) y verifique si la conexión funciona iniciando el comando desde la máquina esclava:
$ redis-cli -h [MASTER_IP_ADDRESS] -a [PASSWORD_MASTER] ping
PONG
Si se proporciona una respuesta al comando ping, el esclavo puede comunicarse correctamente.
Luego, proceda con la configuración real del esclavo, modificando los siguientes parámetros en el archivo de configuración /etc/redis.conf:
# If it is there, specify the master connection password too.
masterauth password
# The slaveof directory specifies the master connection parameters (ADDRESS_IP PORT)
slaveof 195.231.4.71 6379
Después de completar, guarde la configuración e inicie el servidor esclavo de Redis, escribiendo:
$ sudo systemctl start redis
$ sudo systemctl enable redis
Para comprobar que la sincronización se ha activado correctamente, use tail para ver las últimas líneas del archivo de registro del servicio:
$ tail /var/log/redis/redis.log
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: receiving 77 bytes from master
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Flushing old data
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Loading DB in memory
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Finished with success
Las últimas líneas confirman que la sincronización está activa y funciona correctamente.
Luego, realice una prueba real, establezca un valor en su base de datos y verifique que el servidor maestro lo lea correctamente.
Establezca la clave de prueba desde el servidor maestro:
$ redis-cli -a password set test hello
OK
el mismo valor se lee desde el servidor esclavo:
$ redis-cli get test
"hello"
Como puede ver, tanto el maestro como el esclavo han almacenado el mismo valor. ¡Esto significa que la réplica funciona correctamente!