Resolución de nombres de EC2 utilizando route53

Si utilizas mucho los servicios de AWS y en especial ec2, te darás cuenta de que después de un tiempo gestionando muchas máquinas resulta difícil recordar las direcciones IPs de cada una y aún más cuando tienes que utilizar las direcciones de los DNS públicos de Amazon. Estos se presentan en un formato como el siguiente ec2-17X-1X-2X-24X.eu-west-1.compute.amazonaws.com. 

Para resolver este problema utilizaremos uno de los servicios DNS que nos ofrece Amazon: Route 53, destaca por su alta disponibilidad, escalabilidad  y bajo precio. Route53 además nos permite no solo integrar servicios como ec2 sino también otros como ELB (Elastic load balancer), S3, RDS, etc así como infraestructura fuera de AWS.

Continue reading

WordPressTwitterBlogger PostShare

Herramientas gestión route53

 La Api oficial creada por Amazon es una API Rest que utiliza registros XML  que  te permiten crear, borrar, listar zonas y registros dentro de esas zonas.

Ademas de esta Api en esta ocasión te daremos a conocer otras herramientas para Route53, de las cuales podemos mencionar cli53 y route53, éstas permiten un gestión mas fácil del servicio Route53, por lo que te enseñaremos como instalarlas para que puedas hacer buen uso de ellas
Continue reading

WordPressTwitterBlogger PostShare

Alternativa a Awstats: “Piwik”

En posts anteriores introdujimos Awstats como un método para el análisis de estadísticas basándonos en los logs de Apache. En esta entrega os presentaremos a "Piwik".

Piwik es una herramienta open source que nos permite llevar un seguimiento de nuestro sitio web. Una de las muchas cosas que podemos resaltar, es la interfaz moderna con la que cuenta, que es muy similar a la de Google Analytics.

Continue reading

WordPressTwitterBlogger PostShare

Poniendo a prueba AWS con Chaos Monkey

Con el uso cada día mas generalizado de Amazon Web Services (AWS), es necesario estar completamente seguro al 150% de que la arquitectura que soporta nuestras aplicaciones es lo mas tolerante a fallos posible.

AWS nos brinda las herramientas para hacer esto posible (Instancias auto-escaladas, zonas de disponibilidad, balanceadores, etc). A pesar de eso, dado que todo falla en algún momento,  es necesario contar con medidas para comprobar que cuando algún elemento en nuestra infraestructura falle no impactará en el servicio que brindamos. Continue reading

WordPressTwitterBlogger PostShare

Nuevos servicios Amazon Web Services (AWS)

 Desde su lanzamiento, Amazon ha ido aumentando los servicios de su catálogo, pasando desde 3 en el año 2006, hasta alrededor de 25 en la actualidad.

Entre los mas conocidos de estos podemos mencionar EC2, S3, RDS, Cloudfront, etc.

Amazon siempre en constante evolución, ha lanzado recientemente nuevas mejoras de servicios que actualmente se encuentran disponibles, así como una serie de nuevos servicios que detallamos a continuación. Continue reading

WordPressTwitterBlogger PostShare

Herramientas GUI Autoscaling AWS

Hace algún tiempo buscando herramientas que facilitaran la gestión del autoescalado en AWS me encontré con SCARL que es una aplicación de gestión Open Source que soporta AWS, Rackspace, Cloudstack, Eucalyptus y Nimbula que provée una interfaz gráfica que ayuda a simplificar la gestión del auto escalado ayudándote a crear configuraciones complejas en cuestión de minutos.

Entre alguna de las características que provee Scarl son:

  • Replicación de Mysql
  • Escalabilidad de Servidores/BBDD
  • Backups
  • Gestión de DNS
  • Soporte con sistema de automatización (Chef)

Otra herramienta similar a esta es "Asgard". Esta herramienta fue desarrollada para uso interno en Netflix y recientemente puesta al público bajo licencia Open Source. Asgard cuenta con una interfaz gráfica (Grails y Jquery) que facilita el despliegue y la gestión del autoescalado en AWS.

Por lo que os animo a evaluar estas herramientas y sus funcionalidades para poder sacar el máximo partido al poder de escalabilidad con la que nos provee Amazon.

Mas información acerca de Scarl y Asgard en los siguientes enlaces:

Scalr      :     http://scalr.net

Asgard   :     http://techblog.netflix.com/2012/06/asgard-web-based-cloud-management-and.html

 

 

WordPressTwitterBlogger PostShare

Sonar 2.3 + Jboss 5.1

