lunes, 13 de septiembre de 2010

Día del programador


Feliz día del programador!!

Hoy se celebra el día 256 del año que es el día del programador... felicidades a todos mis compañeros.

Este día todavía no es oficial pero si insistimos cada año en celebrarlo podemos institucionalizarlo para hacer notar la importancia de nuestro trabajo en la forma en que el mundo se desenvuelve diariamente.-



saludos!

martes, 16 de marzo de 2010

Configurar tamaño de archivo de mantisbt

Necesitaba poder subir archivos grandes como adjuntos en mantisbt, es un tema realmente básico pero que implico cambiar todas las capas de archivos de configuracion: aplicacion, base de datos, php.

El error que recibía era:

Allowed memory size of 8388608 bytes exhausted

APPLICATION ERROR #401

Fueron varios temas los que tuve que cambiar:


php.ini
memory_limit = 32M
upload_max_filesize = 8M

config.inc de mantis:
$g_max_file_size = 8388608; # 8 MB

mysql:
max_allowed_packet = 16M

domingo, 14 de marzo de 2010

Orden de Arranque en GRUB2 (ubuntu 9.10)

Para cambiar el orden de arranque de linux ubuntu 9.10:
ubuntu 9.10 usa el grub2 en lugar de grub, eso me hizo perder algun tiempo leyendo en internet.

1. ver que tiene el archivo grub.cfg usando
cat /boot/grub/grub.cfg

2. se busca cual es la opcion que queremos que arranque primero, en mi caso quiero que arranque windows en lugar de linux. Mi windows esta en el orden 8.

3. modificar el default del archivo /etc/default/grub desde el gedit:
sudo gedit /etc/default/grub

4. cambio la linea y grabo
GRUB_DEFAULT=8

5. actualizo los cambios
sudo update-grub


sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.31-20-generic
Found initrd image: /boot/initrd.img-2.6.31-20-generic
Found linux image: /boot/vmlinuz-2.6.31-16-generic
Found initrd image: /boot/initrd.img-2.6.31-16-generic
Found linux image: /boot/vmlinuz-2.6.31-14-generic
Found initrd image: /boot/initrd.img-2.6.31-14-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
done


reiniciar.-

martes, 17 de noviembre de 2009

Ubuntu 9.10 - Compartir ThunderBird con windows

Bueno, acabo de formatear mi maquina y ando con la intensión de poner ubuntu.

¿porque?

porque me gusta y porque es algo que quería hacer desde hace tiempo. Al final de cuenta, soy un poco geek.

Espero poder hacerlo, mientras logro acostumbrarme y configurar todo tengo mi computadora con 2 particiones, una en Windows 7 y otra con Ubuntu 9.10

Lo primero y lo principal para mí es tener mi correo funcionando. Hace algun tiempo que uso thunderbird en windows y me va bien.

En algun momento algun compañero me comento que tenia el thunderbird en windows y linux compartiendo los archivos.

Esa fue mi primer misión: Poder usar mi correo en thunderbird desde linux y windows en un solo repositorio (pst dirían los que usan outlook).

