Crónica y materiales de la Alfresco DevCon 2012

Si estáis relacionados de alguna forma con Alfresco sabréis que hace unas semanas celebramos la conferencia anual de desarrolladores en Berlín y en San José (EEUU). Este año he tenido la suerte de poder participar en ambas sesiones como voluntario y como ponente. En Berlín hice la charla sobre “Alfresco Security Best Practices” con demo incluida y en San José repetí la de seguridad y también una breve charla de 5 minutos sobre “Monitoring Alfresco with Nagios/Icinga”. Esta última era una charla novedosa para mi ya que se trataba de hablar de un tema durante 5 minutos con 15 segundos por slide con un máximo de 24 slides, una experiencia interesante sin duda, además permitía a mucha gente participar y dar a conocer algo relacionado con Alfresco de forma breve y concisa. Hubo dos sessiones de estas “mini-charlas” llamadas lightning talks en cada DevCon y merecieron mucho la pena.

Durante las conferencias, principalmente técnicas, se mostraron tanto novedades del producto como desarrollos, módulos, personalizaciones y usos novedosos de Alfresco. Fue un éxito de asistencia, contamos con casi 800 asistentes entre ambos eventos.

En la conferencia de cierre tanto en Berlín como en San José, Jeff Potts, nuestro Chief Community Officer, anunció que el año que viene no habrá DevCon tal como la veníamos celebrando en los últimos años, sino que será una conferencia más abierta tanto a usuarios finales como de negocio además de técnicos, de esta forma conseguiremos un evento más plural y que llegará a más gente de diferentes perfiles.

Al haber en algunas ocasiones 3 conferencias a la vez, ere difícil elegir, ya que la calidad de las mismas era bastante elevada. Me gustaría destacar las conferencias en las que estuve y que me gustaron,

Teniendo en cuenta que mi perfil es más de sistemas, no fui a las que eran puramente de desarrollo y personalización pero oí muy buenas críticas de las siguientes:

No dejes pasar la oportunidad, puedes descargar los materiales, presentaciones e incluso código de ejemplo en la web, sección sesiones, entrando a cada una de ellas.

Espero veros el próximo año en el congreso de Alfresco 2013!

Aquí os dejo las presentaciones de mis dos charlas:

Por cierto, en la hackathon que hicimos en la DevCon de San José (dia previo para hacer desarrollos) actualicé la nueva versión del plugin de Nagios para Alfresco, puedes descargarlo aquí.

¿Quieres prepararte? Aplicaciones empresariales Open Source

¿Estás estudiando? ¿No tienes trabajo y estás pensando en mejorar tu formación? ¿Quieres preparar tu perfil técnico pero no estás seguro por donde van las tendencias? Si eres o quieres ser técnico de sistemas, programador, administrador o arquitecto de sistemas o software y quieres trabajar con Software Libre, he preparado esta lista a modo de resumen y aprovechando que el curso acaba de empezar. Si no reunes las condiciones anteriores igual también te resulta interesante e incluso puedes ampliar la lista en los comentarios. (Parece que voy a vender cursos de CCC o algo así, pero nada más lejos de la realidad, es un simple listado :D).
La familia de aplicaciones “Enterprise Open Source” es bastante amplia y abarcan todos los campos que puede necesitar una organización. Si estas empezando en este mundo y eres capaz de dominar algunas de estas aplicaciones o conocerlas en profundidad, creo que tendrás más oportunidades en tu proyección profesional.
Antes de empezar, quiero dejar claro que este artículo no pretende ser un listado al estilo Infoworld, aunque dichas clasificaciones me parecen de un gran interés, en este caso sólo pretendo reflejar mis aplicaciones favoritas para cada caso y sobre todo, las que creo que están más extendidas.
Me gustaría recomendaros que echéis un vistazo a los “Amazon Elastic Compute Cloud” (Amazon EC2), es importante saber cómo funciona, cómo desplegar servidores, sistemas de almacenamiento que soporta, etc. En muchas empresas, se hacen uso de estos servicios, ya sea a través de Amazon u otros.
Bueno, aquí va la lista:
Muchas de estas aplicaciones las puedes instalar y probar de una forma muy sencilla y en Linux, Mac o Windows gracias a los stacks de Bitnami.
La mayoría de estas aplicaciones están hechas en PHP o en Java, eso te puede dar otra idea, si decides aprender a programar.
Hace un par de semanas, la empresa Stratebi publicó un listado que subraya algunas de las aplicaciones que aquí he indicado. Puedes ver la presentación aquí.
Tras hacer este listado he pensado que posiblemente no haya, o al menos yo no lo conozco, un centro de formación que capacite a técnicos y desarrolladores en todas estas tecnologías… sería algo interesante ¿no crees?

