Monit: servicio si hay enlace

Por distintos temas de arquitectura se planteó la necesidad de disponer de un servicio solamente si el enlace (a Internet) estaba activo, o sea que cuando el enlace estuviera caído el servicio debería estar apagado, o lo contrario.

Perfectamente podría haber creado un simple script que periódicamente (mediante cron) revisara el enlace y actuara como se requiere, y creo que habría solucionado en unas pocas líneas de bash, aunque luego con notificaciones por correo y registros podría ser algo más complejo.

Así que preferí encarar la tarea con monit, por ser un daemon especialmente pensado para monitoreo y acción.

Monit dispone de una funcionalidad de monitoreo de networking y la regla de monit quedó así:

check host ConexionInternet with address 10.0.2.3
    if failed icmp type echo count 3 with timeout 3 seconds
         then exec "/usr/bin/service nginx stop"
    else if succeeded
         then exec "/usr/bin/service nginx start"
    alert monitor@gcorreo.com

y así quedan los registros, cuando baja y sube el servicio:

error    : ICMP echo request for 10.0.2.3 1/3 failed -- Operation not permitted
error    : ICMP echo request for 10.0.2.3 2/3 failed -- Operation not permitted
error    : ICMP echo request for 10.0.2.3 3/3 failed -- Operation not permitted
error    : 'ConexionInternet' failed ICMP test [Echo Request]
info     : 'ConexionInternet' exec: /usr/bin/service

info     : 'ConexionInternet' succeeded ICMP test [Echo Request]
info     : 'ConexionInternet' exec: /usr/bin/service

Luego analizando vimos que el servicio era de capa aplicación, por que decidimos cambiar a monitoreo de conexión, quedando así:

check host ConexionInternet with address www.google.com
    if failed url http://www.google.com/
        then exec "/etc/init.d/nginx stop"
    else if succeeded
        then exec "/etc/init.d/nginx start"
    alert monitor@gcorreo.com

Muy simple y confiable con la tarea delegada en el daemon monit.

Linux networking con Team

Link_Aggregation1

Preparando los temas del curso de RedHat Enterprise Server 7 que dicto, me encuentro con la funcionalidad team o teaming para interfaces Ethernet. Hasta ahora había utilizado bonding que es muy simple de configurar, pero tengo que reconocer que teaming ofrece más potencia de configuración y monitoreo que el anterior bonding.

Este nuevo dispositivo de red «teaming» busca ser más rápido, escalable, simple, configurable en espacio de usuario y reemplazar a bonding utilizando una arquitectura diferente. En si, permite crear una interfaz virtual que agrupa varias interfaces Ethernet reales; el proceso se conoce como «channel bonding«, «Ethernet bonding«, «channel teaming«, «link aggregation«, etc. y el objetivo es aumentar el ancho de banda o la disponibilidad de la conexión.

En team se crea un dispositivo «team«, que es la interfaz virtual que tendrá la IP (v4 y/o v6), a la que se asocian «ports» que son las interfaces reales.  El kernel tiene un mínimo driver para el manejo de paquetes y toda la funcionalidad está dada por un daemon teamd que implementa los runners que manejan los modos en que trabajarán las interfaces (broadcast, roundrobin, activebackup, loadbalance, lacp).

Las principales ventajas de team son:

  • Control a nivel de espacio de usuario
  • Monitoreo de link por interfaz
  • API para administración
  • Backup y upload de configuración mediante JSON

Así que ahora tenemos:

Un dirver del kernel:

filename:       /lib/modules/4.0.4-301.fc22.x86_64/kernel/drivers/net/team/team.ko.xz
alias:          rtnl-link-team
description:    Ethernet team device driver
author:         Jiri Pirko <jpirko@redhat.com>
license:        GPL v2
depends:
intree:         Y
vermagic:       4.0.4-301.fc22.x86_64 SMP mod_unload
signer:         Fedora kernel signing key
sig_key:        6A:00:6A:CA:14:AF:B6:50:69:E2:C0:94:CB:35:EA:80:6E:85:C2:4B
sig_hashalgo:   sha256

Un daemon:

teamd — team network device control daemon

Una librería:

Description : This package contains a library which is a user-space
: counterpart for team network driver. It provides an API
: to control team network devices.

Una herramienta de control de teamd:

teamdctl — team daemon control tool

Una herramienta de control de las interfaces:

teamnl — team network device Netlink interface tool

