Esta é uma postagem de convidado de nossos amigos da Cloudsoft (link) no projeto Apache Brooklyn (link). Estamos entusiasmados por colaborar com a Cloudsoft. A nuvem é o novo sistema operacional, e projetos como o Apache Brooklyn permitem que a empresa seja mais eficiente. E se você pudesse implementar uma dúzia de instâncias do Couchbase Server no Amazon Web Services com o clique de um botão?


Os blueprints do Couchbase agora estão disponíveis no Apache Brooklyn!

@ZaidM (GitHub) e @Nakomis (GitHub) têm estado ocupados no Github trabalhando com o Couchbase para adicionar suporte ao armazenamento de documentos JSON extremamente escalável e de alto desempenho. Com seu último commit (link), o provisionamento de um cluster é tão fácil quanto escrever:

nome: Meu cluster do Couchbase
serviços:
- tipo: brooklyn.entity.nosql.couchbase.CouchbaseCluster
initialSize: 3location:
jclouds:google-compute-engine:
identidade: your-gce-acct
credencial: seu token-gce

Basta seguir as instruções, descompactar e executar "bin/brooklyn launch" e, em seguida, ir para o console da Web e colar o YAML acima (com suas credenciais).

Assim que você faz a implantação, a topologia é mostrada e você pode acompanhar o provisionamento e a execução de comandos. Tudo é executado em paralelo, devido à forma como a Brooklyn gerencia o processamento, exceto quando há uma dependência explícita, como a necessidade de conhecer um subconjunto de nós do Couchbase para que o aplicativo da Web possa se conectar. E ele será executado em vários locais, da Amazon ao OpenStack, por meio do Docker ou de máquinas pré-existentes que não sejam da nuvem.

Depois de alguns minutos, ele é concluído e as métricas do Couchbase são monitoradas para garantir que ele esteja funcionando bem e para orientar suas políticas de gerenciamento personalizadas, como DR e dimensionamento automático, conforme mostraremos a seguir. As guias de sensores também mostram os URLs para gerenciamento e pontos de extremidade aos quais os clientes podem se conectar.

console-sensors.png

É claro que no mundo real você precisa de mais. É aí que o poder do projeto Brooklyn se destaca e sua automação do Couchbase brilha. Vamos ilustrar um YAML mais interessante que mostra como fazer:

  • Personalização das credenciais do Couchbase
  • especificar a especificação de hardware (portátil em várias nuvens)
  • anexar uma política de escalonamento
  • Implementar o Couchbase junto com alguns aplicativos de front-end

Esse último ponto é especialmente poderoso: você pode usar a mesma cadeia de ferramentas de código aberto para implantar e gerenciar os aplicativos em torno do Couchbase que você usa para o próprio Couchbase. Isso permite testes de integração em escala, totalmente automatizados, e blueprints com controle de versão para pilhas inteiras.

Vamos usar como exemplo um aplicativo da Web gerador de carga do Couchbase desenvolvido por @Neykov (link).

Definiremos uma política que busca manter as operações por nó na faixa de 500 a 1000. Isso não é nada para o Couchbase em um hardware tão robusto, é claro, mas é uma faixa que podemos demonstrar confortavelmente! Assim que tivermos o Couchbase implantado e nosso aplicativo Web implantado, você poderá criar o bucket no Couchbase por meio de sua GUI (usando as credenciais no YAML abaixo) e, em seguida, iniciar os dois geradores de carga. Se precisar de mais geradores de carga, use a guia "effectors" (efetores) para "redimensionar" o cluster de geradores de carga e, à medida que você começar a conduzir mais de 3.000 operações por segundo por meio do Couchbase, verá que ele será dimensionado de acordo com a política.

Aqui está o código YAML maior, do mundo real, em toda a sua glória, em execução na Softlayer:

Nome: Meu Couchbase com o Elastic Load Generator

serviços:

- tipo: brooklyn.entity.nosql.couchbase.CouchbaseCluster
id: cb-cluster
adminUsername: Administrador
adminPassword: Senha
initialSize: 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
Nome: Cluster de geração de carga do Web Couchbase
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'",
componente("cb-cluster").attributeWhenReady("couchbase.cluster.node.addresses"))
initialSize: 2

localização:
jclouds:softlayer:
identidade: your-sl-acct
credencial: your-sl-api-access-key

Sobre a Cloudsoft

A Cloudsoft é a empresa líder em gerenciamento de aplicativos de código aberto. O Cloudsoft AMP é a versão comercialmente suportada do Apache Brooklyn, uma estrutura para modelagem, monitoramento e gerenciamento de aplicativos por meio de projetos autônomos atualmente em incubação na Apache Software Foundation. Aproveita o Apache jclouds (link). A AMP oferece governança e conformidade de aplicativos baseados em políticas de várias nuvens. O AMP foi adotado por empresas, ISVs e integradores de sistemas, como o IBM Cloud Services.

Autor

Postado por Shane Johnson, diretor de marketing de produtos da Couchbase

Shane K Johnson foi diretor de marketing de produtos da Couchbase. Antes da Couchbase, ele ocupou várias funções de desenvolvimento e evangelismo com experiência em Java e sistemas distribuídos. Ele prestou consultoria a organizações dos setores financeiro, de varejo, telecomunicações e mídia para elaborar e implementar arquiteturas que dependiam de sistemas distribuídos para dados e análises.

Um comentário

  1. O Brooklyn é fantástico, mas encontrei e corrigi um bug no gateway de sincronização. Quero escrever um teste para ele. Como faço para compilar o Brooklyn a partir do código-fonte e como faço para empacotá-lo para distribuição e testar se meu ajuste funcionou? Você pode ver a alteração aqui: https://github.com/apache/incu

Deixar uma resposta