¿Nos vemos en la OSWC 2010?

Los próximos días 27 y 28 de Octubre, en Málaga (España), tendrá lugar la Conferencia Internacional de Software Libre. Como otros años, hace unos meses se convocó el Call For Papers donde se han presentado más de 100 ponencias de todo tipo.

Yo he presentado una charla de Alfresco, donde tengo intención de hablar sobre presente y futuro de las soluciones Open Source ECM. También quiero abordar las interesantes novedades y roadmap de Alfresco, CMIS y el nuevo proyecto Activiti (BPMN 2).

Las charlas que se impartirán serán las que más votos y mejor valoración reciban hasta el próximo día 15 de Septiembre.

Aprovecho para pedirte tu voto si te parece interesante, la intención es poder vernos allí y disfrutar de un par de jornadas de software y conocimiento libres.

Esta es la URL de la charla y esta es la URL del registro para poder votar (sólo quedan dos días para votar).

¡Gracias!

Arquitecturas en Alfresco

alfresco_repository_architecture_diagram1_coloredCon este post me gustaría hacer una pequeña introducción a los diferentes diseños de arquitecturas que podemos llevar a cabo con Alfresco dependiendo del uso, usuarios, rendimiento, concurrencia y almacenamiento requerido.

Alfresco es un producto que acaba de cumplir 5 años, tras pasar por varias etapas con versiones más o menos estables, podemos decir, que desde hace un tiempo contamos con un producto confiable, robusto, estable y escalable. Preparado para pequeños proyectos con decenas de usuarios y unos cuantos miles de contenidos y para entornos con miles de usuarios y millones de contenidos. Y cada vez nos encontramos más y más instalaciones consolidadas.

Algo muy común que veo en las implantaciones de Alfresco, salvo casos muy concretos, es que muchas veces se instala la aplicación, base de datos y content store en la misma máquina, tanto para un piloto, desarrollo, test o producción. Para un piloto y desarrollo o incluso test es válido, o para producción si los requisitos no son demasiado exigentes. Teniendo todas las capas de la aplicación en la misma máquina (física o virtual), cuando el entorno pasa a producción y empieza a crecer considerablemente en número de usuarios y contenidos se suele experimentar un problema de rendimiento. Tiempos de respuesta elevados en el acceso, reglas, workflows, etc.

Vamos a ver, de forma resumida, algunos conceptos a tener en cuenta a la hora de hacer despliegues de Alfresco que nos permita crecer tanto horizontal como verticalmente.

