Zimbra: Arquitectura y Servicios
Oscar Mas de Cadinor nos deja hoy una entrada muy completa acerca de cómo dimensionar nuestra arquitectura Zimbra.
Muchas veces, nos ponemos a instalar nuestro sistema de Zimbra, sin hacernos ningún tipo de esquema, lo cual es un gran fallo. Siempre que te lees un libro de informática ya sea de algún producto de Windows, Linux, Citrix, etc…. siempre empiezan con una explicación de todos los servicios y de como ubicarlos, para que la implantación del producto sea correcto y posteriormente escalable. Con Zimbra no existe el problema de escalabilidad, ya que es un producto muy flexible y donde hoy tenemos el servicio de MTA, mañana lo podemos tener en otro servidor diferente. Pero el precio que hemos de pagar para realizar estos cambios, siempre son cortes de servicio de nuestro sistema de Zimbra. Es interesante sentarse no más de 15 min y meditar antes de empezar una instalación de Zimbra. Reflexionar donde pondremos los servicios y la cantidad de servidores que vamos a utilizar. A Zimbra no le interesa la cantidad de servidores que instales, si usamos la versión Network, simplemente les pagaremos por cuentas que estemos usando. Hoy lo que os quiero explicar es donde se deben ubicar los servicios y una pequeña explicación de la utilidad de cada servicio. Los servicios de Zimbra son los siguientes:
- zimbra-ldap
- zimbra-logger
- zimbra-mta
- zimbra-snmp
- zimbra-store
- zimbra-apache
- zimbra-spell
- zimbra-memcache
- zimbra-proxy
- zimbra-core *
- zimbra-archiving
Explicación de los servicios de Zimbra
La utilidad cada uno de los servicios de Zimbra y que función desempeñan en nuestra implantación es la siguiente:
Zimbra-ldap
En montajes muy grandes, cuando separábamos el servicio de LDAP (en concreto Zimbra usa OpenLDAP) y lo hacíamos independiente (un servidor que solamente hace la función de LDAP). Hasta la versión de Zimbra 7, era obligatorio tener un servidor de LDAP únicamente como Master. Podíamos añadir otro servidor de LDAP en nuestra implantación de Zimbra, pero tenía que ser una replica del servidor Master. Eso implicaba, que ante la caída de nuestro servidor de LDAP Master, entraba en acción la replica del LDAP, en el cual no se podía hacer ningún tipo de modificación hasta que arreglásemos el Master o cambiasemos la replica a Master. Actualmente con la versión de Zimbra 8, está permitido tener dos servidores de Zimbra LDAP que actúen como Master los dos a la vez ( la verdad es que es un avance ). También cabe destacar de este servicio, que cuando actualizamos nuestra infraestructura de Zimbra, este es el primer servidor que hemos de actualizar, acto seguido el o los servidores que nos hacen de Storage y por ultimo los servidores de MTA. Este servicio, es el encargado de almacenar: cuentas de correo, COS (class of service), dominios, DL (listas de distribución), Alias, Zimlets, datos generados por DKIM, etc…..
Zimbra-logger
Este servicio, es el que se encargará del syslog y de los reports que nos ofrece el sistema de Zimbra. Solamente puede haber un servicio de zimbra-logger en toda nuestra infraestructura. Normalmente está ubicado en el primer servidor de Mailbox que instalamos.
Zimbra-mta
Este es el servicio de MTA (Mail Transfer Agent), es el encargado de recibir el correo mediante el servicio de SMTP mediante el postfix y retransmitirlo al Mailbox correspondiente, esta transmisión se realiza mediante el protocolo de comunicación LMTP (Local Mail Transfer Protocol), el cual es más ligero que el SMTP . Este servicio lleva intrínsecos varios servicios que se pueden habilitar por consola y algunos mediante la interface web. Estos servicios son:
- Amavis-New, el cual se encarga de gestionar el AntiVirus y el AntiSpam
- Sistema de AntiVirus y AntiSpam
- Sistema de POP3, IMAP, IMAPSSL, POP3SSL, etc….
- Sistema de control del flujo de correo (PolicyD)
Zimbra-snmp
Este servicio, es por si queremos monitorizar por SNMP nuestro servidor de Zimbra. El paquete es opcional, ya que sino lo instalamos nuestro sistema funcionará perfectamente.
Zimbra-store
Este servicio es el encargado de almacenar los mensajes, estos mensajes se guardan en formato MIME y están ubicados en: /opt/zimbra/store. Toda la información esta guardada en MySQL, cosa que se están haciendo grandes avances para implementar MariaDB, la cual disminuirá la carga de servidor y agilizará las consultas. Incluye el servicio de Jetty, el cual es un servidor HTTP 100% basado en Java y un contenedor de Servlets escrito en Java. Cada servidor de Zimbra tiene su propio mail storage donde almacena los mensajes y los indexa. Antes de la versión 8, cuando movíamos buzones de un storage a otro, había un corte de servicio al usuario en concreto que estábamos moviendo. Actualmente el corte de servicio del buzón que estamos moviendo es mínimo.
Zimbra-apache
Este servicio es muy interesante, porque aunque se llame zimbra-apache, hace ya mucho tiempo que Zimbra usa como servidor web en su plataforma nginx….. ¿?. Como es obvio, es el servicio web de acceso a la plataforma, tanto para dispositivos móviles y Outlooks. Cuando instalamos este servicio, automáticamente se instalan los servicios de zimbra-spell y zimbra-convertd
Zimbra-spell
Es el encargado que la corrección ortográfica.
Zimbra-memcache
Este servicio se instala conjuntamente con el servicio de zimbra-proxy y es utilizado para realizar las caches de las consultas que el servicio de proxy va realizando a la base de datos LDAP, la cual evita realizar consultas repetitivas. Este servicio al igual que el servicio de zimbra-proxy, es instalado junto con el servicio de zimbra-mta en un servidor independiente y se ha de instalar cuando seleccionados el servicio de zimbra-proxy.
Zimbra-proxy
Este es el servicio que nos hace de proxy, cuando nuestra infraestructura se amplia a más de un servidor. Los servicios de Proxy que se usan son: POP3, IMAP, HTTP, HTTPS, IMAPSSL, POP3SSL, etc…. Hasta la versión 7 de Zimbra, era obligatoria usar este servicio en un servidor aparte para poder usar múltiples certificados en un servidor de Zimbra. Actualmente este servicio y el servicio zimbra-memcached se pueden instalar junto con los demás servicios y ofrecer un único servidor de Zimbra alojando varios certificados SSL. Este servicio al igual que el servicio de zimbra-memcached, se ha de instalar junto con el servicio de zimbra-memchached y zimbra-mta en un servidor independiente. Una nota interesante, es que en la versión de Zimbra 7, la administración del Proxy se hacía por consola y en Zimbra 8 se hace mediante la administración web.
Zimbra-core
Este servicio no lo podemos instalar, se instala automáticamente cuando instalamos cualquier servicio de Zimbra. En definitiva, instala librerías, utilidades y herramientas que necesita el servicio de Zimbra. Le he puesto un asterisco, ya que este servicio mientras hacemos la instalación no se puede seleccionar, Zimbra lo instala automáticamente.
Zimbra-archiving
Este servicio es opcional y solo se ofrece con la versión Network. Ofrece la habilidad de almacenar todos los mensajes que son enviados y recibidos por nuestro servidor de Zimbra. Este servicio se instala en un servidor independiente y se habilita el archiving a nivel de cuenta de correo. El único dato que necesitamos conocer para montar más de un servidor Zimbra, es el password de root del LDAP y lo podemos extraer del servidor de Zimbra con el comando: [zimbra@zimbra ~]$ zmlocalconfig -s ldap_root_password
Servicios de Zimbra
Una vez sabiendo para que sirve cada servicio, es importante saber donde ubicarlos en cada instalación. A continuación os detallo cada servicio donde ha de ir ubicado:
Todos los servicios en el mismo servidor
Este, es el método más sencillo, ya que la instalación por defecto nos propone los servicios exactos por defecto, para poder instalar esta plataforma. Los servicios, que se han de instalar en el servidor de Zimbra serian los siguientes:
- Zimbra-apache
- Zimbra-convertd
- Zimbra-ldap
- Zimbra-logger
- Zimbra-mta
- Zimbra-snmp
- Zimbra-spell
- Zimbra-store
Multiples servicios SSL en el mismo servidor
Este tipo te instalaciones, es la misma arquitectura de servicios el el modelo “Todos los servicios en un mismo servidor”, pero le hemos añadido los dos servicios que nos permitirán gestionar los multiples certificados de nuestro servidor. Para ello le hemos añadido los servicios de zimbra-memcached y zimbra-proxy. Servicios que se han de ubicar en cada servidor:
- Zimbra-apache
- Zimbra-convertd
- Zimbra-ldap
- Zimbra-logger
- Zimbra-mta
- Zimbra-snmp
- Zimbra-spell
- Zimbra-store
- Zimbra-memcached
- Zimbra-proxy
Un MTA + Storage
Este tipo de montajes es el más habitual, ya que nos permite mucha flexibilidad. Si montamos un solo servidor de Zimbra y posteriormente queremos añadir más servidores de Storage, nos veremos en la obligación de poner un servidor MTA, el cual nos desviará las peticiones a los diferentes servidores de storage. Para poder montar este MTA que nos balancea las peticiones de entrada a nuestra plataforma de Zimbra, podemos estar seguros de que habrá un corte de servicio, ya que hemos de hacer cambios de configuraciones, como cambios de puertos tanto a nivel de infraestructura de Zimbra y a nivel de Firewall. Si empezamos montando este sistema, conseguiremos que cuando queramos añadir un servidor nuevo de storage, ningún usuario final se vea afectado y la implementación de un segundo storage o tercer storage es transparente y no hayan cortes de servicio. Servicios que se han de ubicar en cada servidor:
zcsmta |
zcs1 |
Zimbra-apache |
Zimbra-apache |
Zimbra-memcache |
Zimbra-convertd |
Zimbra-mta |
Zimbra-ldap |
Zimbra-proxy |
Zimbra-logger |
Zimbra-snmp |
Zimbra-snmp |
Zimbra-spell |
|
Zimbra-store |
Un MTA + dos Storages
Poco hay que hablar de esta implementación….. simplemente acordaros que el servicio de zimbra-logger solamente se puede instalar en un servidor. Servicios que se han de ubicar en cada servidor:
zcsmta |
zcs1 |
zcs2 |
Zimbra-apache |
Zimbra-apache |
Zimbra-apache |
Zimbra-memcache |
Zimbra-convertd |
Zimbra-convertd |
Zimbra-mta |
Zimbra-ldap |
Zimbra-ldap |
Zimbra-proxy |
Zimbra-logger |
Zimbra-snmp |
Zimbra-snmp |
Zimbra-snmp |
Zimbra-spell |
Zimbra-spell |
Zimbra-store |
|
Zimbra-store |
Split Zimbra
Este tipo de instalaciones, es utilizado para empresas con una alta carga de correo electrónico. Yo personalmente solamente he hecho un par de instalaciones de este tipo. La verdad es que no es el tipo de configuración que más me guste, ya que cuando has de actualizar este tipo de infraestructura, la caída de servicio es muy elevada. Aunque Zimbra indique ( y estoy seguro de que funciona ) que se puede actualizar sin interrupción del servicio, hoy en día todos estamos trabajando con sistemas de virtualización y yo personalmente tengo el buen habito, de antes de actualizar cualquier servidor o infraestructura hacer un SnapShot. Esto me sirve, por si me encuentro con alguna incidencia no prevista, poder deshacer los cambios y volver al punto de origen. El problema está, en que cuando haces un SnapShot, has de para los accesos a la plataforma de correo y parar el acceso del correo, esto se hace a consecuencia que si se tuviera que hacer un RollBack al estado inicial, estaríamos perdiendo correos que han ido entrando mientras actualizábamos. Un detalle importante, es que Zimbra no nos ofrece ningún sistema de balanceo de carga de los servidores designados como MTA. Lo más habitual es que nuestro sistema firewall, ya sea pFsense, Shorewall, etc…. nos lo haga o simplemente con un sistema de RoundRobin DNS. Otro punto a destacar es, cuando levantamos los servidores de la infraestructura, hay que indicarle que tenemos dos servidores LDAP, sino ante una caída el sistema, no conoce el segundo servidor de LDAP que hayamos montado, ya sea Activo/Activo o Activo/Pasivo y el sistema no funcionará. Servicios que se han de ubicar en cada servidor:
Zcsmta1 |
Zcsmta2 |
Zcs1 |
Zimbra-apache |
Zimbra-apache |
Zimbra-apache |
Zimbra-memcache |
Zimbra-memcache |
Zimbra-convertd |
Zimbra-mta |
Zimbra-mta |
Zimbra-logger |
Zimbra-proxy |
Zimbra-proxy |
Zimbra-snmp |
Zimbra-snmp |
Zimbra-snmp |
Zimbra-spell |
|
Zimbra-store |
|
Zcs2 |
Zcs3 |
Zcsldap1 |
Zimbra-apache |
Zimbra-apache |
Zimbra-core |
Zimbra-convertd |
Zimbra-convertd |
Zimbra-ldap |
Zimbra-snmp |
Zimbra-snmp |
Zimbra-snmp |
Zimbra-spell |
Zimbra-spell |
|
Zimbra-store |
Zimbra-store |
Zcsldap2 |
Zimbra-core |
Zimbra-ldap |
Zimbra-snmp |
Espero que os sirva de referencia para futuras implementaciones de la plataforma de Zimbra.