Archivo de la categoría ‘linux’
Usando Trpr (TRace Plot Real-time)
Martes, 25 de Noviembre de 2008Acelerando el Booteo
Martes, 11 de Noviembre de 2008Leyendo el blog de mi amigo Agustin encontre una herramienta excelente como para depurar el proceso de arranque. Decidi probar cuanto podia mejorar el arranque de mi laptop (Acer Aspire 3003 LCi), aunque nunca lo habia cronometrado.
La herramienta en cuestion es bootchart
El proceso de instalacion en ubuntu no fue mas que:
pelin@valkyria:~$ sudo apt-get install bootchart
Una vez instalado reinicio la pc. Genera los graficos y los guarda en /var/log/bootchart con la fecha y hora.
En el siguiente intento, depues de dar de baja algunas cosas que no utilizaba mejoro un poco y obtuve el grafico siguiente:
Mejora sustancial, decido una vez bajar algunas otras cosas y obtengo:

Listado de servicios que di de baja:
- apache2 (cuando necesite el web server lo levanto)
- nvidia-kernel (no se que hace instalado si no tengo esa placa de video…pero es parte del kernel
) - vboxdrv (virtualbox)
- apparmor
- cupsys (cuando quiera imprimir lo arranco y listo)
- avahi-daemon (solo tengo dos pc’s en mi casa, no lo necesito)
- clamav-freshclam (actualizacion de la base de datos de clamav)
- vmware (cuando necesite levantar las maquinas virtuales lo arranco)
- motion
- winbind
- y le saque la opcion splash del grub
Aca estaba bastante conforme con la mejora, pero la codicia pudo mas y busque alguna manera de bajar algunos segundos mas y encontre las siguientes tips, en particular copio los que utilice:
2. Run boot processes in parallel 6. Swappiness To set your value permanent you need to change the sysctl.conf file: I’ve found that the value of 5 works very good for my use and I have 1 GB of memory.
This will make upstart to run the boot processes in parallel and speed up the boot process.
sudo kate /etc/init.d/rc
Find and change the line:
CONCURRENCY=none
to:
CONCURRENCY=shell
The default value for vm.swappiness is 60 in Ubuntu Feisty whic is a good default value but if you want to tweak the performance a little bit more you can change this value to a lower value to reduce the load of the swap. If you run the follwing command:
sysctl -q vm.swappiness
You will se that the value is set to 60. And by running:
sudo sysctl vm.swappiness=10
You will change the value from 60 to 10 which will make your system write to swap a lot less and I would recommend this to everyone that has 512 mb of memory or more. If you find that you have very little use of swap set the value to 0. This will not disable the swap but it will make your system write to the swap as little as possible and keep as much as possible in memory. This makes a huge improvment when switching between applications since they are now likley to be in physical ram instead of on the swap partition.
sudo kate /etc/sysctl.conf
Add the line
vm.swappiness=10
To the end of the file. This way it will be set upon boot.
Por ahi encontre que la herramienta sysv-rc-conf ayudaria, pero solo es una interfaz ncurses para dar de baja demonios que arrancan con el sistema.
Para probarlo basta con
sudo apt-get install sysv-rc-conf
sudo sysv-rc-conf
Reinicio la pc y obtuve una leve mejora con la cual me quedo tranquilo.