Antes de seguir, para entender bien todo esto, veamos los componentes de la infraestructura que debemos conocer y diferenciar para diseñar una correcta arquitectura:

  • Repositorio Alfresco: hablamos de la aplicación principal de Alfresco (alfresco.war) que gestiona todo el repositorio (contenidos) y el core, así como las diferentes interfaces de acceso como CIFS, FTP, WebServices, Alfresco Explorer y muchas otras más.
  • Alfresco Share: aplicación (share.war) que es interfaz web de Alfresco y nos permite acceder al repositorio una interfaz ligera y potente para gestión de contenidos y colaboración. Mediante Share podemos activar sitios favoritos para su posterior acceso por IMAP. Este componente puede estar en una capa diferente al repositorio y escalar de forma separada tanto vertical como horizontalmente.
  • Aplicaciones de terceros: nos referimos a las aplicaciones que necesita Alfresco para funcionar al 100% como OpenOffice, ImageMagik y Pdftools. Recuerda que desde la versión 3.2, OpenOffice funciona como un subsistema y podemos instalarlo en una máquina diferente al repositorio.
  • Base de datos: será el motor de base de datos a usar por el software, como ya sabemos, pueden ser de varios tipos y “sabores” como MySQL, MS SQL Server, PostgreSQL, Oracle, etc. Alfresco almacena en la base de datos toda la información (metadatos, reglas, permisos… todo) excepto los índices y los ficheros físicos. Dicho esto, podemos adivinar que el uso de base de datos que hace Alfresco es importante.
  • Almacén de contenido o content store: será el sistema de ficheros, directorio o directorios del sistema operativo donde Alfresco deposita los ficheros que maneja, los ordena por diferentes niveles de directorios (año/mes/dia/hora/minuto). Por defecto se almacena dentro de alf_data/contentstore. En contentstore.deleted tendremos los ficheros borrados, tras 15 días de ser eliminados, y audit.contentstore que será la información extra que genera la aplicación si activamos las auditorías.
  • Índices: hablamos de la información que genera el motor de indexación y búsqueda que incorpora Alfresco, Lucene. Esta información se almacena en un directorio del sistema operativo llamado lucene-indexes dentro de alf_data por defecto. Diariamente a las 3 AM se genera un backup automático de los índices en el directorio alf_data/lucene-indexes.backup. Como decía, ahí se almacenan todos los índices de los contenidos del repositorio y tendrá un puntero a los mismos desde la base de datos. Podemos imaginar que cuanto más rápido sea el disco o discos donde residan los índices, más rápido funcionará nuestro sistema a nivel general.

Dicho lo anterior y conociendo el funcionamiento de Alfresco, podemos averiguar donde tenemos los cuellos de botella en las implantaciones.

Por ejemplo, tener el content store y la base de datos en la misma máquina sobre el mismo disco duro supone que cada vez que subimos un fichero o realizamos alguna acción con el mismo se escribe simultáneamente en base de datos y content store; moraleja: el disco duro debe escribir al mismo tiempo en varios sitios diferentes = sistema lento. Claro está, esto nos pasará si estamos haciendo un uso intensivo del sistema.

Todos esos componentes los podemos implementar de diferentes formas, dependiendo de la ubicación de cada componente hablaremos de diferentes capas o niveles.

  • Una capa única: es el despliegue por defecto que podemos realizar con los instaladores bundle de Alfresco. Todos los elementos de la infraestructura los tendríamos en la misma máquina. ¿Para qué es válido este tipo de despliegue? Para pruebas piloto, desarrollos o incluso pequeñas instalaciones orientadas a departamentos. Por supuesto, este tipo de despliegues no se recomiendan para sistemas críticos o con grandes expectativas por razones obvias de escalabilidad y rendimiento.
  • Dos capas: en este despliegue podemos empezar a usar una arquitectura realmente empresarial y escalable. Aquí separaremos en capas independientes:

Capa de contenidos: repositorio, Share, índices y aplicaciones de terceros que necesita Alfresco.
Capa de almacenamiento: Base de datos en una máquina dedicada a la que accede la aplicación vía JDBC y content store en una SAN o NAS.

Esta arquitectura permite más escalabilidad y rendimiento, configuración simple y la gestión del crecimiento del contenido es transparente para la aplicación. Si añadimos que en este caso los índices estarán en la capa de contenidos tendremos como resultado un entorno que imprima un rendimiento considerable para entornos de tipo medio que incluso pueden ponerse en alta disponibilidad, pero ojo, si crecen mucho los contenidos también crecerán los índices y en ese casos podríamos necesitar hacer cambios en la infraestructura o en la configuración de los servidores (asignar más almacenamiento, etc.).

  • Tres capas distribuidas: en versiones 3.X podemos separar en varias capas componentes de la capa web de Alfresco, es decir, separar Alfresco Share del repositorio. Este caso será el más escalable y nos permitirá implementar entornos con una gran carga y altas exigencias en cuanto a rendimiento. Esta arquitectura añade a la de dos capas la distribución de la capa web. Las capas serían las siguientes:

Capa web: donde tendríamos Alfresco Share o/y otras aplicaciones frontales que podamos tener para trabajar con Alfresco (Liferay, Joomla, Drupal, etc.) u otras hechas desde cero y opcionalmente un servidor web que proteja al servidor de aplicaciones vía mod_proxy, Varnish o similares.

