jueves, 6 de febrero de 2014

Running Google Cloud's "gcutil" behind a socks proxy with tsocks and ssh tunnel

Suppose you have to use google's cloud platform "gcutil" tool to connect to one or more nodes on a project hosted on google cloud platform but you don't have a direct internet connection although  you still can set up a ssh connection to a gateway who has the ability to connect directly to Internet.

Given this scenario you can follow this simple steps to accomplish your task:

1. Open a terminal and ssh to your gateway using the following command

ssh -D 1080 user@gateway_ip

2. Install tsocks package (Debian/Ubuntu or RedHat/CentOS) 

sudo apt-get install tsocks 

or

yum install tsocks 

3.  Edit your tsocks.conf file like this:

# your local network/mask
local = 192.168.100.0/255.255.255.0
# local = 10.0.0.0/255.0.0.0

# Paths
# For this example this machine needs to access 150.0.0.0/255.255.0.0 as 
# well as port 80 on the network 150.1.0.0/255.255.0.0 through
# the socks 5 server at 10.1.7.25 (if this machines hostname was 
# "socks.hello.com" we could also specify that, unless --disable-hostnames
# was specified to ./configure).

path {
reaches = 150.0.0.0/255.255.0.0
reaches = 150.1.0.0:80/255.255.0.0
server = localhost
server_type = 5
default_user = delius
default_pass = hello
}

# Default server
# For connections that aren't to the local subnets or to 150.0.0.0/255.255.0.0
# the server at 192.168.0.1 should be used (again, hostnames could be used
# too, see note above)
# your local ssh-socks server
server = 127.0.0.1
# Server type defaults to 4 so we need to specify it as 5 for this one
server_type = 5
# The port defaults to 1080 but I've stated it here for clarity 
# the port you'd just select in the previous ssh connection
server_port = 1080 

4. Launch gcutil 

tsocks ./gcutil node-id 

And that's all. 

viernes, 27 de septiembre de 2013

Feliz cumpleaños GNU !


[ Celebrate 30 years of GNU! ]

miércoles, 3 de julio de 2013

Liferay Portal sobre Google Compute Engine

Después de haber usado Linode por un tiempo hemos encontrado que una alternativa viable y económicamente flexible es ejecutar Liferay Portal sobre Google Compute Engine . Este último ofrece un entorno completo de ejecución, simple de configurar y cómodo en términos de administración y costos, con la posibilidad de usar diferentes distribuciones de Linux así como la posibilidad de enlazarnos a otros servicios en cloud de google como CloudStorage y CloudSQL u otros servicios externos. 

Procedimiento de instalación y configuración de Liferay Portal en Google Compute Engine(GCE).

Los pasos para tener una instancia de Liferay Portal corriendo sobre Google Compute Engine se describen a continuación. Se asume en este caso que el usuario ya tiene una cuenta activa de en Google Cloud y que ha activado el billing para el proyecto. 

Paso 1 - Crear una instancia de compute engine 


  1. Haga click en el proyecto creado con billling activo (ej, miempresa-gce-demo-001)
  2. Ingrese los datos de solicitados: nombre de la instancia, descripción, tags y metadatos (son útiles para identificar el uso o cliente de la instancia etc). Seleccione además un sistema operativo para la instancia ( Puede seleccionar Debian7 por ejemplo) teniendo cuidado de no usar uno que esté marcado como "deprecated".  Finalmente haga click en el botón "Create". 
  3. Espere unos segundos hasta que la instancia esté activa (aparecerá en el listado). Cuando esté lista haga click sobre el nombre de la instancia para ver los datos en detalle. Tome nota de la dirección IP pública asignada, el ID del proyecto (project-id)(esquina superior izquierda) y ID de la instancia (instance-id).

Paso 2 - Conectarse a la instancia vía SSH 


  • Descargue e instale la aplicación "gcutil". Esta permitirá el control y acceso a las instancias de GCE desde la consola del sistema operativo. La herramienta se puede descargar de: gcutil site.
  • Una vez instalada la instancia ejecute el siguiente comando para conectarse por primera vez:  
         gcutil ssh --project=proyect_id instance-id

          La primera vez seleccione la contraseña deseada y el programa se encargará de dejar         
          la autorización creada para el cliente ssh la próxima vez. 

          Nota. Este proceso puede tardar aproximadamente 5 minutos la primera vez, así que   
          tenga paciencia. 
  • Cuando haya ingresado quedará en un shell estándar de Linux que podrá usar normalmente.

Paso 3 - Configuración del entorno de usuario 

Una vez en el shell de nuestra instancia de GCE se recomienda crear un entorno de trabajo estándar sobre el cual podamos trabajar fácilmente  a futuro. Nuestra recomendación es usar la siguiente:

mkdir app src tmp 
chmod 1777 

