Category: Linux


EN este Post veremos como crear un grupo de imagenes auto escalables en Google Cloud segun el consumo de CPU, esto permite crecer automaticamente horizontalmente en instancias cuando tenemos picos de consumo y luego automaticamente volver a una sola sola VM. Esto nos permite ahorran en costos y lograr que el sitio seguira online  y ademas tener tolerancia a fallos

1º paso
Crear VM Instance

 

En automation – Startup Script colocar el siguiente script que instalara Apache y publicara un hello World

#! /bin/bash
apt-get update
apt-get install -y apache2
cat <<EOF > /var/www/html/index.html
<html><body><h1>Morettimaxi.com.ar – Hello World</h1>
<p>This page was created from a simple startup script!</p>
</body></html>
EOF

01-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Probar que el sitio funciona con la ip Publica que nos da la VM creada:

03-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

 


Borrar la VM

Editar la configuracion de la VM, destildando la opcion “Delete boot disk when instance is deleted”

04-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

Eliminar la VM

 

 

05-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Creamos una imagen desde el disco de la instancia creada anteriormente

 

06-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

Seleccionamos Sorce Disk el disco de la isntancia anterior:

07-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Luego seleccionamos crear “instance template”. Seleccionando la imagen creada anteriormente y tildando HTTP traffic.

08-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Creamos un grupo de instancias:

Seleccionado como imagen template la q creamos en el paso anterior

09-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

Elegimos el tipo de autoscale, en nuestro ejemplo seleccionamos  CPu, luego se selecciona el porcentaje de CPU que queremos como limite para crear una nueva instancia, el minimo de instancias y el maximo. Y el periodo que se tomarà para bajar una instancia en el caso que el cpu este por debajo del limite.

10-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Creamos un Load Balance para que distibuya el trafico entre el grupo de instancias:

11-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

Creamos un Load balance HTTP:

12-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

 


Para acceder al sitio podemos acceder desde la ip publica del load balancing:

03-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Verificamos que tenemos soloa una VM creada, ya que el CPU esta por debajo del limite

 

14-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