Capa de contenidos: repositorio, índices y aplicaciones de terceros que necesita Alfresco.

Capa de almacenamiento: Base de datos en una máquina dedicada a la que accede la aplicación vía JDBC y content store en una SAN o NAS.

Podríamos añadir una capa extra entre la capa web y capa de contenidos que nos permita hacer caché, control de acceso o balanceo de carga. Como vemos, esta es la mejor forma de ofrecer el máximo rendimiento tanto de lectura como de escritura, que además podemos configurar en alta disponibilidad en todas las capas. Este tipo de arquitectura no es recomendada para pequeños despliegues departamentales y necesita un alto grado de conocimiento de Alfresco, sistemas y redes en general. Salvo uso de software específico, no se recomienda separar cada una de las capas de forma geográfica ya que una alta latencia entre capas puede influir negativamente en el rendimiento.

Hablando sobre Alfresco y SAP en la WhyFLOSS 2010

El próximo jueves 18 de Marzo estaré en Madrid para hablar sobre la integración de Alfresco con SAP como caso de éxito en un proyecto reciente, será en la conferencia WhyFLOSS que organizan los amigos de Neurowork. WhyFLOSS es un evento muy interesante que se celebra anualmente en Madrid, este año en la EOI. En esta conferencia se mezcla negocio y Open Source, donde se dan cita profesionales de diferentes empresas y organismos para hablar de casos de éxito, presente y futuro de tecnologías relacionadas con el Software Libre.

En leer más puedes ver la agenda de actividades.

Read More

Archiving en Alfresco 3.2

image_archivingActualización 25/Feb/2010: ver demo-config-files para configuración más cómoda incluso desde Share, reglas y demás (doc calentito que me han enviado desde Alfresco, Gracias Paul!!).

¿Que es el archiving/archivado? Un archivo en gestión documental es una colección de documentos históricos, así como el lugar donde se encuentran. Pues bien, vamos a ver como se configura Alfresco para poder almacenar los contenidos en diferentes sistemas de ficheros, particiones o filesystem (como quieras llamarlo). Cada filesystem puede ser de diferente naturaleza, es decir, los contenidos que se trabajan actualmente deberán estar en los discos más rápidos (discos locales o en una SAN) y los contenidos históricos o de acceso poco frecuente pero debemos mantener, podemos almacenarlos en discos más lentos/baratos o por ejemplo en una NAS.

Todo esto se consigue en Alfresco gracias al Content Store Selector. El Content Store Selector ofrece un mecanismo de control que relaciona el contenido lógico con un fichero físico y su ubicación. Usando el aspecto cm:storeSelector y asignándole una propiedad cm:storeName podemos mover el contenido de un Store a otro de forma totalmente transparente tanto para el usuario como para la aplicación a la hora de mostrar los contenidos, claro que previamente tenemos que definirlos. Esto nos permitirá declarar políticas para controlar la capa de almacenamiento y el uso que de ella hace Alfresco en base a regales de negocio.

Veamos como se configura en base al siguiente escenario:

El repositorio y los ficheros de uso diario, los más usados, los tenemos en /opt/alfresco/alf_data/contentstore, supongamos que ese filesystem corresponde a los discos más rápidos. También tenemos un disco local más lento montado en /opt/alfresco/alf_data/storeA, e incluso podemos tener un filesystem de tipo NAS para los datos que ya no usamos pero necesitamos almacenar montado en /opt/alfresco/alf_data/storeB.

¿Cómo lo configuramos?

Creamos un fichero llamado “sample-content-store-selector-context.xml” en shared/classes/alfresco/extension con el siguiente contenido, lee los comentarios para entender la configuración:

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http:// www.springframework.org/dtd/spring-beans.dtd'>
<!-- Define the new file stores -->
<beans>
        <bean id="firstSharedFileContentStore" class="org.alfresco.repo.content.filestore.FileContentStore">
                <constructor-arg>
                        <value>${dir.root}/storeA</value>
                </constructor-arg>
        </bean>
        <bean id="secondSharedFileContentStore" class="org.alfresco.repo.content.filestore.FileContentStore">
                <constructor-arg>
                        <value>${dir.root}/storeB</value>
                </constructor-arg>
        </bean>