apps: binarios (ej, jboss + liferay) 
src: fuentes usadas para la instalación de paquetes propios o de terceras partes
tmp: carpeta de temporales local en caso de que se tengan múltiples instancias de servidor de aplicaciones y se quieran evitar conflictos con acceso a temporales. 

Paso 4 - Instalación de JDK 7 

El siguiente paso es instalar el JDK. Para el caso se instalará el JDK7. Puede instalarlo usando el siguiente comando:

sudo apt-get install openjdk-7-jdk

Una vez finalice verifique que está correctamente instalado y disponible en el PATH usando:

java -version 

Si tiene problemas verifique la instalación y repita el proceso. 

Paso 5 - Descargar Liferay Portal CE a la instancia 


  • Desde el sitio oficial de Liferay Portal http://www.liferay.com descargue la versión comunitaria o un demo de la versión Enterprise (es la recomendada para aplicaciones en producción). 
  • Para descargarla a la instancia puede usar wget (copiando y pegando el enlace) o descargarla a su máquina y transferirla luego. 
  • Copie el paquete descargado en la carpeta src creada previamente. 
  • Descomprima el paquete con destino a la carpeta tmp: 
          tar xzf liferay-portal-ce-**.tar.gz -C  ~/apps
  • Vaya a la carpeta apps y cree un link simbólico a la carpeta de instalación de Liferay
    ln -s liferay-portal-ce-** liferay61     
         Nota. Este paso no es necesario pero ahorrará tiempo durante la administración   
                    normal.

Paso 7 - Configuración básica e inicio del portal por primera vez 

Dado que el portal por defecto solo escucha en localhost es necesario ajustar la configuración  para que el conector web del servidor de aplicaciones se asocie a todas las interfaces disponibles, para el caso se asume que el bundle de liferay que se está usando es el que incluye JbossAS.  Una forma simple de hacerlo es crear un script del shell adicional que envíe el parámetro de binding al script de arranque del dominio así:

cd ~/apps/liferay61/jboss*/bin
echo "#!/bin/bash" >> start-liferay.sh 
echo "./standalone.sh -b 0.0.0.0 1> ../standalone/log/ \\
       mi-liferay.log &" >> start-liferay.sh 
chmod +x start-liferay.sh 
./start-liferay.sh & 

Puede verificar el inicio del portal usando tail así:

tail -f ~/apps/liferay61/jboss*/standalone/log/mi-liferay.log 

Una vez haya iniciado puede continuar con el paso siguiente. 

Nota. Se incluye la redirección para poner el portal en background y que no se caiga si cerramos la consola. 

Paso 8 - Configuración de firewall para acceso al servicio 

El portal escucha por defecto en el puerto 8080 por lo que será necesario adicionar una regla al firewall de la instancia para admitir conexiones a dicho puerto. Para el caso se asume que es un servicio público pero bien podría estar limitado a una IP o red específica. 

Para agregar la regla vaya al panel de control de Google Cloud, haga click en el proyecto que crearon, luego click en el menú lateral "Networks". En la sección "Firewalls" seleccione "Create new". 

Una vez allí ponga un nombre a la regla, ej "liferay", una descripción, en la sección de "Protocols & ports" escriba "tcp:8080". Finalmente de click en "Create".

Paso Final. Conectarse a la instancia 

Una vez creada la regla de firewall ya podrá conectarse desde el navegador usando la IP pública de la instancia y apuntando al puerto 8080. El primer paso será configurar Liferay para el inicio (el proceso es muy sencillo y no vale la pena entrar en detalles aquí). Y eso es todo!. El proceso completo puede tardar menos de treinta minutos lo que nos da un nivel de maniobra impresionante a la hora de configurar sitios de prueba, demos para clientes e incluso nuevos sitios. 