Pero ojo!, hasta que obtengo mi escritorio totalmente cargado pasan casi 85 segundos.
Cuando ya se ha encontrado la configuracion optima se puede deshabilitar el bootchart con el comando:
sudo update-rc -f stop-bootchart remove
SSL en Apache
Miércoles, 8 de Octubre de 2008Configuracion de SSL en Apache, tanto en Windows como en Linux y OpenSolaris
Windows:
1) Instalar el apache.
Se deben descargar los binarios desde http://apache.adcserver.com.ar/httpd/binaries/win32/ e instalarlos, apache_2.2.9-win32-x86-openssl-0.9.8h-r2.msi . Es importante que se descargue el openssl
2) Instalar el OpenSSL.
Se deben descargar los binarios de http://www.slproweb.com/products/Win32OpenSSL.html ,el paquete tiene como requisito los Visual C++ 2008 Redistributable que se descargan desde el mismo sitio.
3) Crear los certificados:openssl req -new -out NOM_HOST.csr -keyout NOM_HOST.pem
Como nota, en la serie de preguntas que realiza, cuando solicita ingresar el Common Name se debe ingresar un valor igual al de NOM_HOST
openssl rsa -in NOM_HOST.pem -out NOM_HOST.key openssl x509 -in NOM_HOST.csr -out NOM_HOST.cert -req -signkey NOM_HOST.key -days 365
Donde NOM_HOST es el nombre del host
4) Habilitar el modulo SSL en el apache.
Se debe descomentar la siguiente linea en el archivo httpd.conf
LoadModule ssl_module modules/mod_ssl.so
y agregar
listen 443
ServerName NOM_HOST
SSLEngine on
SSLCertificateFile C:\certificados\NOM_HOST.cert
SSLCertificateKeyFile C:\certificados\NOM_HOST.key
Se reinicia el servidor web, en el browser se apunta a https://localhost, pide que se acepte el certificado y ya esta funcionando con SSL.
He intentado configurar el SSL en el apache-nossl que esta en el site, agregarle el modulo y demas yerbas pero no me funciono.
Linux:
La creacion del certificado y su firma es la misma que en el caso de Windows en el item 3.
deki:/etc/apache2/sites-available#a2enmod ssl
Module ssl installed; run /etc/init.d/apache2 force-reload to enable.
4.2) Modificar el archivo /etc/apache2/ports.conf agregando la linea
Listen 443
4.3) Configurar el host para usar SSL
Ya tenia en uso un vhost, asi que lo copie con otro nombre (lo llame dekiseguro) y las modificaciones que le hice fueron las siguientes:
SSLEngine on SSLcertificateFile /opt/certs/nom_host.cert SSLCertificateKeyFile /opt/certs/nom_host.key Posteriormente se debe habilitar el vhost
deki:/etc/apache2/sites-available# a2ensiteWhich site would you like to enable?Your choices are: default deki dekiseguro Site name? dekiseguroSite dekiseguro installed; run /etc/init.d/apache2 reload to enable.Una vez reiniciado o recargado el apache ya esta; y como solucion medio truchaal vhost que apuntaba al puerto 80 le agregue las ultimas 3 lineas.
Bad Request
Your browser sent a request that this server could not understand.
Reason: You’re speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.
Hint: https://deki/
Usando SSL en Tomcat
Lunes, 1 de Septiembre de 2008En estos dias me encontre con la necesidad de asegurar las conexiones que se realizan a nuestro tomcat que en breve lo pondriamos en produccion.
Estamos usando el Tomcat 5.5 sobre un Ubuntu Server 8.04 para servir algunas aplicaciones y el Pentaho.
Siguiendo la “SSL Configuration HOW-TO” en http://tomcat.apache.org/tomcat-5.5-doc/ssl-howto.html fue bastante sencillo.
Lo primero que se necesita es tener el sdk de java (el jre no recuerdo si alcanza)
- Creamos el keystore con un certificado firmado por nosotro mismos. Por defecto nos crea el keystore en el home del usuario llamado .keystore, para crearlo en un directorio externo (para mi lo mas recomendable) se usa el modificador -keystore en el comando
$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA -keystore /ruta/a/mi/keystore
A continuacion solicita que se ingrese la password del keystore, la password por default del tomcat es changeit pero uno es libre de cambiarla. Finalmente solicita la password del certificado, la cual debe ser la misma que la del keystore.
- Editar el archivo server.xml del tomcat
Se debe editar el archivo $CATALINA_HOME/conf/server.xml y agregar las lineas
- Ahora vamos a redireccionar todas las peticiones para que utilicen https:
Modifico el archivo $CATALINA_HOME/conf/web.xml agregando las siguientes lineas para redireccionar las peticiones hacia https.
- Una vez hecho esto cuando accedamos al index del tomcat estara en http, pero cada pagina servida por debajo me redireccionara hacia el https:
Esto es todo. espero que les sirva.
Nota: tuve que poner las imagenes debido a que me da error al levantar el texto de los archivos de configuracion.
Replicacion en PostgreSQL con Slony-I
Miércoles, 6 de Agosto de 2008Me toco configurar la replicacion de la postgresql, el escenario principal era entre Windows (XP y 2003) y la remota posibilidad de contar con algun Solaris como servidor final; pero ahora aparecio en escena Linux :).
Motores disponibles:
- PostgreSQL 8.2.6 con Slony 1.2.13R-pg82 (Windows)
- PostgreSQL 8.3 con Slony 1.2.14 (Windows)
- PostgreSQL 8.3 (Linux) con Slony-I 1.2.13
- PostgreSQL Plus AS 8.3 con Slony 1.2.11 (Windows)
Como primera regla a tener en cuenta:
Las versiones de slony deben ser iguales en los nodos
Pruebas realizadas:
Prueba 1
Escenario:
sargon ——————————> saladino
Sargon: 10.10.8.137 Windows 2003 Server PostgreSQL 8.2.6 con Slony-I 1.2.13
Saladino: 10.10.8.214 Ubuntu Server 8.04.1 kernel 2.6.24-19-server PostgreSQL 8.3 con slony-I 1.2.13
Configuracion de Sargon
1)Instalacion del PostgreSQL:
aca no hay nada raro, el mayor problema que se puede tener es que la cuenta ya exista cosa que se soluciona facilemente haciendo boton derecho sobre Mi PC -> administrar -> usuarios locales y grupos -> usuarios y ahi boton derecho sobre la cuenta, eliminar y listo!
Otra cosa: la instalacion via terminal server siempre da error. hay que hacerlo sentado fisicamente en la pc :). Por VNC no lo probe.
2)Instalacion del slony
En este caso es el tipico caso de aplis windows
es un siguiente -> siguiente
3) Configuracion de la replicacion:
- En el nodo maestro (sargon)
################################
cluster name = mgm_replic;
node 1 admin conninfo = ‘dbname=replica host=10.10.8.137 user=replipostgres password=replipostgres’;
node 2 admin conninfo = ‘dbname=replica host=10.10.8.214 user=replipostgres password=replipostgres’;
init cluster ( id=1, comment = ‘Nodo Maestro en Windows’);
table add key (node id=1,fully qualified name = ‘auditoria.movimiento_audit’);
table add key (node id=1,fully qualified name = ‘auditoria.seguimiento_audit’);
table add key (node id=1,fully qualified name = ‘auditoria.stock_audit’);
table add key (node id=1,fully qualified name = ‘auditoria.vale_audit’);
create set (id=1, origin=1, comment=’aqui van todas mis tablas a replicar’);
set add table (set id=1, origin=1, id=1, fully qualified name = ‘public.personal’,comment=’mi tabla de personal’);
set add table (set id=1, origin=1, id=2, fully qualified name = ‘auditoria.movimiento_audit’,key= serial,comment=’mi tabla de auditoria de movimientos’);
set add table (set id=1, origin=1, id=3, fully qualified name = ‘auditoria.seguimiento_audit’,key= serial,comment=’mi tabla de auditoria de seguimiento’);
set add table (set id=1, origin=1, id=4, fully qualified name = ‘auditoria.stock_audit’,key= serial,comment=’mi tabla de auditoria de stock’);
set add table (set id=1, origin=1, id=5, fully qualified name = ‘auditoria.vale_audit’,key= serial,comment=’mi tabla de auditoria de stock’);
store node (id=2, comment = ‘Nodo Esclavo en la linux’);
store path (server = 1, client = 2, conninfo=’dbname=replica host=10.10.8.137 user=replipostgres password=replipostgres’);
store path (server = 2, client = 1, conninfo=’dbname=replica host=10.10.8.214 user=replipostgres password=replipostgres’);
store listen (origin=1, provider = 1, receiver =2);
store listen (origin=2, provider = 2, receiver =1);
##########################################
lo guardo en un archivo llamado “maestro.txt”
y ejecuto en el cmd:
#######################
C:\Archivos de programa\PostgreSQL\8.2\bin>slonik.exe “c:\Archivos de programa\PostgreSQL\replicacion\maestro.txt”
C:\Archivos de programa\PostgreSQL\8.2\bin>
########################
Si no dio error, todo esta bien. En caso de haber alguno se debe ver a que hace referencia: entrada en el pg_hba.conf, no existe la cuenta, etc.
Ejemplo de error
##############################
C:\Archivos de programa\PostgreSQL\8.2\bin>slonik.exe “c:\Archivos de programa\PostgreSQL\replicacion\maestro.txt”
c:\Archivos de programa\PostgreSQL\replicacion\maestro.txt:8: FATAL: no hay una
línea en pg_hba.conf para «10.10.8.137», usuario «replipostgres», base de
datos «replica», SSL inactivo
###############################
- En el nodo esclavo (saladino)
###############################
#!/bin/sh
slonik << name =" mgm_replic;" conninfo =" 'dbname="replica" host="10.10.8.137" port="5432" user="replipostgres" password="replipostgres';" conninfo =" 'dbname="replica" host="10.10.8.214" port="5432" user="replipostgres" password="replipostgres';" id="1," provider="1," receiver="2," forward="yes);" size="2">pelin@saladino:/etc/postgresql/8.3/main/replicacion$ sudo sh init_suscription-5to.sh
pelin@saladino:/etc/postgresql/8.3/main/replicacion$
###############################
Si no dio error todo esta bien.
- Registro el servicio slon en sargon (Windows)
El windows 2003 da error al ejecutar el comando slon -regservice
#####################
C:\Archivos de programa\PostgreSQL\8.2\bin>slon -regservice
Failed to create service: 1057
######################
La solucion es: (Adjunto la respuesta de Roberto Crucianelli)
######################
slon -regservice
crea un servicio que en definitiva no es más que una serie de llaves de Registry.
Falla en Windows 2003 Server porque Microsoft cambió algunas llaves.
Lo podés levantar creando el servicio a mano.
Si no tenés el Windows Resource Kit para 2003 Server lo bajás de Microsoft. Son utilidades de línea de comandos. Uno de los programas es instsrv.exe. Hacé:
instsrv Slony-I “C:\Archivos de programa\Postgresql\8.3\bin\slon.exe”
(Usá el path que tengas a slon.) Te va a decir que lo creó.
Desde Panel de Control - Herramientas Administrativas - Servicios verificá que esté creado y deshabilitalo.
Ahora vas a regedit
Buscás:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Slony-I
(Tiene que estar.)
Abrí la llave ImagePath.
Vale:
\slon.exe”
Agregá esto ” -service” a continuación de slon.exe.
Creá una nueva entrada Multilínea (REG_MULTI_SZ) al mismo nivel que está ImagePath.
Nombre: DependOnService”
Valor: RPCSS
Salí de Regedit y vas a de nuevo a Panel de Control - Herramientas Administrativas - Servicios. Buscá Slony-I.
Asegurate que el comando que muestra (slon.exe) tenga la opción -service y que figure la dependencia de Servicio de Llamada Remota.
Ahí pasalo a Automático y le dás Iniciar. Si todo fue bien tiene que arrancar sin problemas.
*****Te va a faltar hacer:
slon -addengine Slony-I
Y reiniciar el servicio (o Windows).
######################
****Continuamos:
En sargon creo un archivo que contiene:
#######################
cluster_name = ‘mgm_replic’
conn_info=’dbname=replica user=replipostgres password=replipostgres’
########################
y lo llamo slon.conf
ejecuto:
######################
C:\ARCHIV~1\POSTGR~1\REPLIC~1>slon -addengine Slony-I slon.conf
Engine added.
NOTE! You need to restart the Slony service before this takes effect.
C:\ARCHIV~1\POSTGR~1\REPLIC~1>
######################
Reinicio el servicio Slony-I
En saladino creo un archivo similar a slon.conf y lo llamo init_slony.sh
##########################
cluster_name=mgm_replic;
conn_info=’dbname=replica host=10.10.8.214 user=replipostgres password=replipostgres’;
##########################
y lo ejecuto en el shell
#######################
pelin@saladino:/etc/postgresql/8.3/main/replicacion$ sudo sh init_slony.sh
pelin@saladino:/etc/postgresql/8.3/main/replicacion$
########################
Ahora queda la cuestion del slony en el lado de la linux
Creo un archivo llamado “init_slony-1.sh” que contiene
#########################
#!/bin/bash
slon mgm_replic “dbname=replica host=10.10.8.214 user=replipostgres password=replipostgres” > slon_mgm_replica.out 2>&1 &
#########################
lo ejecuto en la consola:
########################
pelin@saladino:/etc/postgresql/8.3/main/replicacion$ sudo sh init_slony-1.sh
#########################
Una vez hecho esto, ya deberia estar replicando la Base de datos replica.
En el archivo slon_mgm_replica.out se puede ver el log del proceso que esta en ejecucion.
Esperemos que les sirva!.
En breve estare escribiendo mas articulos de replicacion.