<!-- Declare the mapping between store names and store instances -->
        <bean id="storeSelectorContentStore" parent="storeSelectorContentStoreBase">
                <property name="defaultStoreName">
                        <value>default</value>
                </property>
                <property name="storesByName">
                        <map>
                                <entry key="default">
                                        <ref bean="fileContentStore" />
                                </entry>
                                <entry key="storeA">
                                        <ref bean="firstSharedFileContentStore" />
                                </entry>
                                <entry key="storeB">
                                        <ref bean="secondSharedFileContentStore" />
                                </entry>
                        </map>
                </property>
        </bean>
<!-- Point the ContentService to the 'selector' store -->
        <bean id="contentService" parent="baseContentService">
                <property name="store">
                        <ref bean="storeSelectorContentStore" />
                </property>
        </bean>
<!-- Add the other stores to the list of stores for cleaning -->
        <bean id="eagerContentStoreCleaner" class="org.alfresco.repo.content.cleanup.EagerContentStoreCleaner" init-method="init">
                <property name="eagerOrphanCleanup" >
                        <value>${system.content.eagerOrphanCleanup}</value>
                </property>
                <property name="stores" >
                        <list>
                                <ref bean="fileContentStore" />
                                <ref bean="firstSharedFileContentStore" />
                                <ref bean="secondSharedFileContentStore" />
                        </list>
                </property>
                <property name="listeners" >
                        <ref bean="deletedContentBackupListeners" />
                </property>
        </bean>
</beans>

Si te fijas en los dos primeros beans, los valores que se especifican están relacionados con la ubicación de los dos Stores adicionales que estamos creando, en esta caso, relativos a ${dir.root} que es un atributo declarado en alfresco-global.properties. Si nuestros nuevos filesystems no están dentro de dir.root podemos poner la ruta absoluta, por ejemplo <value>/mnt/storeA</value>.

Para poder usar los nuevos contentStores debemos configurar el web-client (Alfresco Explorer) y declararlo como aspecto. Editamos web-client-config-custom.xml y añadimos las siguientes lineas:

<!-- Configuring in the cm:storeSelector aspect -->
        <config evaluator="aspect-name" condition="cm:storeSelector">
                <property-sheet>
                        <show-property name="cm:storeName" />
                </property-sheet>
        </config>
        <config evaluator="string-compare" condition="Action Wizards">
                <aspects>
                        <aspect name="cm:storeSelector"/>
                </aspects>
        </config>

Hecho lo anterior ya podemos reiniciar el servidor de aplicaciones para que los cambios surtan efecto.

Ahora vamos a ver como empezar a usarlo. Recuerda que el aspecto, aunque pueden aplicarlo todos los usuarios, sólo el usuario administrador podrá especificar el store correspondiente y sólo es aplicable a contenidos (no a espacios). En este ejemplo veremos como hacerlo de forma manual, para sistemas en producción deberíamos hacer un script que modifique dicho metadato automáticamente en base a las necesidades que tengamos, por ejemplo los que estén dentro de un espacio concreto, los que tengan más de N años en el repositorio, etc. El procedimiento sería el siguiente:

  • Localizamos el fichero con el que queremos probar (lo moveremos al storeA).
  • Vamos a “Ver detalles” de dicho fichero y pinchamos en “Ejecutar una acción”
  • Seleccionamos “Agregar aspecto al contenido” -> “ContentStore Selector” -> Aceptar -> Finalizar
  • En las propiedades del fichero ya veremos un nuevo metadato llamado “Store Name”.
    propiedades
    Editamos las propiedades y en Store Name especificamos: storeA
    storea
    Cuando pinchemos en Aceptar, automáticamente el contenido se moverá de forma transparente al filesystem alf_data/storeA/2010/2/17/22/50/4365380f-daf1-494c-b79d-db11480cb171.bin correspondiente, en mi ejemplo, a un fichero pdf.

¿Interesante no?

ACTUALIZACIÓN: para automatizar la clasificación por “Stores” podemos hacer un script en Java Script llamado, por ejemplo, action_storeA.js o B según el sitio donde queramos colocar los ficheros, con el contenido:

document.properties["cm:storeName"]="storeA";
document.save();

