Storagesis-Manual técnico

De Wiket
Salta a la navegació Salta a la cerca

Instalaciones

En esta sección enseñaremos

Raspbian

Raspbian es la versión de Debian adaptada para la Raspberry.

Requisitos previos:

  1. Tarjeta SD (mínimo 8GB)
  2. Win32DiskImage
  3. Raspbian Strech Lite

Instalación:
Primero de todo, debe descargar la imagen ISO de Raspbian y Win32DiskImage que encontramos en el enlace anterior. Una vez descargadas, procede a instalar Win32DiskImage. Cuando ya este instalado, lo único que debe hacer es conectar la tarjeta SD al equipo, seleccionar la imagen ISO descargada anteriormente y pulsar encima de Comenzar.

Servidor LAMP

Primero actualizar repositorios y paquetes:

$ sudo apt update && sudo apt upgrade -y

Instalación del sistema de gestión de base de datos MariaDB:

$ sudo apt install apache2 mariadb-server php7.0 phpmyadmin

HAproxy

Este software se utilizará para el balanceo de carga y alta disponibilidad, se deberá de instalar en el Servidor3

sudo apt install haproxy

Owncloud

Owncloud es un servicio de alojamiento en la nube.

Descargamos la ultima versión actual dentro de los servidores

wget https://download.owncloud.org/community/owncloud-10.0.8.zip 

Cuando este descargado se debe descomprimir con el siguiente comando

unzip owncloud-10.0.8.zip

Se procederá a mover el directorio descomprimido a donde se quiere alojar la carpeta, en mi caso será la ruta /var/www/html/

sudo mv -r owncloud/ /var/www/html/

Y se cambiará el propietario de la siguiente forma

sudo chown -r www-data:www-data /var/www/html/owncloud

Instalamos todas las dependencias de php para el correcto funcionamiento de owncloud

sudo apt install libapache2-mod-php-apcu php-redis redis-server php7.0-ldap php7.0 php-imagick php7.0-common php7.0-curl php7.0-gd php7.0-imap php7.0-intl php7.0-json php7.0-ldap php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-pgsql php-smbclient php-ssh2 php7.0-sqlite3 php7.0-xml php7.0-zip

Una vez hecho estos pasos para acabar la instalación, deberemos ir al apartado 2 de esta sección para realizar una correcta instalación

Configuración de servicios

En este apartado se explicará como configurar cada servicio instalado para el correcto funcionamiento de estos.

Apache2

Se habilitarán los siguientes módulos de apache2 para el correcto funcionamiento

a2enmod rewrite
a2enmod headers
a2enmod env
a2enmod dir
a2enmod mime
a2enmod ssl

En caso de que no se tenga des-habilitado el sitio 000-default.conf procedremos a des-habilitarlo con el siguiente comando

a2dissite 000-default.conf

Creamos un nuevo archivo .conf, se le podrá llamar de cualquier forma en mi caso será de la siguiente forma

sudo nano /etc/apache2/sites-available/owncloud.conf

Y dentro de este, añadimos la siguiente configuración

<VirtualHost *:80>
        Redirect / https://www.storagesis.tk
        ServerAdmin tu_correo@dominio
        ServerName tudominio.com
        ServerAlias www.tudominio.com

        DocumentRoot ruta_de_owncloud
        Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
        # Logfiles
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory ruta_de_owncloud>
            Options FollowSymLinks
            DirectoryIndex index.php
            Options Indexes FollowSymLinks Includes ExecCGI
            AllowOverride None
            Order deny,allow
            Allow from all
            Require all granted
        </Directory>
</VirtualHost>
<VirtualHost *:443>
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
    SSLCertificateFile ruta_de_certificados
    SSLCertificateKeyFile ruta_de_certificados
   # SSLCertificateChainFile /etc/apache2/ssl/storagesis.pem

    ServerAdmin [email protected]
    ServerName  tudominio.com
    ServerAlias www.tudominio.com

    DocumentRoot ruta_de_owncloud
    Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains"
    <Directory ruta_de_owncloud>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>

Configuración de Replicación Maestro-Maestro con MariaDB

Objetivo

El objetivo es crear una replicación Maestro - Maestro en el sistema de gestión de base de datos MariaDB. Se implementará en nuestros dos servidores Raspberry que incorporan el SO Raspbian sin escritorio y el servicio web Apache2.

Todo esto con el propósito de agregar velocidad y redundancia a nuestro servicio para que actúen como un clúster. El clúster de base de datos, será especialmente útil debido a que disponemos de alta disponibilidad en cuanto a servidores.

Esquema

Esquema de nuestra infraestructura

En el esquema mostrado en la imagen utilizamos el protocolo IPV4 en el cual el servidor Raspberry 1 tiene la IP 192.168.1.12/24 y el servidor Raspberry 2 la 192.168.1.14/24.

Configuración Maestro Servidor Raspberry 1

Tendremos que añadir estas líneas en el archivo my.cnf ubicado en la ruta /etc/mysql/:


[mysqld]
log-bin
server_id=1
log-basename=master1
bind-address= 0.0.0.0
binlog_do_db= owncloud

A continuación guardamos la configuración y reiniciamos el servicio MariaDB:

$ sudo systemctl restart mariadb 

Una vez reiniciado el servicio, nos conectamos a la consola de mariaDB con un usuario con todos los permisos en mi caso el usuario Anderson:

$ sudo mysql -u Anderson -p

Nos pedirá la contreseña de usuario y ya estaremos dentro. A continuación crearemos el usuario replicator:

MariaDB [(none)]> GRANT REPLICATOR SLAVE, REPLICATION CLIENT ON *.* TO 'replicator'@'192.168.1.14' IDENTIFIED BY 'password';

Sintaxis:

MariaDB [(none)]> GRANT [permiso] ON [nombre de bases de datos].[nombre de tabla] TO '[usuario]'@'[tipo_de_conexión]' IDENTIFIED BY '[contraseña]';

Explicación de comando ejecutado:

Con este comando le estamos dando permisos de REPLICATOR SLAVE y REPLICATION CLIENT al usuario replicator con contraseña storagesis sobre todas las bases de datos y todas las tablas, le indicamos que la conexión solo será permitida desde la IP 192.168.1.14, és decir, desde el servidor Raspberry 2.


REPLICATOR SLAVE:Permite al usuario esclavo conectarse al otro servidor como si fuera su maestro.

REPLICATION CLIENT: Permite el uso de los comandos SHOW MASTER STATUS, SHOW SLAVE STATUS y SHOW BINARY LOGS.

Si quieres saber más sobre los permisos de Mysql puedes acceder aquí:

Configuración Maestro Servidor Raspberry 2

Explicación de parámetros del archivo my.cnf

  • log-bin: Instrucción que activa los logs.
  • server_id: Identificador del servidor. Debe ser único y no estar definido en otro grupo de replicación.
  • log-basename: Le damos nombre al log-file.
  • bind-address: Nos permite la conexión remota desde la dirección IP indicada. En este caso desde cualquiera.
  • binlog_do_db: Nombre de la base de datos que queremos replicar. En caso de no añadir este parámetro se replicarán todas las bases de datos.

Comprobar replicación Maestro-Maestro

Storagesis