Implementation of Redis Enterprise Database
#!/bin/bash
# versione italiana
LA SFIDA
Per un potenziale nuovo cliente si è reso necessario implementare un database che potesse essere affidabile e veloce, utilizzato da alcune applicazioni interne del cliente. Il prodotto, Redis Enterprise, era già stato individuato dal cliente e avrebbe sostituto l'attuale in uso, Infinispan. Trattandosi di un prodotto poco presente in ambito NGMS e piuttosto differente da Redis "open source", è stata per me @arossi e @gcorini una sfida importante anche per la resposabilità di ottenere il risultato atteso.
IL PROGETTO
Il cliente ha messo a disposizione preventivamente 6 VM Redhat 8, 3 per Pre-Produzione e 3 per Produzione. Sono state quindi eseguite due installazioni parallele che differiscono solo per una configurazione del cluster: su Produzione si opta per un cluster Redis con 3 worker, mentre su Pre-Produzione un nodo verrà utilizzato unicamente come master (quorum_only). Le licenze acquistate da parte del cliente avranno a dispozione 25GB di memoria RAM, pertanto verranno create 2 istanze DB per ogni ambiente da 12GB l'una e sarà attività la replica per HA, che richiede quindi altri 12GB x2 istanze per le repliche in standby, appunto. Avremo un totale di 4 Shard Redis per ambiente.
GLI STEP OPERATIVI
- Predispozione di logical volumes e filesystems per ogni VM.
- Download e installazione dei pacchetti Redis Enterprise su ogni nodo.
- Configurazioni di sistema per il corretto funzionamento tra cui firewalld e chronyd.
- Accesso alla GUI di ogni nodo per la creazione del cluster, partendo con la creazione del nodo master.
- Sempre da GUI, aggiunta dei nodi worker al cluster appena creato.
- Creazione di due istanze Redis DB, per ogni ambiente, con relativi Endpoint (fqdn per accesso al DB).
- Abilitazione e configurazione di, High Availability Replication, Persistence e Eviction Policy.
- Configurazione del DNS per il corretto raggiungimento del Cluster e degli Endpoint DB.
- Configurazioni di sicurezza, abiltiazione TLS per connessione ai DB, creazione dei certificati SSL per accesso sicuro alla GUI, alle REST API e agli Endpoint DB.
#!/bin/bash
# english version
THE CHALLENGE
For a potential new client it was necessary to implement a new database that could be reliable and fast, used by some of the client's internal applications. The product, Redis Enterprise, had already been identified by the client and would replace the current one in use, which is Infinispan. Since this is a software not so present in the NGMS field and rather different from Redis "open source", it was an important challenge for me @arossi and @gcorini, also for the responsibility of obtaining the expected result.
THE PROJECT
The client deployed 6 Redhat 8 VMs in advance, 3 for Pre-Production and 3 for the Production environment. Therefore, two parallel deployments were installed and they differ only in one configuration on the cluster side: on Production env. we decided upon a Redis cluster with 3 workers, while on Pre-Production env. one node will be used as master only (quorum_only). The licenses purchased by the client will have 25GB of RAM available, so 2 DB instances of 12GB each will be created for every environment and replication will be active for HA; this requires 12GB more x 2 instances for standby replicas, precisely. We will have a total of 4 Redis Shards per environment.
THE OPERATIONAL STEPS
- Preparation of logical volumes and filesystems for each VM.
- Download and install Redis Enterprise packages on each node.
- System configurations for Redis including firewalld and chronyd.
- Access to the GUI of each node for cluster creation, starting with the creation of the master node.
- From the GUI again, adding worker nodes to the newly created cluster.
- Creation of two Redis DB instances, for each environment, with related endpoints (fqdn used to access the DB).
- Enabling and configuring High Availability Replication, Persistence and Eviction Policy.
- DNS configuration for reachability of the Cluster and DB Endpoints.
- Security configurations, enabling TLS for connection to DBs, creating SSL certificates for secure access to the GUI, REST API and DB Endpoints.