Lo guardamos y subimos a Diccionario de datos -> Scripts. Hecho esto podemos ejecutar una acción sobre el fichero de turno y seleccionamos “Ejecutar un script” -> Seleccionamos nuestro script “action_storeA.js” y listo. También podemos incluirlo en una regla y hacer el proceso de forma automática, cuando entren los ficheros a un espacio concreto, o incluso clasificar si son vídeos, imágenes, pdf, cad, etc.

Multitenancy en Alfresco

multitenant_small2Desde hace unas cuantas versiones, Alfresco incorpora la característica “Multi-Tenant”, podemos traducirlo como “Multi-Inquilino”, ¿y que significa eso? Alfresco permite que varios inquilinos independientes (Alfrescos independientes) puedan ser alojados en una única instancia, es decir, tenemos un Alfresco con un repositorio y que lo va a usar una organización, pues si activamos el MT, tendremos un Alfresco, que se “virtualiza” a si mismo y dispone de repositorios físicos independientes con un mismo punto de entrada y a través del nombre de usuario, el sistema sabrá de que Tenant se trata.

Vamos a ver esto en el mundo real, así saldremos de dudas. Antes de seguir, recuerda que está todo documentado en la Wiki de Alfresco, en la sección MultiTenant. En este caso veremos como trabajar con MT en Alfresco Enterprise 3.2 pero aplicable a otras versiones.

Primero vamos a ver como se activa MT:

Vamos al directorio mt dentro de <extension>:

# cd $INSTALACION_DEL_TOMCAT/shared/classes/alfresco/extension/mt

Renombramos los tres archivos .sample que encontramos (son 3), no hay que modificar nada dentro de ellos, por defecto funciona correctamente, los podemos renombrar de uno en uno o todos a la vez con este comando:

# for i in *.sample; do mv "$i" "`basename $i .sample`"; done

Hecho esto, reiniciamos Alfresco y en los logs deberemos ver algo nuevo relacionado con el cambio que hemos hecho:

18:21:42,680 User:System INFO  [repo.tenant.MultiTAdminServiceImpl] Alfresco Multi-Tenant startup 
- 0 enabled tenants, 0 disabled tenants
18:21:58,027  INFO  [service.descriptor.DescriptorService] Alfresco started 
(Enterprise - Multi-Tenant): Current version 3.2.0 (304) schema 3400 - Originally installed 
version 3.2.0 (304) schema 3400

OK, ahora vamos a ver si es verdad. Lo primero que debemos hacer es autenticarnos en Alfresco Explorer como administrador, en http://localhost:8080/alfresco admin/admin y listo.

Ahora ponemos la siguiente URL para acceder a la consola de administración de MT:

http://localhost:8080/alfresco/faces/jsp/admin/tenantadmin-console.jsp

consola-mt

En esa misma web podemos ver toda la ayuda que nos brinda la consola para ver, crear, borrar, habilitar, deshabilitar, cambiar contraseña, exportar e importar Tenants.

Vamos a ver unos ejemplos de cómo crear un tenant y empezar a trabajar con él.

Escribimos en la linea de comandos:

create blyx.com password /opt/alfresco-enterprise-3.2.0/alf_data_blyx

Esto tardará unos segundos, en función de lo rápida que sea nuestra máquina. Cuando veamos el mensaje

created tenant: blyx.com” se habrá creado el nuevo tenant… explicación redundante ;)

¿Y realmente que hace ese comando que hemos lanzado? Crea un tenant vacío y activo. Tendrá como administrador del mismo (para crear usuarios, grupos, etc.) un usuario llamado admin@<tenantdomain> en mi caso, admin@blyx.com, con la contraseña “password”. Todos los usuarios que accedan a ese tenant lo deberán hacer usando “usuario@blyx.com“. El repositorio físico (contentstore) estará en el directorio indicado en el comando.

Ahora podemos acceder a nuestro Tenant como admin y ver que realmente tenemos un repositorio totalmente vacío y disponible. Accediendo a nuestro sistema http://localhost:8080/alfresco con las credenciales de administrador del tenant correspondiente.

acceso-al-tenant