Notas finales y recomendaciones 


  • Si la instancia se reinicia o inactiva los datos se perderán. Es importante crear discos con almacenamiento permanente que se monten al inicio de la instancia(s) y que contengan el portal y el JDK aislados. Esto con el fin de reducir los tiempos. 
  • Si se requiere el uso de múltiples instancias con propósito específico vale la pena usar una herramienta de gestión que facilite el trabajo como  RightScale (http://www.rightscale.com)
  • Si se requiere el uso de balanceadores puede utilizarse nginx (http://www.nginx.org ) en un nodo de balaceo y un grupo de nodos adicionales "atrás". 
  • Si se requiere el uso de bases de datos externas lo mejor es usar Google Cloud SQL que es enganchable directamente y ofrece driver jdbc compatible con el servidor de aplicaciones (tomcat, jboss etc). 


domingo, 3 de julio de 2011

Nginx, JBoss 5.1 y Liferay Portal 6



Esta guía contiene los pasos necesarios para configurar el servidor
web Nginx como un proxy reverso y balanceador de cargas para Liferay
Porta 6 sobre JBoss 5.1.
grupodot 2011

jueves, 1 de julio de 2010

Conexión de Liferay Portal con Domain Controller


Pasos previos:

1. Instalar windows 2003 server
2. Configurar el servidor como el controlador de un nuevo dominio
inicio / ejecutar / dcpromo


Configuración de Liferay

1. Panel de control / configuración / autenticación
2. Autenticar por screenname
3. Activar LDAP . seleccionar Active Directory
4. Probar la conexión

IP del servidor
Usuario: Ej, Administrador@DCLOCAL
Clave: ***

Modificar el filtro de búsqueda de usuarios a :

(&(objectCategory=person)(sAMAccountName=@screen_name@))


Eso es todo !


Pasos para la configuración de Liferay Portal con Active Directory - Microsoft



Paso 1 . Como administrador entrar por el panel de control a "Configuración" luego a "Autentificación". Seleccionar la pestaña "LDAP", luego seleccionar "Habilitado", luego seleccionar "Microsoft Active Directory"
Allí poner los datos como se muestra a continuación:




Paso 2. Probar la conexión con el AD usando la opción "Probar la conexión con LDAP". Si es exitosa seguir con paso 3, sino revisar las credenciales y demás datos y volver a probar.



Paso 3. Configurar los datos de usuario como se muestra a continuación





Paso 4. Probar usuarios usando "Probar la configuración de usuarios LDAP"







Paso 5. Probar grupos usando ""Probar la configuración de grupos LDAP"



Finalmente verificar que la autenticación se haga por Nombre de usuario (screenname).

Configuración de Liferay / Jboss como servicio en Windows Server (2003, 2008)

Configuración de Liferay / Jboss como servicios en Windows 2K Server


Liferay ---> D:\Portal\liferay-portal-5.2.4
JDK 1.6 ---> C:\Program Files\Java\jdk1.6.0_13\



Existen varias opciones para la configuración de aplicaciones Java (como Jboss, Tomcat etc) como servicios nativos de windows que puedan controlarse de forma automática por el sistema operativo, sin embaro la única recomendada por Jboss es el JavaServiceWrapper de Tanuki, y esa es la que describimos a continuación.

1) Descargar el wrapper del sitio oficial

http://wrapper.tanukisoftware.org/doc/english/download.jsp

En este caso se usará la versión para windows 32 bits x86 http://wrapper.tanukisoftware.org/download/3.3.9/wrapper-windows-x86-32-3.3.9.zip


2) Descomprimir el zip en C:\

WRAPPER_HOME=wrapper-windows-x86-32-3.3.9

3) Configuración de binarios

Asumiendo las siguientes variables: (debe registrarlas como variables de entorno del sistema por panel de control/sistema. )

WRAPPER_HOME=wrapper-windows-x86-32-3.3.9
JBOSS_HOME=D:\PortalLogyca2009\liferay-portal-5.2.4


Ejecutar en consola como administrador los siguientes comandos:

copy WRAPPER_HOME\bin\Wrapper.exe %JBOSS_HOME%\bin\Wrapper.exe
copy WRAPPER_HOME\lib\Wrapper.DLL %JBOSS_HOME%\lib\Wrapper.DLL
copy WRAPPER_HOME\lib\wrapper.jar %JBOSS_HOME%\lib\wrapper.jar
mkdir %JBOSS_HOME%\server\YOURCONFIG\wrapper


Verificar que la ejecución de los comandos sea existosa.

4) Configuración del wrapper


Asumiendo JBOSS_HOME=D:\Portal\liferay-portal-5.2.4

a) Crear la carpeta wrapper:

mkdir %JBOSS_HOME%\server\default\wrapper

b) Crear un archivo llamado " wrapper.conf " en la carpeta creada y pegar en él lo siguiente:

wrapper.java.command=C:\Program Files\Java\jdk1.6.0_13\bin\java

wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp

wrapper.java.classpath.1=%JBOSS_HOME%/lib/wrapper.jar
wrapper.java.classpath.2=%JAVA_HOME%/bin/java/lib/tools.jar
wrapper.java.classpath.3=./run.jar

wrapper.java.library.path.1=%JBOSS_HOME%/lib


# Opciones para la JVM JAVA_OPTS
wrapper.java.additional.1=-server
# variables de entorno - definina aqui otra variables
wrapper.java.additional.2=-Denvironment.variable=value
# parametros de memoria - configure aqui el valor correcto para su entorno
wrapper.java.additional.3=-Xms128m
wrapper.java.additional.4=-Xmx1024m


