Este es un artículo de nuestros amigos de Cloudsoft (enlace) en el proyecto Apache Brooklyn (enlace). Estamos encantados de colaborar con Cloudsoft. La nube es el nuevo sistema operativo, y proyectos como Apache Brooklyn permiten a la empresa ser más eficiente. ¿Y si pudiera desplegar una docena de instancias de Couchbase Server en Amazon Web Services con sólo pulsar un botón?
Los planos de Couchbase ya están disponibles en Apache Brooklyn.
@ZaidM (GitHub) y @Nakomis (GitHub) han estado ocupados en Github trabajando con Couchbase para añadir soporte para el extremadamente escalable y de alto rendimiento almacén de documentos JSON. Con su último commit (enlace), aprovisionar un clúster es tan fácil como escribir:
servicios:
- tipo: brooklyn.entity.nosql.couchbase.CouchbaseCluster
tamañoinicial: 3ubicación:
jclouds:motor-ordenador-de-google:
identidad: your-gce-acct
credencial: su-gce-token
Simplemente sigue las instrucciones, descomprime y ejecuta "bin/brooklyn launch", luego ve a la consola web y pega el YAML anterior (con tus credenciales).
Tan pronto como se despliega, la topología se muestra y se puede realizar un seguimiento del aprovisionamiento y la ejecución de comandos. Todo se ejecuta en paralelo, gracias a la forma en que Brooklyn gestiona el procesamiento, excepto cuando existe una dependencia explícita, como cuando es necesario conocer un subconjunto de nodos de Couchbase para que la aplicación web se conecte. Y se ejecutará en muchas ubicaciones, desde Amazon a OpenStack, mediante Docker o máquinas preexistentes sin nube.
Después de unos minutos, se ha completado, y las métricas de Couchbase se monitorizan para asegurar que está funcionando bien y dirigir tus políticas de gestión personalizadas como DR y autoescalado como mostraremos a continuación. Las pestañas de los sensores también muestran las URLs para la gestión y los puntos finales para que los clientes se conecten.
Por supuesto, en el mundo real necesitas más. Ahí es donde el poder del proyecto Brooklyn brilla y tu automatización Couchbase resplandece. Vamos a ilustrar un YAML más interesante que muestra cómo:
- personalizar las credenciales de Couchbase
- especificar las especificaciones del hardware (portabilidad a muchas nubes)
- adjuntar una política de escalado
- despliegue de Couchbase junto con algunas aplicaciones front-end
Este último punto es especialmente poderoso: puedes usar la misma cadena de herramientas de código abierto para desplegar y gestionar las aplicaciones alrededor de Couchbase que usas para el propio Couchbase. Esto permite pruebas de integración a escala, totalmente automatizadas, y planos controlados por versiones para pilas enteras.
Usemos como ejemplo una webapp generadora de carga Couchbase desarrollada por @Neykov (enlace).
Definiremos una política que intente mantener las operaciones por nodo en el rango de 500-1000. Esto no es nada para Couchbase en un hardware tan potente, por supuesto, ¡pero es un rango que podemos demostrar cómodamente! Una vez que tenemos Couchbase desplegado y nuestra aplicación web desplegada, puedes crear el bucket en Couchbase a través de su GUI (usando las credenciales en el YAML de abajo), y luego iniciar los dos generadores de carga. Si necesitas más generadores de carga, usa la pestaña "effectors" para "redimensionar" el cluster de load-gen, y cuando empieces a manejar 3000+ ops/sec a través de Couchbase, observarás como se escala según la política.
Aquí está el código YAML más grande y real en toda su gloria, aquí ejecutándose en Softlayer:
nombre: Mi Couchbase con Elastic Load Generator
servicios:
- tipo: brooklyn.entity.nosql.couchbase.CouchbaseCluster
id: cb-cluster
adminUsername: Administrador
adminPassword: Contraseña
tamañoinicial: 3
brooklyn.config:
provisioning.properties:
minRam: 16384
minCores: 4
brooklyn.policies:
- tipo: brooklyn.policy.autoscaling.AutoScalerPolicy
brooklyn.config:
métrica: $brooklyn:sensor("brooklyn.entity.nosql.couchbase.CouchbaseCluster",
"couchbase.stats.cluster.per.node.ops")
metricLowerBound: 500
metricUpperBound: 1000
minPoolSize: 3
maxPoolSize: 8
- tipo: brooklyn.entity.webapp.ControlledDynamicWebAppCluster
nombre: Web Couchbase Load Gen Cluster
guerra: https://github.com/neykov/web-load-gen/raw/master/load-gen.war
brooklyn.config:
provisioning.properties:
minCores: 4
java.sysprops:
brooklyn.example.couchbase.nodes: $brooklyn:formatString("'%s'",
component("cb-cluster").attributeWhenReady("couchbase.cluster.node.addresses"))
tamañoinicial: 2
ubicación:
jclouds:softlayer:
identidad: your-sl-acct
credencial: su-sl-api-clave-de-acceso
Acerca de Cloudsoft
Cloudsoft es la empresa líder en gestión de aplicaciones de código abierto. Cloudsoft AMP es la versión con soporte comercial de Apache Brooklyn, un marco para modelar, monitorizar y gestionar aplicaciones a través de planos autonómicos actualmente en incubación en la Apache Software Foundation. Aprovecha Apache jclouds (enlace). AMP ofrece gobernanza y conformidad de aplicaciones basadas en políticas para múltiples nubes. AMP ha sido adoptado por empresas, ISV e integradores de sistemas como IBM Cloud Services.
Brooklyn es fantástico - pero he encontrado y corregido un error con la pasarela de sincronización. Quiero escribir una prueba para ello. ¿Cómo diablos puedo construir Brooklyn desde el código fuente, y cómo puedo empaquetarlo para su distribución y probar que mi ajuste funcionó? Puedes ver el cambio aquí: https://github.com/apache/incu…