Sonar es una plataforma que nos permite gestionar la calidad de nuestro código fuente, utilizando para esta tarea diferentes herramientas como pueden ser (Checkstyle, PMD, Cobertura, etc. presentándonos  un resumen del análisis de manera unificada. Para esta entrega os compartiré los pasos necesarios para realizar una instalación de esta herramienta ,utilizando un servidor de Aplicaciones Jboss 5.1 AS.

Para la instalación de Sonar es necesario realizar los siguientes pasos de configuración.

  1. Descargamos el war de sonar

# wget URL http://dist.sonar.codehaus.org/sonar-2.3.zip

  1. Descomprimimos el fichero ejecutando el siguiente comando:

 # unzip sonar-2.3.zip
  1. Editamos el fichero de configuración de sonar. 

# vi /opt/sonar.2.3/conf/sonar.properties 
  1. Efectuamos los siguientes cambios en el fichero sonar.properties

Comentamos lo siguiente:

#Configuración base de datos Derby

#sonar.jdbc.url: jdbc:derby://localhost:1527/sonar;create=true

#sonar.jdbc.driverClassName: org.apache.derby.jdbc.ClientDriver

#sonar.jdbc.validationQuery: values(1)

 

Descomentar lo siguiente:

 #----- Oracle 10g/11g

# Comment the embedded database and uncomment the following lines to use Oracle

sonar.jdbc.url: jdbc:oracle:thin:@IP:Puerto/ORACLE_SID

sonar.jdbc.driverClassName: oracle.jdbc.driver.OracleDriver

sonar.jdbc.validationQuery: select 1 from dual

#----- Global database settings

sonar.jdbc.username: usuario

sonar.jdbc.password: password

sonar.jdbc.maxActive: 10

sonar.jdbc.maxIdle: 5

sonar.jdbc.minIdle: 2

sonar.jdbc.maxWait: 5000

sonar.jdbc.minEvictableIdleTimeMillis: 600000

sonar.jdbc.timeBetweenEvictionRunsMillis: 30000
  1.  Descomentar y establecer la siguiente cadena de conexión:
 sonar.jdbc.jndiName: sonarDS
  1. Creamos los siguientes ficheros dentro de la ruta con el contenido a continuación:

NOTA: Dado que las librerías con las que cuenta Sonar entran en conflicto con las de Jboss aplicaremos los siguiente pasos para resolver el problema.

 

Persistence.xml: contiene nuestra conexión de base de datos

# cd /opt/sonar.2.3/war/sonar-server/WEB-INF

# touch persistence.xml

# vi persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

<persistence-unit name="sonar" >

<jta-data-source>java:sonarDS</jta-data-source>

<properties>

<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>

<property name="javax.persistence.jdbc.url" value=" jdbc:oracle:thin:IP:Puerto/ORACLE_SID"/>

<property name="javax.persistence.jdbc.password" value="PASSWORD"/>

<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver"/>

<property name="javax.persistence.jdbc.user" value="USER"/>

</properties>

</persistence-unit>

</persistence>


 Jboss-classloading.xml: Nos permitirá aislar nuestra aplicación de otras aplicaciones

# cd /opt/sonar.2.3/war/sonar-server/WEB-INF

# touch jboss-classloading.xml

# vi jboss-classloading.xml

<?xml version="1.0" encoding="UTF-8"?>

<classloading

xmlns="urn:jboss:classloading:1.0"

name="sonar.war"

domain="sonar.war"

parent-domain="DefaultDomain"

export-all="NON_EMPTY"

import-all="true"

parent-first="true"

>

</classloading>

NOTA: Link de un blog muy interesante que explica de forma más profunda este tema 
http://phytodata.wordpress.com/2010/10/21/demystifying-the-jboss5-jboss-classloading-xml-file/

jboss-web.xml: Nos permitirá cargas nuestras classes en lugar de las del servidor.

# cd /opt/sonar.2.3/war/sonar-server/WEB-INF

# touch jboss-web.xml

# vi jboss-web.xml

<?xml version="1.0" encoding="UTF-8"?>

<jboss-web>

<class-loading java2ClassLoadingCompliance="false">

<loader-repository>

org.sonar:loader=sonar.war

<loader-repository-config>java2ParentDelegation=false

</loader-repository-config>

</loader-repository>

</class-loading>

</jboss-web>

 

  1. Podemos descargarnos el driver de conexcion ojdbc6.jar de la siguiente URL:

http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html

 
  1. Incluimos el driver de conexión oracle ojdbc6.jar en la siguiente ruta:
/opt/jboss-eap-5.1/jboss-as/common/lib

 

  1. Descomprimimos los jar localizados en /opt/sonar.2.3/war/sonar-server/WEB-INF/lib

NOTA: Por una extraña razón que no he podido identificar, Jboss tiene problemas descomprimiendo estos jars. Por lo que 
para arreglar el problema las descomprimimos

# cd /opt/sonar.2.3/war/sonar-server/WEB-INF/ib

# mkdir temporal

# mv jruby-complete-1.4.0.jar temporal

# unzip jruby-complete-1.4.0.jar

# rm jruby-complete-1.4.0.jar

# cd ..

# mv temporal jruby-complete-1.4.0.jar

jruby-rack-0.9.6.jar 

# cd /opt/sonar.2.3/war/sonar-server/WEB-INF/lib

# mkdir temporal

# mv jruby-rack-0.9.6.jar temporal

# unzip jruby-rack-0.9.6.jar

# rm jruby-rack-0.9.6.jar

# cd ..

# mv temporal jruby-complete-1.4.0.jar

  

  1. Generamos el fichero war ejecutando el script:

# cd /opt/sonar.2.3/war/

# ./build-war.sh

el war compilado se encontrará localizado en la ruta:

/opt/sonar.2.3/war/

 

  1. Creamos el fichero de conexión sonar-ds.xml en la siguiente ruta: 

# cd /opt/jboss-eap-5.1/jboss-as/server/default/deploy

# touch sonar-ds.xml

# vi sonar-ds.xml

El fichero editado lucirá como:


<?xml version="1.0"?>

<datasources>

<local-tx-datasource>

<jndi-name>sonarDS</jndi-name>

<connection-url>jdbc:oracle:thin:@IP:Puerto/ORACLE_SID</connection-url>

<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>

<user-name>USER</user-name>

<password>PASSWORD</password>

<min-pool-size>1</min-pool-size>

</local-tx-datasource>

</datasources>

 

  1. Una vez realizados los cambios, transferiremos el fichero sonar.war a la carpeta de despliegue de Jboss ó desplegar usando el portal de administración de jboss.

WordPressTwitterBlogger PostShare