Caso de estudio

Es necesario tener un servicio web con alta disponibilidad y alto rendimiento para uno o varios sitios web, también es importante, sin ser crítico, tener servicio de correo, ftp y DNS secundario. Hay buscar una solución con tecnología Cloud lo más potente y sencilla posible para el fin detallado.

Solución

Para ello se decide montar un balanceador de carga redundado, como frontal para tener alta disponibilidad, de backend para el mismo fin, dos servidores web capaces de dar servicio web individualmente, además de dar mayor rendimiento adicionalmente aporta seguridad al tener la información redundada y con backups , también uno de estos servidores dará el servicio de correo, DNS secundario, FTP….

En cuanto a hardware se utiliza lo mínimo para un correcto funcionamiento, con opción de escalarlo si fuera necesario aumentar.

Infraestructura

Los servidores se crean sobre un Plan Cloud Data Center, en Gigas Hosting, dicho plan incluye varios servidores, ips, backups, Vlan y balanceador, necesarios para el proyecto, de la siguiente manera.

Balanceador

En otros proveedores es posible que no faciliten creado, pero  en Gigas el balanceador lo tenemos creado en el panel, solo es necesario, añadir un ip de la Vlan y crear las instancias rellenando los campos con la ip de los backend, puerto del servicio a balancear y tipo de balanceo https://gigas.com/support/docs/index.php/Balanceador_y_Autoescalado  con eso está listo el balanceador.

Servidor 1

Backend1

Ubuntu 20.04 + Plesk obsidian

6Gb de RAM

5CPUs Intel

200GB disco SSD

IP Publica e IP privada Vlan

En este servidor como va a dar más servicios se instala Ubuntu 20.04 y Plesk panel https://get.plesk.com/ sobre Ubuntu 20.04 , con instalación típica de ambos, una vez instalado actualizar y optimizar Plesk y el SO, con esto lo dejamos listo para las configuraciones necesarias para montar el clúster de BB.DD y sincronizar sitios web.

Algunas referencias para optimizar plesk:

Resumen de instalaciones:

Plesk panel

https://get.plesk.com/

Unison

$ sudo apt install unison

Galera cluster Master/master

Para la réplica de BB.DD en ambos servidores usar Galera clúster, sincroniza en tiempo real y es muy sencillo de configurar, en la últimas versiones de Mariadb ya viene instalado., es necesario tenerlo instalado y configurarlo en ambos servidores, en plesk ya viene instalado, solo hay que configurarlo.

Referencias:

Resumen de los pasos a seguir:

  1. Verificar que el hostname, archivos hosts  y la zona horaria son correctos.
  2. Abrir puertos en ufw
  3. Instalar MariaDB en ambos servidores
  4. Configurar cluster desde el archivo  /etc/mysql/mariadb.conf.d/50-cluster.cnf

Ejemplo de archivo para servidor 1:

[mysqld]

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0

# Galera Provider Configuration

wsrep_on=ON

# NOTA: la ruta correcta de la librería puede ser /usr/lib/libgalera_smm.so

wsrep_provider=/usr/lib/libgalera_smm.so

# Galera Cluster Configuration

wsrep_cluster_name=»galera_cluster1″

wsrep_cluster_address=»gcomm://192.168.1.101,192.168.1.102″

# Galera Synchronization Configuration

wsrep_sst_method=rsync

# Galera Node Configuration

wsrep_node_address=»192.168.1.101″

wsrep_node_name=»node1″

# The following line will save error messages to a plain file.

log_error = /var/log/mysql/error.log

Sincronizar archivos con Unison

Unison es una herramienta para sincronizar archivos y directorios entre diferentes sistemas de manera bidireccional. Se instala en ambos servidores pero solo es necesario configurarlo en uno de ellos, en este caso el backend1 que será el servidor ftp. Se puede crear un archivo de perfil con extensión prf  en mi caso no funcionaba, por lo que cree un cron con las opciones necesarias.

Referencias:

Resumen de los pasos a seguir:

  1. Instalar unison
  2. Configurar ssh key para acceso sin contraseña
  3. Configurar archivo de perfil  /root/.unison/default.prf o crear cron con la opciones.

*/5 * *  * * unison -batch -auto /var/www/vhosts/ ssh://root@192.168.1.102//var/www/vhosts/ >/dev/null 2>&1

Servidor 2

Backend2

Ubuntu 20.04

6Gb de RAM

5CPUs Intel

200GB disco SSD

IP privada Vlan

Este es algo mas complicado, hay que hacerlo a mano, lo vamos a instalar lo mas parecido al servidor 1 en cuanto servicios y versiones, Apache con nginx como reverse proxy + php-FPM con opcache y  Mariadb

Manual de instalaciones y configuraciones Apache, php-fpm y nginx :

https://www.digitalocean.com/community/tutorials/como-configurar-nginx-como-servidor-web-y-proxy-inverso-para-apache-en-un-servidor-ubuntu-18-04-es

Resumen de instalaciones

Actualizar SO

# sudo aptitude update && aptitude safe-upgrade && aptitude clean && aptitude autoclean

Instalar servicios necesarios:

Apache y php-fpm

$ sudo apt install apache2 php-fpm

FASTCGI

$ wget https://mirrors.edge.kernel.org/ubuntu/pool/multiverse/liba/libapache-mod-fastcgi/libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb

$ sudo dpkg -i libapache2-mod-fastcgi_2.4.7~0910052141-1.2_amd64.deb

Nginx

$ apt install nginx

mod_rpaf

$ sudo apt install unzip build-essential apache2-dev

$ wget https://github.com/gnif/mod_rpaf/archive/stable.zip

$ unzip stable.zip

$ make

$ sudo make install

Opcache

$ apt-get install php-opcache –y  (https://howtoforge.es/instalar-y-configurar-php-opcache-en-ubuntu-20-04/ )

MariaDB/Galera cluster

$ sudo apt install mariadb-server mariadb-client

Unison

$ sudo apt install unison

Galera cluster Master/master

Para la réplica de BB.DD en ambos servidores usar Galera clúster, sincroniza en tiempo real y es muy sencillo de configurar, en la últimas versiones de Mariadb ya viene instalado.

Referencias:

Resumen de los pasos a seguir:

  • Verificar que el hostname, archivos hosts  y la zona horaria son correctos.
  • Abrir puertos en ufw
  • Instalar MariaDB en ambos servidores
  • Configurar cluster desde el archivo  /etc/mysql/mariadb.conf.d/50-cluster.cnf

Ejemplo de archivo para servidor 2:

[mysqld]

binlog_format=ROW

default-storage-engine=innodb

innodb_autoinc_lock_mode=2

bind-address=0.0.0.0

# Galera Provider Configuration

wsrep_on=ON

# NOTA: la ruta correcta de la librería puede ser /usr/lib/libgalera_smm.so

wsrep_provider=/usr/lib/libgalera_smm.so

# Galera Cluster Configuration

wsrep_cluster_name=»galera_cluster1″

wsrep_cluster_address=»gcomm://192.168.1.101,192.168.1.102″

# Galera Synchronization Configuration

wsrep_sst_method=rsync

# Galera Node Configuration

wsrep_node_address=»192.168.1.102″

wsrep_node_name=»node2«

# The following line will save error messages to a plain file.

log_error = /var/log/mysql/error.log

Abrir chat
1
Escanea el código
Hola.
¿En que podemos ayudarte?