Redirigir el / a /app1 usando Wildfly con Undertow load balancer

Necesitabamos redirigir el / a una aplicación /web teniendo el undertow como balanceador.

 

No se podia usar el welcome-content porque no se publica en el balanceador el /.

Pero se pueden usar reglas para esa redirección, pero que no hay mucha información de como hacerlo.

 

Pero asi se puede conseguir:

<subsystem xmlns=”urn:jboss:domain:undertow:3.1″>
<buffer-cache name=”default”/>
<server name=”default-server”>
<http-listener name=”default” socket-binding=”http” redirect-socket=”https” enable-http2=”false” max-parameters=”5000″ tcp-keep-alive=”true” read-timeout=”600000″/>
<https-listener name=”https” socket-binding=”https” security-realm=”ApplicationRealm” enable-http2=”false” max-parameters=”5000″/>
<http-listener name=”management” socket-binding=”mcmp-management” enable-http2=”true”/>

<host name=”default-host” alias=”localhost”>
<filter-ref name=”load-balancer”/>
<filter-ref name=”redirectIndex” predicate=”path(/)”/>
</host>
</server>
<servlet-container name=”default” default-encoding=”UTF-8″ use-listener-encoding=”true”/>
<filters>
<mod-cluster name=”load-balancer” management-socket-binding=”mcmp-management” advertise-socket-binding=”modcluster” enable-http2=”true”/>
<rewrite name=”redirectIndex” redirect=”true” target=”/web/”/>
</filters>
</subsystem>

IP real para NGINX + WILDFLY-LB + WILDFLY

Vamos a explicar como parchear el undertow del wildfly 10.1.0 que se usa como balanceador (con modcluster) para que en nuestra aplicación salga la Ip real del cliente.

Ante esta situación:

CLIENTE(10.2.10.61) – NGINX(10.0.210.5) – WILDFLY/LB(10.0.210.34) – WILDFLY/APP(10.0.210.33)

Ahora nos salia esto:
10.0.210.34 forwarded for 10.0.210.5

Esto lo tienen preparado en el código de Undertow pero no es configurable, por eso hay que parchearlo.
Se ha parcheado para que resuse el X-Forwarded-For al usar el modcluster como balanceador:

diff –git a/core/src/main/java/io/undertow/server/handlers/proxy/ProxyHandler.java b/core/src/main/java/io/undertow/server/handlers/proxy/ProxyHandler.java
index f479029..aeb8c27 100644
— a/core/src/main/java/io/undertow/server/handlers/proxy/ProxyHandler.java
+++ b/core/src/main/java/io/undertow/server/handlers/proxy/ProxyHandler.java
@@ -121,7 +121,7 @@
private final int maxConnectionRetries;

public ProxyHandler(ProxyClient proxyClient, int maxRequestTime, HttpHandler next) {
–        this(proxyClient, maxRequestTime, next, false, false);
+        this(proxyClient, maxRequestTime, next, false, true);
}

