WoSeBerry - Manual de usuarios

De Wiket
Salta a la navegació Salta a la cerca

Manual de usuario estándar

En este proyecto el usuario estándar de la aplicación no requiere ningún tipo de manual, ya que el FrontEnd es una simple página web con una tienda online a la que accederá mediante el navegador.

En dicha página web, el usuario podrá realizar las cosas habituales de una tienda online, tales como:

  • Visualizar artículos de venta
  • Registrarse en la web
  • Añadir productos al "carrito" y comprarlos
  • Ver sus pedidos realizados

Manual de usuario administrador

Dado que el usuario administrador tendrá la obligación de asegurar el funcionamiento correcto en esta infraestructura, dispondrá de una carpeta llamada Scripts en su home. Esta carpeta dispone de una serie de scripts que facilitarán tareas como:

  • Sincronizar contenido multimedia entre WordPress
  • Realizar un backup de las bases de datos
  • Comprobar el número de nodos activos en el clúster MariaDB
  • Visualizar un informe del estado de cada servidor

Sincronizar contenido multimedia entre WordPress

El comando de este script es idéntico al que se ha programado en el demonio crontab de las BERRY-02 y BERRY-03 para que se ejecute cada 15 minutos. Sin embargo, si el usuario administrador ha añadido nuevos archivos y desea realizar la sincronización en ese instante, podrá hacerlo mediante dicho script:

#!/bin/bash
rsync -ahvrz /var/www/html/wp-content/uploads/* [email protected]:/var/www/html/wp-content/uploads
rsync -ahvrz [email protected]:/var/www/html/wp-content/uploads/* /var/www/html/wp-content/uploads 
echo -e "\nSincronización de la carpeta uploads realizada correctamente."

De esta manera, se comprobarán los archivos y directorios que hay distintos en la BERRY-03 con respecto a la BERRY-02 y viceversa. Para ejecutarlo, el usuario administrador tan solo deberá ejecutar el siguiente comando:

pi@BERRY-02:~$ bash /home/pi/Scripts/sincronizarWordpress.sh

Realizar un backup de la base de datos

Por defecto, se realizará una copia de seguridad de la base de datos wordpress todos los días a las 4:00 am. Sin embargo, al usuario administrador le puede resultar útil realizar dicha copia en un momento dado. Para facilitar esta tarea, se ha creado un script el cual realiza una copia de la base de datos, asignándole como nombre la fecha y la hora en la que se realizó. De esta manera, se hace distintiva de las copias de seguridad automáticas mediante el demonio crontab:

#!/bin/bash

echo -e "\nIntroduce el nodo en el cual quieres realizar la copia de seguridad:"
echo -e "\t1) BERRY-04"
echo -e "\t1) BERRY-05"
echo -e "\t1) BERRY-06"
echo -e "Opción:[_]\b\b\c"
read nodo

case $nodo in
       1) mysqldump -h BERRY-04.woseberry.tk --user=pi --password=woseberry wordpress > /home/pi/backups/backup_wordpress_$(date "+%d-%m-%Y_%H:%M:%S").sql;;
       2) mysqldump -h BERRY-05.woseberry.tk --user=pi --password=woseberry wordpress > /home/pi/backups/backup_wordpress_$(date "+%d-%m-%Y_%H:%M:%S").sql;;
       3) mysqldump -h BERRY-06.woseberry.tk --user=pi --password=woseberry wordpress > /home/pi/backups/backup_wordpress_$(date "+%d-%m-%Y_%H:%M:%S").sql;;
esac

echo -e "\n Backup realizado correctamente."

Para ejecutarlo, el usuario administrador tan solo deberá ejecutar el siguiente comando:

$ bash /home/pi/Scripts/backupsWordpress.sh

Comprobar el número de nodos activos en el clúster MariaDB

Siempre que el usuario administrador quiera saber el número de nodos que hay operativos en el clúster, tan solo deberá ejecutar la siguiente sentencia SQL desde las BERRY-04, BERRY-05 o BERRY-06:

$ sudo mysql -u root -p -e 'SELECT VARIABLE_VALUE as "Núm. nodos" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"'

De esta manera, si el cluster con Galera funciona correctamente, la salida del comando será la siguiente:

+-------------+
| Núm. nodos  |
+-------------+
| 3           |
+-------------+

De lo contrario, alguno de los nodos que forman el clúster estará fallando, por lo que se deberá revisar la causa de este fallo. Para ello, podrá utilizar el script que genera un informe de todos los servidores y así saber en que Raspberry se está produciendo el fallo.

Sin embargo, para facilitar la tarea al administrador de acordarse de esta sentencia, dispondrá de un script que realice la misma operación:

#!/bin/bash

mysql -u pi -pwoseberry -e 'SELECT VARIABLE_VALUE as "Núm. nodos" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"

Informe de cada servidor

Para que el usuario administrador sepa en todo momento el estado de cada Raspberry, dispondrá de un script el cual se conecte remotamente a cada servidor y compruebe los servicios. De esta manera, visualizando el informe comprobará que todos los servicios estén funcionando correctamente. De lo contrario, sabrá qué servicio está fallando y el servidor donde se está produciendo el fallo:

#!/bin/bash

function comprobarBERRY-01(){
	echo "ESTADO DE LA BERRY-01:"

	# Comprobar el servicio haproxy
	if [  $(ps -ef | grep -v grep | grep haproxy | wc -l) -ge 1 ]; then
		echo -e "\tHAProxy: OK"
	else
		echo -e "\tHAProxy: KO"
	fi
    
    # Comprobar el servicio bind9
	if [  $(ps -ef | grep -v grep | grep bind | wc -l) -ge 1 ]; then
		echo -e "\tBind9 (DNS): OK"
	else
		echo -e "\tBind9 (DNS): KO"
	fi
    
    # Comprobar el enrutamiento
	if [ $(cat /proc/sys/net/ipv4/ip_forward) -eq 0 ]; then
		echo -e "\tEnrutamiento: KO"
	else
		echo -e "\tEnrutamiento: OK"
	fi
    
    # Comprobar la salida a Internet
	ping -q -c2 8.8.8.8 > /dev/null
	 
	if [ $? -eq 0 ]; then
		echo -e "\tInternet: OK"
	else
		echo -e "\tInternet: KO"
	fi
}

function comprobarBERRY-02(){
	echo -e "\nESTADO DE LA BERRY-02:"
    
	# Comprobar el servicio de apache2
	if [ $(ssh [email protected] ps -ef | grep -v grep | grep apache | wc -l) -ge 1 ]; then
		echo -e "\tApache: OK"
	else
		echo -e "\tApache: KO"
	fi

    # Comprobar la salida a Internet
	ssh [email protected] ping -q -c2 8.8.8.8 > /dev/null
	 
	if [ $? -eq 0 ]; then
		echo -e "\tInternet: OK"
	else
		echo -e "\tInternet: KO"
	fi
}

function comprobarBERRY-03(){
	echo -e "\nESTADO DE LA BERRY-03:"
    
	# Comprobar el servicio de apache2
	if [ $(ssh [email protected] ps -ef | grep -v grep | grep apache | wc -l) -ge 1 ]; then
		echo -e "\tApache: OK"
	else
		echo -e "\tApache: KO"
	fi

    # Comprobar la salida a Internet
	ssh [email protected] ping -q -c2 8.8.8.8 > /dev/null
	 
	if [ $? -eq 0 ]; then
		echo -e "\tInternet: OK"
	else
		echo -e "\tInternet: KO"
	fi
}

function comprobarBERRY-04(){
	echo -e "\nESTADO DE LA BERRY-04:"

	# Comprobar el servicio de mysql
	if [ $(ssh [email protected] ps -ef | grep -v grep | grep mysql | wc -l) -ge 1 ]; then
		echo -e "\tMySQL: OK"
	else
		echo -e "\tMySQL: KO"
	fi
    
    # Comprobar la salida a Internet
	ssh [email protected] ping -q -c2 8.8.8.8 > /dev/null
	 
	if [ $? -eq 0 ]; then
		echo -e "\tInternet: OK"
	else
		echo -e "\tInternet: KO"
	fi
}

function comprobarBERRY-05(){
	echo -e "\nESTADO DE LA BERRY-05:"

	# Comprobar el servicio de mysql
	if [ $(ssh [email protected] ps -ef | grep -v grep | grep mysql | wc -l) -ge 1 ]; then
		echo -e "\tMySQL: OK"
	else
		echo -e "\tMySQL: KO"
	fi
    
    # Comprobar la salida a Internet
	ssh [email protected] ping -q -c2 8.8.8.8 > /dev/null
	 
	if [ $? -eq 0 ]; then
		echo -e "\tInternet: OK"
	else
		echo -e "\tInternet: KO"
	fi
}

function comprobarBERRY-06(){
	echo -e "\nESTADO DE LA BERRY-06:"

	# Comprobar el servicio de mysql
	if [ $(ssh [email protected] ps -ef | grep -v grep | grep mysql | wc -l) -ge 1 ]; then
		echo -e "\tMySQL: OK"
	else
		echo -e "\tMySQL: KO"
	fi
    
    # Comprobar la salida a Internet
	ssh [email protected] ping -q -c2 8.8.8.8 > /dev/null
	 
	if [ $? -eq 0 ]; then
		echo -e "\tInternet: OK"
	else
		echo -e "\tInternet: KO"
	fi
}

clear

comprobarBERRY-01
comprobarBERRY-02
comprobarBERRY-03
comprobarBERRY-04
comprobarBERRY-05
comprobarBERRY-06