0. Saqué un backup de la carpeta donde estaban mis archivos de thunderbid (c:/user/USUARIO/appData/../thunderbird/profiles/perfil.perfil

1: hice la particion de windows e instale. Deje el resto de disco sin particionar.

2: instale ubuntu y cree la segunda particion para el sistema operativo (la de swp tambien).

3. cree una particion adicional en ntfs con el resto de mi disco. desde windows.

4. copie mi backup del perfil en la carpeta de la unidad adicional.

5. cambié el archivo c:/user/USUARIO/appData/../thunderbird/profiles.ini con esto:
[Profile0]
Name=default
IsRelative=0
Path=d:/Perfil
Default=1

6. levante el thunderbird desde windows y funcionaba calidad.

7. cambie el fstab para que en linux siempre monte automaticamente la particion compartida. agregué esta linea:

/dev/sda4 /media/Datos ntfs users,defaults,umask=000 0 0

8. instale el thunderbird desde el Synaptic

9. modifique el archivo /home/USUARIO/.mozilla-thunderbird/profiles.ini con lo mismo que puse en windows pero con la carpeta montada /media/Datos/Perfil

10. Arranque thunderbird y todo nitido.

Ahora puedo cambiarme linux windows sin perder los correos que voy trabajando.

saludos!

jueves, 15 de octubre de 2009

Micro Howto para crear un repositorio cvs.

#crear un repositorio
mkdir /cvs/nombre
cvs –d /cvs/nombre init
chmod 655 /cvs/nombre -R
chown cvs:cvs /cvs/nombre -R

donde cvs:cvs es el usuario y role creados para manejar el cvs.

jueves, 1 de octubre de 2009

Quitar Tunnel Adapter Local Area Connection* 9 en windows 7. (deshabilitar ipv6)

Desde que instale windows 7 en mi maquina, al darle ipconfig me empezaron a salir algunas conexiones "raras".

Tunnel Adapter Local Area Connection* 9
Tunnel Adapter Local Area Connection* 10
Tunnel Adapter Local Area Connection* 11
etc...-

Realmente muy molestas porque no me dejaban ver la información de la red. Igual cuando daba un route print.

Encontre que el problema es porque el windows 7 trae por default el ipv6 configurado. Se que es el futuro del ip y que algun día portaremos a eso, pero hoy no lo necesito.

Encontre como quitarlo en el siguiente link:
http://www.lboro.ac.uk/it/vista/ipv6.html

saludos!

jueves, 24 de septiembre de 2009

Balanceo de Carga para dos websphere application server 6.1 usando mod_proxy_balancer

Hace varios días que vengo trabajando en un problema que me ha quitado el sueño y la tranquilidad.

Hace como mes y medio empece a leer sobre el tema de balanceo de carga desde Apache usando el mod_proxy_balancer.

http://httpd.apache.org/docs/2.2/mod/mod_proxy_balancer.html

Desde las guías todo parecía sencillo. Sinceramente no estaba muy claro de las modificaciones que se estaban planteando, pero para variar, empece a probar sin terminar de leer la documentación :p

Hice unas pruebas y asumi que todo estaba funcionando bien. El tema se quedó dormido durante algún tiempo, pero luego tuve que retomarlo desafortunadamente con las fechas ya bastante apretadas.

http://www.howtoforge.com/load_balancing_apache_mod_proxy_balancer

Me pareció excelente que se pudiera tener no solamente el balanceo de carga sino la tolerancia a fallos. De manera que si un server se caía, podía seguir operando con el otro server.

-- la version 1 de mi httpd.conf
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
ProxyRequests Off

<Proxy *>
Order deny,allow
Allow from all
</Proxy>

ProxyPass /balancer-manager !
ProxyPass / balancer://clusterWAS/ stickysession=BALANCEID nofailover=On
ProxyPassReverse / http://192.168.15.124:9080/
ProxyPassReverse / http://192.168.15.127:9080/
<Proxy balancer://clusterWAS>
BalancerMember http://192.168.15.124:9080 route=http1
BalancerMember http://192.168.15.127:9080 route=http2
ProxySet lbmethod=byrequests
</Proxy>

<Location /balancer-manager>
SetHandler balancer-manager
Order deny,allow
Allow from all
</Location>
Hice unas pruebas y asumi que todo estaba funcionando. Pero desafortunamente en ese momento no puse mucha importancia al tema de la sesion.

Al tener mi servidor balanceando carga entre los 2 nodos, la mitad de los requerimientos va a un server y la otra mitad al otro. Pero... si entro a mi aplicacion y me firmo. Esto se guarda en una variable de sesion. Y balanceando la carga se pierde.... :(

Es decir..
Pinto pantalla de login (Nodo1)
Recibo parametros de login valido y guardo variables de sesion(nodo2)
Reenvio a pantalla de inicio (Nodo1)

El problema es que en el nodo1, nunca guarde variables asi que asume que no esta firmado y vuelve a pedir la clave.

Lei un poco sobre el tema y hablaba del stickysession.

Ahora que ya entendí les cuento que la famosa stickyession es una cookie con un id de session. Que tiene 2 partes. La session y el route.
CookieJSESSIONID=00009jrrrDW78YKKVP6BTuDqqFg.-1

Esto lo pude ver gracias al pluggin firebug de firefox. Que en la pestaña de red muestra los paquetes enviados.

No obstante no lograba que funcionara en mi esquema.

Yo tengo 2 nodos con Websphere Application Server 6.1. Los 2 tienen la aplicacion instalada y funcionando.

Luego de buscar bastante y hacer bastantes pruebas encontré que la cookie de session se envía diferente en websphere que en tomcat. Y que el apache no la entendía.
CookieJSESSIONID=00009jrrrDW78YKKVP6BTuDqqFg:-1

La diferencia es el ":" en lugar del ".".

https://issues.apache.org/bugzilla/show_bug.cgi?id=42513

No hay un parque para esto en los releases.

Tuve que recompilar el apache para inlcuir la modificación en el modulo. (esto será un post aparte).
El truco no era la recompilada de apache, el truco era, la recompilada en Windows de apache :S

Bueno... luego de recompilado el apache con la recomendación que dan en el bug. Logre que la cookie tuviera el formato adecuado... pero... aun así no funcionaba!

CookieJSESSIONID=00009jrrrDW78YKKVP6BTuDqqFg.-1

Fue luego de esto cuando comprendí que el problema es que el -1 que estaba mostrando debía ser el nombre del nodo.

En algunos post, encontre que este valor es llamado route. y se configuraba en los tomcat como jvmrouteid. En websphere no encontraba nada por el estilo.

Un poco de suerte me llevo a una url donde se miraba el debug de una traza en websphere con balanceo de carga y hablaba de un Clone ID ... http://www-01.ibm.com/support/docview.wss?uid=swg27014498&aid=1

Buscando en la documentación encontre como configurarlo y funcionó.

http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//index.jsp?topic=/com.ibm.websphere.zseries.doc/info/zseries/ae/rprs_custom_properties.html
Application servers > server1 > Web container > Custom Properties

Para el nodo uno le puse un cloneid de "nodo1" y al otro "nodo2".

Ahora sí. Mis cookies quedaban de la siguiente forma:
para el nodo1:
JSESSIONID=0000gQCnyQMY94sb5oVXZsLU0lR:nodo1

para el nodo2:
JSESSIONID=0000gQCnyQMY94sb5oVXZsLU0lR:nodo2

Con mi apache recompilado y con mis cookies en buen estado procedí a realizar las configuraciones que me hacían falta en el apache.

Primero habilité los módulos necesarios:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so


Luego algunos parámetros generales de la configuracion:
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>


Configuré el balance con mis 2 nodos:
<Proxy balancer://clusterPerfilUno>
BalancerMember http://192.168.15.121:9080 route=nodo1
BalancerMember http://192.168.15.123:9080 route=nodo2
ProxySet lbmethod=byrequests
</Proxy>


donde dice "route=nodo1" es el nombre que haya puesto al cloneid en mi WAS. Luego hago el proxypass en mi aplicacion hacia el balanceo.
La stickysession la hago sobre la cookie que logre setear. Y seteo el reverse para el regreso de las conexiones.

<Location /app>
Order allow,deny
Allow from all
ProxyPass balancer://clusterPerfilUno/app stickysession=JSESSIONID nofailover=On
ProxyPassReverse http://192.168.15.121:9080/app
ProxyPassReverse http://192.168.15.123:9080/app
</Location>


Puse el loglevel en debug para rastrear posibles errores y me sale algo asi:
[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_balancer.c(46): proxy: BALANCER: canonicalising URL //
clusterPerfilUno/app
[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_balancer.c(280): ICON: proxy: BALANCER: Found value 00006BXDRmMTJiopXVx9UnRFUCR:nodo1 for stickysession JSESSIONID
[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_balancer.c(296): proxy: BALANCER: Found route nodo1
[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_balancer.c(579): proxy: BALANCER (balancer://
clusterPerfilUno) worker (http://192.168.15.121:9080) rewritten to http://192.168.15.121:9080/app
[Wed Sep 16 16:16:57 2009] [debug] mod_proxy.c(993): Running scheme balancer handler (attempt 0)
[Wed Sep 16 16:16:57 2009] [debug] mod_proxy_http.c(1920): proxy: HTTP: serving URL http://192.168.15.121:9080/app

Si no tengo buena la cookie recibo el found value (null) for stickysession JSESSIONID.

con esto logre hacer el balanceo de carga usando mod_proxy_balancer con un websphere 6.1 en los nodos.

En los proximos días estaré haciendo pruebas de esto y si encuentro algo mas lo publico.

Espero poder publicar la recompilada del apache sobre windows y también una segunda alternativa que estuve a punto de implementar.

Cabe mencionar que el IHS de IBM es una alternativa que no logre a terminar de evaluar para resolver este problema.

saludos!