WoSeBerry - Manual de usuarios
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