¿Qué puede hacer el administrador del tenant?

  • Gestionar los usuarios del sistema  (incluyendo cuotas).
  • Gestionar grupos.
  • Gestionar categorías.
  • Importar.
  • Exportar (incluyendo el repositorio completo del tenant).
  • Acceso a la información del sistema (System Information en la consola de administración).
  • Acceso al Node Browser (consola de administración).
  • Alfresco Share también como tenant.
  • Acceso Webdav.
  • Acceso FTP.
  • WebScripts propios, para ello deben requerir autenticación para conocer de que tenant se trata.
  • Personalización de modelos, webclient, workflows y demás a través de los Modelos Dinámicos y de la consola de repositorio.
  • Acceso del usuario invitado (guest) en el contexto del tenant, es decir, como guest@dominio.
  • Soporta clustering de forma nativa.
  • Los módulos AMP instalados en el dominio por defecto estarán disponibles para los demás tenants.

¿Qué no podemos hacer aún con los tenants o qué no está soportado? Info extraida de la wiki y basado en la versión 3.2.

  • El soporte a CIFS no está soportado actualmente.
  • La autenticación sólo puede ser la nativa de Alfresco, por ahora no soporta autenticación externa (LDAP, NTLM, etc).
  • WCM / Web Studio no soportado.
  • Portlets.
  • Borrar un tenant.
  • Correo electrónico entrante.
  • Replicación del repositorio.
  • IMAP.
  • SPP / VTI (SharePoint Protocol).

Como veis, es una solución orientada a los servicios, a la nube. Espero que os sea de utilidad, por lo menos para saber de que va esto del Multitenant del que tanto se oye hablar.

Nagios plugin for Alfresco released!!

I’ve just released the version 1.0 of the new Nagios Plugin for Alfresco, which can be used with Icinga too. I have employed Enterprise JMX capabilities to extract and check information from Alfresco. It has been tested in Alfresco Enterprise 3.2.

Nagios is an Open Source network monitoring tool that can be configured to monitor services on a network. Icinga is a new fork of Nagios. They are both used extensively in enterprise environments.

You can download it here http://forge.alfresco.com/projects/nagios4alfresco/

nagios_plugin_for_alfresco_screenshot

UPDATED! Version 1.1 released. Added “performance data” support. Now you can graph all checks with pnp4nagios.

It checks the following services:

  • PING
  • SSH
  • Alfresco Application Server
  • Alfresco Web Server – proxy
  • Alfresco VTI Share Point – Jetty
  • Alfresco FTP Server
  • Alfresco CIFS Server – NetBIOS
  • Alfresco CIFS Server – SMB
  • Alfresco RMI – JMX
  • Alfresco IMAP Server
  • Alfresco SMTP Server – incoming
  • Alfresco – Heap Memory Usage –
  • Alfresco – System Load Average
  • Alfresco – Thread Count
  • Alfresco – Number of Total Users
  • Alfresco – Number of Total Groups
  • Alfresco – Connection Pool
  • Alfresco – ContentStore Size
  • Alfresco – ContentStore Deleted Size
  • Alfresco – Audit Store Size
  • Alfresco – Hibernate Connect Count
  • Alfresco – Lucene Indexes SpacesStore Used
  • Alfresco – Lucene Indexes SpacesStore Num
  • Alfresco – Repo Sessions
  • Alfresco – Repo Users Connected
  • Alfresco – Total Memory Used
  • Alfresco – Free Memory
  • Alfresco – Max Memory
  • Alfresco – Cache Size

You can find it at Nagios Exchange or Monitoring Exchange

Alfresco: configuración de Single Sign On (SSO) con NTLM vía Active Directory. Parte 3 de 3

En este último artículo de la serie veremos como “Activar el SSO en Alfresco CIFS con Active Directory (NTLM)“:

Recuerda activar los logs de DEBUG para CIFS y tener una visión más amplia de lo que pasa en el sistema, para ello debemos descomentar las líneas correspondientes en el archivo log4j.properties que hay en el directorio classes del alfresco.war desplegado (webapps/alfresco/WEB-INF/classes):

# CIFS server debugging
log4j.logger.org.alfresco.smb.protocol=error
log4j.logger.org.alfresco.smb.protocol.auth=debug
log4j.logger.org.alfresco.acegi=debug

Ficheros que intervienen para configurar SSO en Alfresco CIFS:

  • file-servers.xml en <configRoot>
  • file-servers-custom.xml en <extension>

