Proyecto PUVIC Infraestructura

De Wiket
Salta a la navegació Salta a la cerca

Este proyecto se basa en una infraestructura de alta disponibilidad que consiste de mantener un servicio web activo sin interrupciones siendo transparente para el usuario. Para ello hemos replicado cada servidor y servicio para lograr tener el máximo de redundancia en nuestra estructura. También hemos implementado un servicio de monitoreo con tal de poder controlar y tener alertas en caso de que cualquier anomalía se refleje en nuestro sistema por aplicación o mediante correos en el caso de no estar presencialmente delante de un ordenador.

Los servicios que vamos a utilizar serán los siguientes:

  • 1 Servidor de balanceo de carga (HAproxy)
  • 2 Servidores web (Apache2)
  • 2 Servidores BBDD (MySQL)
  • 1 Servidor de almacenamiento en red (FreeNAS)
  • 2 Servidores de Monitorización (ZABBIX)


FreeNAS

Requisitos previos

  • 1 GB RAM
  • 4 Discos (1 para el sistema, 3 para el RAID5)
  • 2 Tarjetas de Red

Instalación del FreeNAS

Para saber como instalar y configurar el sistema de almacenamiento puede acceder aquí.

Configuración del Almacenamiento

En nuestro caso tendremos que montar un RAID5 dentro del FreeNAS ya que este sistema nos da un rendimiento rápido al guardar los datos en todas las unidades de disco; protección de los datos al dedicar un cuarto de cada unidad a la tolerancia a las fallas, dejando tres cuartos de la capacidad del sistema disponibles para almacenamiento de datos.

Para saber como configurarlo entre a Configuración RAID5 FreeNAS

HAProxy

Requisitos previos

  • 1 GB RAM
  • 2 Tarjetas de Red
  • 1 disco duro de 10GB

Instalación del HAProxy

Para instalarlo debemos utilizar el comando:

$sudo apt-get install haproxy -y

Configuraciónc del HAProxy

Para configurarlo tendremos que ir a /etc/haproxy/ y editar el archivo haproxy.cfg

$sudo nano /etc/haproxy/haproxy.cfg

Tenemos que agregar las siguientes lineas:

       frontend http_front
               bind *:80
               stats uri /haproxy?stats
               default_backend http_back
       backend http_back
               balance roundrobin
               server server1 192.168.23.11:80 check
               server server2 192.168.23.12:80 check

En estas especificamos el tipo de balanceo, finalmente ponemos los servidores que se balancearan con sus respectivas IPs.

MySQL

Instalación MySQL Server

Para instalar el servidor de base de datos utilizaremos el siguiente comando:

$sudo apt-get install mysql-server -y

Replicación de la base de datos (Master - Slave)

Una vez tenemos los dos servidores de base de datos con el MySQL server instalado, los configuraremos para la replicación de master a slace, para esto editaremos el archivo de configuración principal:

$sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf


Configuración Master

En el servidor MASTER en este archivo de configuración tendremos que tener los siguientes valores agregados:

       bind-address            = 192.168.8.1
       server-id               = 1
       log_bin                 = /var/log/mysql/mysql-bin.log
       expire_logs_days        = 10
       max_binlog_size         = 100M
       binlog_do_db            = PROJECTWEB

Una vez hemos editado el archivo de configuración reiniciamos el servicio utilizando el siguiente comando:

$sudo service mysql restart

Procedemos a entrar al servicio mysql con el usuario root:

$mysql -u root -p

Aquí creamos el usuario para poder acceder a cualquier base de datos para la replicación del SLAVE y así mismo lo creamos:

mysql>GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password';
mysql>FLUSH PRIVILEGES;

Seguido a esto creamos la base de datos y bloquearemos las tablas para que solo se puedan realizar lecturas:

mysql>CREATE DATABASE PROJECTWEB;
mysql>USE PROJECTWEB;
mysql>FLUSH TABLES WITH READ LOCK;;

Una vez hemos bloqueado las tablas de la base de datos utilizaremos el siguiente comando para saber la información del master:

       mysql> SHOW MASTER STATUS;
       +------------------+----------+--------------+------------------+
       | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
       +------------------+----------+--------------+------------------+
       | mysql-bin.000118 |      154 | PROJECTWEB   |                  |
       +------------------+----------+--------------+------------------+


Configuración Slave

En el servidor SLAVE en este archivo de configuración tendremos que tener los siguientes valores agregados:

       bind-address            = 192.168.8.2
       server-id               = 2
       log_bin                 = /var/log/mysql/mysql-bin.log
       expire_logs_days        = 10
       max_binlog_size         = 100M
       binlog_do_db            = PROJECTWEB

Una vez hemos editado el archivo de configuración reiniciamos el servicio utilizando el siguiente comando:

$sudo service mysql restart