/**

Y ahora sale asi:

10.0.210.34 forwarded for 10.2.10.61,10.0.210.5

Siendo la IP 10.2.10.61 la IP real del cliente.

Participación de ASOLIF en Magnolia Amplify 2016

El miércoles 28 de Septiembre de 2016 participamos en una mesa redonda del evento de Magnolia Amplify 2016 (Madrid) en la cual se trató sobre la importancia del OpenSource como dinamizador de la economía.

En el debate, participaron Manuel Velardo (Director del Centro de Excelencia de Fuentes Abiertas CENATIC / Red.Es), Francisco Solans (secretario de ASOLIF y representante de CESLA), Jorge Martín (Gestor de Comunidad del Centro de Excelencia de Fuentes Abiertas de CENATIC / Red.Es), Jesús Salvador (Jefe de Innovación de ADIF) y moderado por Soraya Muñoz (Directora de Open Knowledge Comunicación).

Podéis ver el debate  pulsando aquí.

¡ A muerte con ASOLIF y el Software Libre !

Como reiniciar el gnome-shell sin cerrar la sesion

A veces el gnome-shell no responde correctamente, por ejemplo no funciona llevar el ratón a la esquina superior izquierda, pero las aplicaciones esta funcionando correctamente.

¿Se puede arreglar el gnome-shell sin cerrar nada? Si

El camino más fácil es pretando ALT + F2, sale un dialogo que pide un comando, escribir “r” y pulsar ENTER.

Si no tambien se podria desde un terminal ejecutar el siguiente comando:

killall -3 gnome-shell Hay otros métodos pero cierran las aplicaciones.

Probar una nueva versión de un servicio en un nuevo servidor plug/unplug

Algo muy común  cuando administramos servidores es redireccionar tráfico.

Supongamos que tenemos un servidor con determinados servicios funcionando. Y queremos migrar o probar en producción una nueva versión que va en un nuevo servidor (por ejemplo porque estamos migrando de tecnologia o de versión de servidor, etc…) , pero que sea muy facil volvera la versión vieja ante cualquier problema no detectado en periodo de test.

Lo normal y más frecuente sería simplemente cambiar la IP en el registro DNS, no obstante si alguien estaba usando la IP en vez del subdominio se verá afectado.

 ¿Qué se puede hacer? Simple, redireccionar el tráfico que reciba ese servidor por ese puerto hacia otro servidor con el mismo puerto.

¿Cómo empezamos?

Lo primero será que debemos tener habilitado el forwarding en el servidor, para ello pondremos lo siguiente:

echo "1" > /proc/sys/net/ipv4/ip_forward

CentOS:
sysctl net.ipv4.ip_forward=1
Luego reiniciaremos la red:

service networking restart

CentOS sería:

service nertwork restart

Ahora ya se puede redireccionar:

iptables -t nat -A PREROUTING -p tcp --dport <puerto receptor> -j DNAT --to-destination <ip final>:<puerto de ip final>

Supongamos que deseamos redireccionar todo el tráfico que recibe nuestro servidor por el puerto 8080 hacia otro servidor (ej: 10.2.3.3), que igual recibirá ese tráfico por el 8080 (pues se trata del mismo servicio):

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 10.2.3.3:8080

El servidor 10.2.3.3 verá que todos los paquetes o peticiones vienen desde la IP del cliente, en caso de que quieran natear las peticiones, o sea, que el 2º servidor vea que las peticiones llegan con la IP del 1er servidor, sería poner además esta segunda línea:

iptables -t nat -A POSTROUTING -j MASQUERADE

 

Otras opciones

Redireccionar el tráfico que viene de una IP específica:

iptables -t nat -A PREROUTING -s 10.2.3.85 -p tcp --dport 8080 -j DNAT --to-destination 10.2.3.3:8080

Redireccionar el tráfico de un segmento de red:

iptables -t nat -A PREROUTING -s 10.2.3.0/24 -p tcp --dport 8080 -j DNAT --to-destination 10.2.3.3:8080

Redireccionar el tráfico que llegue por una interfaz específica:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to-destination 10.2.3.3:8080

Gnome: Abrir un aventana con terminales ya creados

Con este comando abrimos una ventana nueva de terminales:

gnome-terminal -e “$var_path/gnome_terminals_prod.sh”

Y con este creamos las pestañas que queremos en esa ventana:

gnome-terminal –title=”Entorno de test” –tab –command “bash -c ‘ssh -t cli1.neodoo.test  –tab –command “bash -c ‘ssh -t cli2.neodoo.test” –tab –command “bash -c ‘ssh -t services1.neodoo.test ” –tab –command “bash -c ‘ssh -t lb1.neodoo.test ” –tab –command “bash -c ‘ssh -t ws1.neodoo.test” –tab –command “bash -c ‘ssh -t rest1.neodoo.test ‘”

Esto combinado con la autentificación por clave privada, hace que tengamos en un segundo acesso a todos los servidores.