# jboss
wrapper.app.parameter.1=org.jboss.Main
# Parametros para jboss
# definir la configuracion de jboss a usar
wrapper.app.parameter.2=-c default
# IP exacta en la que escucha el servicio.
wrapper.app.parameter.3=-b 0.0.0.0
# Ubicacion de los logs del wrapper
wrapper.logfile=%JBOSS_HOME%/server/default/log/wrapper.log
# Nombre del servicio como aparecera en Panel de control/herramientas administrativas/servicios.
wrapper.ntservice.name=JbossLiferay
# Descripcion del servicio
wrapper.ntservice.displayname=iferay Portal Jboss AS


5) Grabar el archivo y salir.

6) Probar el servicio

Ejecutar los siguientes comandos:

cd %JBOSS_HOME%\bin\

wrapper.exe -c %JBOSS_HOME%\server\default\wrapper\wrapper.conf

7) Si todo sale OK se procede a instalar el servicio

cd %JBOSS_HOME%\bin\

wrapper.exe -i %JBOSS_HOME%\server\default\wrapper\wrapper.conf

8) Para desinstalarlo en caso de problemas

cd %JBOSS_HOME%\bin\
wrapper.exe -r %JBOSS_HOME%\server\default\wrapper\wrapper.conf


Eso es todo !





Referencias
[1] http://community.jboss.org/wiki/RunJBossAsAServiceOnWindows
[2] http://wrapper.tanukisoftware.org/doc/english/introduction.html
[3] Guía de Instalación - http://wrapper.tanukisoftware.org/doc/english/integrate-simple-win.html

Configuración de Load Balacer para Liferay Portal

Configuración de Load Balacer para Liferay Portal

Tabla de Contenidos
Configuración de Load Balacer para Liferay Portal
0. Definir las máquinas o IPs que harán el balanceo
1. Activar los módulos de apache necesarios
2. Crear un archivo de configuración para el load balancer
3. Configurar los dos Tomcat incluidos como servicios del JBoss donde corre Liferay para que acepten conexiones desde el proxy vía AJP
4. Reiniciar los dos liferay y apache y listo !
5. Administrar el balanceador

Aplica para:

Apache 2.2.x
Liferay Portal 5.2.3
Jboss 4.2 / Jboss 5 / Tomcat 5
Linux / Windows


Esta configuración es útil cuando se quiere balancear cargas entre varios liferay para atender más clientes, para usar mejor la infraestructura disponible, para aumentar la disponibilidad de un servicio, para sobrepasar limitaciones de la plataforma (como en el caso de windows con < style="font-weight:bold;">0. Definir las máquinas o IPs que harán el balanceo

Ej, se usará una misma máquina para balancear dos Liferay, cada uno usando un set de puertos diferente con la misma IP.

Puertos AJP (el estándar es el 8009).

nodo01- localhost: 8109
nodo02 localhost: 8209


1. Activar los módulos de apache necesarios

sudo a2enmod proxy
sudo a2enmod proxy_ajp
sudo a2enmod proxy_balancer


2. Crear un archivo de configuración para el load balancer


/etc/apache2/conf.d/httpd-ajp.conf

con la siguiente información:

# inicio archivo
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>

<Proxy balancer://ajpCluster>
BalancerMember ajp://localhost:8109 route=s1
BalancerMember ajp://localhost:8209 route=s2
</Proxy>

<Location />
ProxyPass balancer://ajpCluster/ stickysession=JSESSIONID
</Location>

<Location /balancer-manager>
SetHandler balancer-manager
</Location>

## fin archivo

3. Configurar los dos Tomcat incluidos como servicios del JBoss donde corre Liferay para que acepten conexiones desde el proxy vía AJP


- Verificar que el conector AJP en server/default/deploy/jbossweb*/server.xml esté sin comentarios

- Configurar el conector HTTP así:

(jvmRoute debe coincidir con los valores puestos en el archivo http-ajp.conf)

Es necesario además configurar los scripts de inicio para que el conector ajp escuche en los puertos configurados:

Para el caso de jboss 5x se envía el parámetro en el arranque así:

./run.sh -b 0.0.0.0 -Djboss.service.binding.set=ports-01 -Djboss.messaging.ServerPeerID=

Para el caso de jboss 4.2 es necesario ajustar el archivo jboss-service.xml y seleccionar el pool de puertos que se quiere usar. (Este bloque está con comentario por defecto )

<mbean code="org.jboss.services.binding.ServiceBindingManager"
name="jboss.system:service=ServiceBindingManager">
<attribute name="ServerName">ports-01</attribute>
<attribute name="StoreURL">${jboss.home.url}/docs/examples/binding-manager/sample-bindings.xml</attribute>
<attribute name="StoreFactoryClassName">
org.jboss.services.binding.XMLServicesStoreFactory
</attribute>
</mbean>

Para tomcat 5 / 6 es necesario editar directamente el conector en el archivo server.xml y configurar allí el puerto deseado.


4. Reiniciar los dos liferay y apache y listo !


5. Administrar el balanceador

El balanceador se puede administrar desde el browser usando la URL http://localhost/balancer-manager