hacemos pruebas de Stress al servidor, en mi caso para esta prueba simple use el AB de apache (https://httpd.apache.org/docs/2.4/programs/ab.html) con el objetivo de forzar a la VM y que cree una nueva VM.

16-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar


Como veremos el sistema auto creo una nueva VM:

15-compute-engine-google-cloud-auto-scaling-espanol-morettimaxi-com-ar

 

 

  • Paramos el Mysql

sudo /etc/init.d/mysql stop

  • Iniciar Mysql sin password

sudo mysqld_safe –skip-grant-tables &

  • Conectar a Mysql y cambiar contraseña
    mysql -uroot
    use mysql;
    update user set password=PASSWORD(“mynewpassword”) where User=’root’;
    flush privileges;
    quit
  • Reiniciar Mysql

sudo /etc/init.d/mysql stop

sudo /etc/init.d/mysql start

Hoy Linux –  Como hacer un backup y subirlo a un ftp externo. 

Me tope con una empresa la cual tenia una sucursal y queria   automatizar el back-up de la Base de datos pero subiendolos via FTp a la sede central.

Les voy a comentar lo que haremos, y luego iré detallando como hacerlo.

1- Vamos a crear una carpeta en la computadora local, donde se irán creando y comprimiendo los backups mediante un script (sin borrar de la computadora local)
2- Luego vamos a crear dos scripts, uno servirá para hacer el backup y comprimir con la fecha del día (backup.sh), el otro servirá para conectarse y enviar el backup a un servidor de FTP. (enviar.sh)
3- Donde copiar el primer script para que se ejecute automáticamente cada día, y así tener un respaldo diario.

PREPARANDO LA COMPUTADORA

Como estamos hablando de una base de datos postgres, por una cuestión de permisos, todo será realizado por el usuario “postgres”.

1- Lo primero que vamos a hacer, es crear la carpeta local donde estarán los backups, para eso;

sudo mkdir/home/backups

le damos la carpeta al usuario postgres

sudo chown postgres -R /home/backups

2- Ahora vamos a crear los scripts, el primero lo llamaremos backup.sh (o como quieran llamarlo), este archivo lo pondremos dentro de la siguiente carpeta, que se ejecutara automáticamente todos los días, /etc/cron.daily/
Para conocer más sobre el uso del CronIngresar aquí

podemos crear el script de la siguiente manera

sudo nano /etc/cron.daily/backup.sh

dentro del archivo escribiremos los datos para que funcione el script que lo pongo a continuación:


#!/bin/sh
USER=postgres
FECHA=`date +%Y-%m-%d`
echo “Haciendo el Backup de la BD”
/usr/bin/pg_dump BD > /home/backups/backup-$FECHA.sql
echo “Comprimiendo el backup”
/bin/tar cvfz /home/backups/backup-$FECHA.tar.gz /home/backups/backup-$FECHA.sql

echo “Enviando el backup al servidor de FTP”
sh /home/backups/enviar.sh


guardamos con ctrl+x
por supuesto, colocamos la información que corresponde dentro del script, si no entienden, más abajo iré detallando el significado de cada parte para que puedan entender y modificarlo según su necesidad.
y ahora le damos los permisos

sudo chown postgres /etc/cron.daily/backup.sh

y le damos los permisos de ejecución

sudo chmod 777 /etc/cron.daily/backup.sh

Listo, ya tenemoshagamos una prueba para ver si ejecuta

sh /etc/cron.daily/backup.sh

una vez comprobado que este haciendo el backup y creando el archivo comprimido ambos con la fecha del día.
¡LISTO EL PRIMER SCRIPT!

———————————————————————————

Ahora pasaremos a crear el segundo script, que sirve para enviar al servidor de FTP, lo llamaremos enviar.sh

nos cambiamos al usuario postgres para no que todo lo que creemos pertenezca al usuario postgres, para eso tecleamos en la terminal

su – postgres

y con el usuario postgres creamos el archivo enviar.sh de la siguiente manera (o como crean mejor)

nano /home/backups/enviar.sh

ahora copiamos este script


#!/bin/bash

echo “Conectando y autenticando con el servidor de FTP”
FECHA=`date +%Y-%m-%d`
HOST=’ftp.servidor.net’
USER=’nombre de usuario’
PASSWD=’contraseña’
cd /home/backups/
echo “Enviando back-up de la BD”
ftp -n $HOST << END_SCRIPT
quote USER $USER
quote PASS $PASSWD
binary
put backup-$FECHA.tar.gz
quit
END_SCRIPT
echo “Archivo enviado correctamente”
echo “by morettimaxi.com.ar”

guardamos con ctrl+x
como en el script anterior se debe colocar la información que corresponde dentro del script, más abajo detallaré por parte para que entiendan el funcionamiento del script y asi puedan modificarlo según su necesidad.

IMPORTANTE: para crear este script, a debe contar con un usuario cliente de ftp y un servidor para poder configurar el script correctamente

y ahora le damos los permisos de ejecución

chmod +x /home/backups/enviar.sh

podemos ejecutar manualmente para ver si se conecta y envía el archivo.
si comprobamos que envía correctamente, ahora comprobaremos que todo funciona correctamente, para eso vamos a ejecutar

sh /etc/cron.daily/backup.sh

con esto debería hacer todo seguido,
[ol]
[li] Crear un back-up[/li]
[li] Comprimir el back-up[/li]
[li] Conectarse al servidor FTP[/li]
[li] Enviar el archivo comprimido al servidor de FTP[/li]
[/ol]

si todo esto ocurre como debe ser

¡FELICIDADES, HAS AUTOMATIZADO EL BACK-UP Y ENVIANDO A UN SERVIDOR DE FTP!

———————————————————————————

PASO A DETALLAR EL FUNCIONAMIENTO DE LOS DOS SCRIPTS

1- BACKUP.SH

Este código al inicio es necesario para que GNU/Linux reconozca que es un script


#!/bin/sh

Lo que hacemos aca es, indicar que el usuario “postgres” es el que ejecutará este script, para que no tengamos problemas de permisos.

USER=postgres

Acá le decimos que a partir de ese momento todo lo que tenga $FECHA, será para colocar el año-mes+día

FECHA=`date +%Y-%m-%d`

Todo lo que tiene “echo” es lo que informa al usuario lo que el script esta haciendo.

echo “Haciendo el Backup de la BD”

Este es el comando de que queremos hacer back-up y a donde, en este caso es una BD postgres e indica el nombre y lugar en la computadora local donde se creará el archivo de back-up.

/usr/bin/pg_dump BD > /home/backups/backup-$FECHA.sql

Todo lo que tiene “echo” es lo que informa al usuario lo que el script esta haciendo.

echo “Comprimiendo el backup”

Con este comando comprimimos el back-up creado, primero se indica donde estará el archivo comprimdo y luego donde esta el archivo a comprimir

/bin/tar cvfz /home/backups/backup-$FECHA.tar.gz /home/backups/backup-$FECHA.sql

Todo lo que tiene “echo” es lo que informa al usuario lo que el script esta haciendo.

echo “Enviando el backup a al servidor de FTP”

este es la orden para comenzar a ejecutar el segundo script, (enviar.sh), en el que se detalle el lugar exacto donde está ese script

sh /home/backups/enviar.sh

esas fueron las explicaciones de todas las parte del script, usted debe cambiar los datos según su propia necesidad.

———————————————————————————

2- ENVIAR.SH

Este código al inicio es necesario para que GNU/Linux reconozca que es un script

#!/bin/bash

Todo lo que tiene “echo” es lo que informa al usuario lo que el script esta haciendo.

echo “Conectando y autenticando con el servidor de FTP”

Acá le decimos que a partir de ese momento todo lo que tenga $FECHA, será para colocar el año-mes+día

FECHA=`date +%Y-%m-%d`

Acá es donde colocamos los datos que corresponden para poder conectarse, la dirección del servidor (HOST), el usuario (USER) y su contraseña (PASS)

HOST=’ftp.servidor.net’
USER=’nombre de usuario’
PASSWD=’contraseña’

Con este comando le indicamos al programa cual es la carpeta local donde esta el archivo que vamos a enviar al servidor de FTP

cd /home/backups/

Todo lo que tiene “echo” es lo que informa al usuario lo que el script esta haciendo.

echo “Enviando back-up de la BD”

Aca van todos los comandos a ejecutarse cuando ya estamos dentro del programa de FTP

ftp -n $HOST << END_SCRIPT
quote USER $USER
quote PASS $PASSWD
binary

Siguiendo dentro de los comandos del programa de FTP, se ejecuta el comando para enviar el archivo, que es el “put”, y para luego desconectarse y serra “quit”

put backup-$FECHA.tar.gz
quit
END_SCRIPT

Todo lo que tiene “echo” es lo que informa al usuario lo que el script esta haciendo.

echo “Archivo enviado correctamente”

Linux resuelva DNS de Windows

El inconveniente principalmente se presenta cuando estas trabajando en la consola, y no dispones de la IP del equipo con Windows, entonces, recordas el nombre del puesto de trabajo y haces via Terminal:

ping Equipo1

y lamentablemente nos encontramos con que el equipo “no existe” y nos devolverá algo parecido a:

ping: unknown host Equipo1

Ahora bien, este inconveniente se presenta por la prioridad para resolver los nombres seteados en el nsswitch, en principio haremos lo siguiente:

1) sudo -s [Get SUDO!!! sisi, es la única forma en la consola]
2) apt-get install winbind [Instalaremos el Bind para Wins]
3) nano /etc/nsswitch.conf [editamos el archivo nsswitch]

Buscamos la linea que dice:

hosts: files dns [es probable como yo que tengas mas items]

y lo cambias por:

hosts: files wins dns

Lesto!, Con esto estamos en condiciones de resolver los equipos de Windows, bajo nuestro entorno linux, por lo tanto ping Equipo1 nos devolverá respuesta.

Nota:
El archivo nsswitch, es empleado para configurar cual servicio sera usado para determinar la información relacionada a los hosts, archivo de contraseñas, y archivos de grupos.

Saludos.-