OpenStack: Swift, Parte I

Publicado por el 11 de octubre, 2012 en Clusters | 0 comentarios

Como necesidad de contar con un sistema de almacenamiento robusto, escalable y de bajo costo, en Agosto del 2009, Rackspace empieza el diseño y desarrollo de Swift.

La motivación nace desde el momento en que empezamos a buscar soluciones de almacenamiento clusterizadas y de bajo costo. Swift es una herramienta ideal con la que se puede contar para el almacenamiento de objetos a gran escala, redundante, de bajo costo de mantención e implementación.

En un comienzo, la mayoría de las soluciones Cloud eran propietarias y/o implicaban un alto costo en Hardware o en Software.

Con la ambición de encontrar un sistema de almacenaje que sea capaz de funcionar como cluster, que sea tolerante a fallos, que no necesite de contraloras de arreglo de discos costosas para su buen funcionamiento y que, además sea capaz de guardar petabytes de información de forma redudante, es que nace el proyecto Swift.

La fotografía es © de Velo Steve

Leer más

MySQL Galera Cluster: Parte I

Publicado por el 11 de octubre, 2012 en Clusters | 0 comentarios

Durante nuestra experiencia desarrollando proyectos de plataformas de servicios con alta disponibilidad hemos experimentado una piedra de tope en el crecimiento de plataformas de bases de datos utilizando MySQL: la imposibilidad de utilizar sistemas de rápida implementación de clusters SQL sin tener que alterar los sistemas de storage o modificar los sistemas separando escritura y lectura con maestros-esclavos.

Hasta ahora, de querer utilizar sistemas distribuidos o de alta performance utilizando MySQL se debió acudir a MySQL cluster. De otra forma se debía proceder a inseguras y engorrosas configuraciones de maestros y esclavos con separacion de lectura y escritura entre ellos.

En vista de esta problemática, en situaciones donde es imposible por diseño el utilizar un sistema de storage diferente al elegido o con el fin de evitar las engorrosas configuraciones maestro-esclavo es que surge Galera, un sistema de replicación multi-maestro síncrono que permite subsanar dichas problemáticas.

El caso de uso más común, al utilizar MySQL como motor de base de datos para aplicaciones web, se siguen varios pasos.

La instalación básica consiste en un solo servidor que brinde tanto el contenido de aplicación web, y a su vez albergue el motor de bases de datos. Con esto tenemos un servidor sin especialización.

Segundo paso consistiría en especializar la plataforma separando el motor de bases de datos del servidor de aplicaciones. Con esto tenemos dos servidores especializados.

Tercer paso en la escalabilidad de la aplicación web consiste en incluír un nuevo servidor de aplicaciones a la plataforma e incluso incluír un balanceador de carga frontal entre ellos. Con esto tenemos tres, o cuatro, servidores especializados, dos de aplicaciones y un motor de bases de datos, más el balanceador de carga.

Siguiente paso sería implementar clusterizar la anterior plataforma agregando un proceso de failover para el servidor frontal. Con esto aun seguiríamos utilizando solo un servidor para motor de bases de datos.

¿Qué sigue? Segmentación de bases de datos con sistemas de replicación, que permitan separar la carga en el motor de base de datos entre las lecturas y las escrituras solicitadas por la aplicación web.

Finalmente ¿qué nos resta? Si podemos clusterizar con mediana facilidad la plataforma de servicio de aplicaciones, aun nos resta cómo realizar algo similar con la plataforma de motor de bases de datos. Requerimos una plataforma multimaster robusta, que permita control de salud y exclusión de nodos con fallos. Nace entonces MySQL Galera.

La fotografía es © Strt’s Photos.

Leer más