Copia toda la sección <config evaluator=”string-compare” condition=”CIFS Server”> del fichero file-servers.xml a file-servers-custom.xml dentro de la sección “alfresco-config“.

Y también la sección <config evaluator=”string-compare” condition=”Filesystem Security”> del fichero file-servers.xml a file-servers-custom.xml dentro de la sección “alfresco-config“.

Editamos file-servers-custom.xml:

Añada replace=”true” en <config evaluator=”string-compare” condition=”CIFS Server” replace=”true”>

Para mi servidor Alfresco que lo he llamado “alfresco” con dominio “test.tld” pondría esta configuración:

<serverEnable enabled=”true”/>
<host name=”alfresco” domain=”test.tld“/>
<comment>Alfresco CIFS Server</comment>

En <host name=”alfresco” domain=”test.tld”/> elimina la A, este atributo hace que se publique el CIFS con el nombre de la máquina + A en caso de tener otro CIFS en esa máquina, en nuestro caso sólo tenemos uno y la quitamos.

Modificamos <authenticator type=”passthru”/> y descomentamos y/o modificamos la sección siguiente:
<authenticator type=”passthru“>
<Server>TEST.TLD\10.215.253.165, 10.215.253.165</Server> <!– dominio e IP del controlador del dominio –>
<protocolOrder>TCPIP,NetBIOS</protocolOrder>
<offlineCheckInterval>60</offlineCheckInterval>
</authenticator>

Una vez hecho esto ya podremos arrancar Alfresco y acceder, en mi caso, por CIFS a \\alfresco\Alfresco desde un cliente Windows XP del dominio y accederemos directamente sin solicitar usuario y contraseña.

En los logs deberemos ver algo así (usuario toni que está en Active Directory y ha iniciado la sesión) :

00:07:09,486  DEBUG [smb.protocol.auth] Mapped client /10.215.253.168 to domain null
00:07:09,589  DEBUG [smb.protocol.auth] Passthru sessId=15, auth ctx=[NTLM,Challenge=1d9c38e2728fb40a]
00:07:09,594  DEBUG [smb.protocol.auth] Null CIFS logon allowed, sess = T9
00:07:09,607  DEBUG [smb.protocol.auth] Using Write transaction
00:07:09,613 User:toni DEBUG [smb.protocol.auth] Setting current user using person toni (username toni)
00:07:09,613 User:toni DEBUG [smb.protocol.auth] Passthru authenticate user=toni, FULL
00:07:09,619 User:toni DEBUG [smb.protocol.auth] Closed auth session, sessId=15
00:07:09,647  DEBUG [smb.protocol.auth] Null CIFS logon allowed, sess = T9

Por último, para que funcione todo accediendo por FQDN, por ejemplo, hostname.domain.tld hay que configurar los navegadores según el siguiente manual: http://www.nateirwin.net/2007/01/19/enabling-ntlm-authentication-in-firefox-and-internet-explorer/, es decir, en IE configurar la URL como sitio de confianza.

Mejorando la velocidad de Alfresco con Varnish

En la charla que di en el Meetup de Alfresco en Madrid, comenté, entre otras cosas, cómo acelerar Alfresco, en este punto se hablaba de Varnish.

Varnish

Varnish es un proxy caché, acelerador web y balanceador de servidores web que funciona sobre Linux, Mac y *BSD, básicamente usa opciones del kernel y un almacén de la caché para acelerar las peticiones de páginas, es decir, un sustituto a mod_proxy, mod_proxy_balancer o mod_proxy_ajp.

En este artículo os dejo un manual sobre como implementar Varnish por delante de Alfresco para acelerar la experiencia del usuario y funcionamiento en general de la aplicación, tanto Alfresco Explorer como Alfresco Share u otras aplicaciones que desarrollemos sobre Alfresco, reduce los tiempos de conexión de forma considerable y libera de algunas peticiones al servidor de aplicaciones.

En este caso explicaré como instalar y configurar Varnish 2.0.5 en CentOS 5 mediante un RPM aunque también se puede compilar, todo en menos de 5 minutos. La lectura de esta web me ha ayudado para escribir el artículo.

Read More