El equipo de Redhat ha trabajado mucho para dejar funcionando team con NetworkManager, aunque algunas funcionalidades avanzadas (por ej. Bridge sobre el Team) todavía requieren de los comandos y los ‘viejos’ archivos.

Sugiero leer el artículo «If You Like Bonding, You Will Love Teaming» por el autor del driver Jiri Pirko y Rashid Khan; y para un completo estudio del tema el manual de Redhat Enterprise Linux 7.

Ceibal y Google Apps for Education: bienvenida la discusión, pero para arribar a conclusiones

IT_GAFElogo

El Plan Ceibal firmó un contrato para disponer de Google Apps For Education para la Educación Pública de Uruguay y recientemente la Universidad de la República (UdelaR) emitió un comunicado manifestando su «honda preocupación por la aplicación del acuerdo sin discusión previa«.

Su preocupación se centra en la  «cuestión la protección de los datos personales de los menores de edad alumnos de la ANEP, en clara discordancia con la normativa vigente en nuestro país«.  El comunicado concluye con la explícita disposición institucional para discutir y evaluar «alternativas eficaces» «que sean garantes de la protección de los derechos consagrados por la legislación nacional«.

Bienvenida la discusión, que siempre es buena y sana cuando su objetivo es arribar a conclusiones y lograr un mejor resultado que el originalmente previsto.

El Plan Ceibal sometió el contrato al análisis de la Unidad Reguladora de Control de Datos Personales (URCDP) que concluyó que el acuerdo «se adecúa a las disposiciones normativas vigentes en materia de protección de datos personales«.

Entonces lo primero a resolver es quién tiene razón si la Universidad de la República que ve una clara discordancia con la normativa vigente o la Unidad Reguladora de Control de Datos Personales que entiende que se adecúa a la normativa. Tiendo a pensar que la organización especializada en regular los datos personales (URCDP) a quién le piden un análisis específico, no se equivoca y creo que la Universidad de la República se apresuró en sus fundamentos, sin consultar a sus especialistas en la materia.

Pero más me llama la atención cuándo la Universidad de la República ofrece discutir y evaluar alternativas eficaces que sean garantes de la protección de los derechos, pues si tiene alternativas eficaces deberian estarlas planteando.  Es fácil darse cuenta que el Plan Ceibal YA TIENE el problema resuelto de ofrecer una plataforma mediante este acuerdo con Google, mientras que la Universidad de la República pretende detenerlo para abrir una mesa para una discusión abierta y minuciosa de alternativas (no manifiestas).

Bienvenida la discusión.  Discutamos, pero si es una discusión constructiva.

Percibo un mensaje de lo que hiciste no me gusta y como no lo discutiste conmigo, entonces «paren las rotativas»,  primero vamos discutirlo y luego vemos qué hacemos, y eso no parece constructivo.

Quién profesa «honda preocupación» por algo, no está a favor. ¿es esa la semilla para ofrecer un aporte constructivo?

¿por qué la Universidad ve problemas donde Ceibal no los ve? ¿acaso por la «clara discordancia con la normativa vigente»? …. ¿y URCDP?

o ¿por qué la Universidad conoce «alternativas eficaces» que Ceibal no conoce?  ¿por qué parecen estar  «reservadas» para la mesa de discusión una vez que el acuerdo se «congele»?   La Universidad de la República tiene gente con muchísima capacidad que seguro está al tanto de esas alternativas eficaces ¿por qué no las están planteando?

Sigo diciendo que es buena la discusión del tema y que se tiene que dar, pero que no así, que parece un palo en la rueda al Plan Ceibal.

No así, sin concretar esas alternativas eficaces a los servicios de Google Apps for Education de los que se habla, porque a mi me dan miedo otras empresas globales, competidoras de Google, que ya han ‘coqueteado’ con el Plan Ceibal y que si son alternativas.

Con comunicados de este tenor pienso que la Universidad de la República se está perdiendo la oportunidad de hacer un aporte sustancial al Plan Ceibal.  Si se tiene conciencia de los problemas relativos a la protección de la privacidad, aprovechemos a trabajar con los maestros, educadores, familias y niños para que cada uno pueda reconocer estos problemas y protejer sus datos.

Y sería bueno para toda la sociedad la discusión seria de las soluciones eficaces (que existen) para protejer la privacidad y los datos personales; pero cómo dice Raúl Echeberria en la nota de Subrayado «la discusión sobre la privacidad y protección de los datos personales ‘es otro tema’«, o  al menos es lo que hasta ahora parece y está quedando relegada.