Escalabilidade e elasticidade para padrões de aplicativo virtual no IBM PureApplication System

O IBM ® PureApplication ™ é um sistema integrado que combina recursos de hardware (nós de cálculo, armazenamento e rede) com recursos de software, usando a virtualização para melhorar a utilização do sistema. As cargas de trabalho (como aplicativos transacionaiis, da web ou de datacerters) são suportadas pelo uso de padrões, que oferecem visualizações abstratas dos componentes de software de uma solução, por exemplo, aplicativos da web ou banco de dados. Este artigo descreve as diversas opções em um IBM PureApplication System e no IBM Workload Deployer para a criação de implementações de middleware escaláveis usando padrões de aplicativo virtual.

Andre Tost, Senior Technical Staff Member, IBM

Andre Tost trabalha como Senior Technical Staff Member na organização de desenvolvimento do IBM PureApplication Systems. No momento, ele se concentra em padrões, plataformas de computação em nuvem e sistemas especializados integrados. Antes de sua designação atual, passou mais de dez anos em várias funções de consultoria, desenvolvimento e arquitetura na IBM. Trabalhou com grandes organizações de TI em todo o globo em SOA e BPM e foi arquiteto chefe de muitos grandes projetos de TI, especificamente em torno do padrão de barramento de serviço corporativo. Ele iniciou sua carreira na IBM como desenvolvedor de C++ e Java e ainda gosta de criar código.


nível de autor Master do
        developerWorks

José De Jesús, Senior Certified Architect, IBM

Photo of Jose De Jesusosé De Jesús é Senior Certified Architect no IBM Software Services for WebSphere (ISSW) para a equipe IBM (I4I). Ele é o líder da equipe de infraestrutura não SAP para o projeto interno na IBM Blue Harmony e da certificação ISSW. Também lidera a I4I Cloud Initiative e a I4I Technical Vitality Initiative. Faz parte da Distributed Management Task Force. É formado em Ciência da Computação na Universidade Fordham e é mestre em Gerenciamento de tecnologia pela Universidade de Miami.



01/Nov/2013

Iniciante no IBM PureApplication System?

Saiba mais sobre o IBM PureApplication System produtos, padrões e serviços .

Introdução

O termo escalabilidade costuma ser amplamente utilizado. Um termo parecido usado pelas pessoas, principalmente no contexto de computação em nuvem, é elasticidade.. É possível argumentar que esses termos tenham significados diferentes, no entanto, os dois se referem à capacidade que um ambiente possui de entregar volumes em transformação de cargas de trabalho ao ajustar os recursos do sistema. O modo de quantificar uma carga de trabalho depende de como ela é processada pelo sistema.

Por exemplo, se a carga de trabalho é um serviço de conexões de vídeo, o volume costuma ser medido pelo número de usuários que assistem ao vídeo a qualquer momento.Nesse caso, aumentar a largura da banda da rede entre os servidores de conexão de vídeo e os dispositivos do usuários aumentaria a carga de trabalho. Da mesma forma, aumentar a potência da CPU provocaria um aumento na carga de trabalho de subscrição de uma companhia de seguro. Isso é medido pelo tamanho e pela complexidade da política sendo processada. Saiba que elasticidade e escalabilidade não exigem que o sistema reaja apenas ao aumento de uma carga de trabalho, mas também à sua diminuição (o que costuma ser negligenciado e, às vezes, é um problema mais difícil de se resolver).

Um jeito simples para diferenciar escalabilidade e elasticidade é observar os intervalos de tempo em que acontecem as mudanças e quando é possível prevê-las para lidar com elas antes que aconteçam afetivamente. A escalabilidade costuma ser usada para descrever os mecanismos e procedimentos aplicados a um sistema com mudanças previsíveis, quase lineares, de um volume de carga de trabalho em um período de tempo. Ou seja, pode haver um planejamento de capacidade adequado com antecedência. Os ajustes podem ser feitos manualmente e, de certa forma, com base em estatísticas. Por outro lado, a elasticidade é usada em casos em que a mudança nas cargas de trabalho ocorrem rapidamente, com aumentos ou quedas drásticos em um período curto de tempo, com pouco ou nenhum aviso prévio. Esse tipo de mudança exige um sistema muito mais flexível e automatizado, que reaja a mudanças sem a necessidade de intervenções manuais.

No contexto da computação em nuvem, costuma-se assumir que um serviço de nuvem seja elástico. Espera-se que o serviço possa reagir a mudanças massivas na carga de trabalho em um período muito curto de tempo. Entretanto, na prática, nem todos os serviços de nuvem atendem a esse requisito. O importante é que qualquer sistema use seus recursos da melhor e mais eficiente forma, com base nas características da carga de trabalho.

Este artigo descreve os mecanismos do IBM PureApplication System para ajustar os recursos de acordo com uma carga de trabalho específica em execução no sistema. Ele abrange a escalabilidade e a elasticidade. Algumas vezes, elas estão interrelacionadas.


Escala vertical e horizontal

Há dois mecanismos principais para escalar um sistema de computador:

  • escala horizontal significa adicionar mais nós a um sistema (como máquinas virtuais) ou removê-los, se necessário. Isso também é chamado de escalabilidade horizontal ou ajuste.
  • Escala vertical se refere à adição de recursos adicionais e um nó existente, por exemplo, adicionar memória ou CPUs adicionais a uma máquina virtual ou reduzir sua capacidade adequadamente. Outros termos também usados aqui são ampliação, ao adicionar recursos, e redução, ao removê-los.

Há outras variações desses tipos de escalada. Por exemplo, um tipo específico de escala vertical pode aumentar o número de máquinas virtuais java em execução ou de outros recursos em uma máquina virtual. Entretanto, abaixo, nós assumimos que a escala vertical é limitada ao aumento ou à redução de memória e alocação de CPU por máquina virtual.


Padrões de aplicativo virtual

Como mencionado acima, os padrões são a principal forma para descrever as cargas de trabalho desejadas para o IBM PureApplication System. Há dois tipos de padrões, padrões de sistema virtual e padrões de aplicativo virtual. Eles possuem níveis diferentes de compatibilidade com escalabilidade e elasticidade. Aqui, nós vamos nos concentrar nos padrão de aplicativo virtual, que oferecem alto nível de abstração para descrever uma solução. O foco será, principalmente, em um aplicativo e suas característica, em vez de delimitar a topologia e a infraestrutura detalhada de máquina virtual.

A estrutura de autoescala do

IBM PureApplication System oferece suporte extensivo para instâncias de aplicativo virtual com a inserção de componentes em todas as máquinas virtuais implementadas que trabalham juntas para atingir o comportamento esperado. A Figura 1 mostra uma visão geral desses componentes.

Figura 1. Estrutura de autoescala do IBM PureApplication System

O agente de autoescala depende do agente de monitoramento para coletar dados de métrica no nível do sistema operacional. Como parte do processo de implementação de um padrão de aplicativo virtual, o IBM PureApplication System instala automaticamente scripts e agentes em todas as máquinas virtuais. Cada máquina virtual incluída atua como "principal", ou seja, hospeda e executa o agente de autoescala. Esse agente, basicamente, toma decisões sobre ações de escala com base em dados coletados pelo agente de monitoramento. Por exemplo, a necessidade de máquinas virtuais adicionais ou a possibilidade de desativar uma existente. As decisões de escala são encaminhadas à camada do PureApplication System IaaS para execução.

O agente de monitoramento, que também executa na máquina virtual principal, coleta dados de todas as máquinas envolvidas na instância de aplicativo virtual. Ele lê todos os dados de monitoramento disponíveis por meio de um serviço do quadro de avisos (BBSON) com base em service over network (SON).

Cada máquina virtual participante contém um agente coletor, que atua como o ponto de coleta para monitoramento dos dados obtidos em uma máquina virtual e os envia ao BBSON.

Os plug-ins coletores monitoram a própria máquina virtual, além de qualquer middleware que compartilhe dados com o comportamento de escala. Os coletores integrados, simples de instalar, coletam informações básicas sobre a CPU, o consumo de memória e o uso do disco. É possível encontrar uma tabela com os dados monitorados pelo sistema no PureApplication System Information Center.

Também é possível desenvolver e registrar seus próprios coletores de plug-ins para monitorar qualquer dado que considerar importante para um critério de escala que queria oferecer. Os coletores podem melhorar as informações por meio de HTTP (com tipos de coletores de HTTP) ou por meio de execução do script(com tipos de coletores de script), seguindo um formato específico que o agente de monitoramento analisa e transfere para o agente de autoescala como métrica. Além disso, é possível aplicar os metadados para definir como essas métricas aparecem no painel de implementação do console de aplicação virtual.

Critérios de escala

Se as novas máquinas virtuais forem adicionadas ou removidas de um aplicativo virtual (escala horizontal), ou se houver adição ou remoção de memória ou CPU de uma máquina virtual existente (escala vertical), o processo tem base em eventos acionadores.. Cada evento acionador consiste em uma métrica real (por exemplo, a utilização medida da CPU em uma máquina virtual) e os limites para distribuição e ajuste, respectivamente. Também é possível definir o período de tempo que um limite deve exceder antes de se tomar uma ação. Por fim, é possível definir o número mínimo e máximo de instâncias (máquinas virtuais) que podem existir na instância de aplicativo virtual implementada. A Figura 2 mostra os critérios para escala horizontal.

Figura 2. Critérios para escala horizontal

A estrutura dos atributos para escala vertical é semelhante, como mostra a Figura 3.

Figura 3. Escala vertical

Como mencionado acima, o agente de autoescala captura essa informação, compara com os dados de monitoramento recebidos e toma decisões de acordo com isso.

Esses dados (ou seja, os atributos da política mostrados no diagrama acima) são definidos no documento topology.json usado pela camada IaaS para implementar a topologia. Esse documento é criado por meio de diversas transformações em um plug-in (os detalhes sobre o desenvolvimento e a implementação do plug-in VAP não estão no escopo deste artigo). O arquivo topology.json costuma ser baseado em um modelo que contém um layout básico das máquinas virtuais que devem ser implementadas. Esse modelo é resolvido e concluído pela transformação de componentes, links, políticas e seus plug-ins associados.

A Figura 4 mostra um exemplo para especificar os critérios de escala horizontal em um modelo de máquina virtual.

Figura 4. Modelo de máquina virtual de amostra com definições de escala

Neste exemplo, o uso da CPU é definido. A métrica associada, chamada de CPU.Used, é uma das métricas fornecidas pelo plug-in coletor padrão, portanto, nenhuma codificação padrão é necessária para suportá-lo.

Como uma máquina virtual baseada no modelo mostrado acima é implementada, o agente de autoescala usará automaticamente os critérios de acionamento definidos para tomar decisões de escala.

Política de escala

As características de escala não funcionais de um padrão de aplicativo virtual costumam ser representados por uma política. . Essa política oferece parâmetros configuráveis que são transformados na configuração adequada na topologia resultante. Isso não é diferente para a escala. Idealmente, um tipo de padrão suporta uma política de escala que permite que os usuários definam os critérios e o tipo de escala necessários na topologia delimitada.

Por exemplo, o padrão WebApp enviado com o IBM PureApplication System contém essa política. Ele oferece configurações que permitem o controle do comportamento de escala da topologia do IBM WebSphere Application Server sob o padrão, como mostra a Figura 5.

Figura 5. Política de escala no padrão WebApp

O tipo de escala com base em tempo de resposta , por exemplo, usa o tempo de resposta de aplicativos da web como critério de escala. A plataforma é distribuída ou ajustada quando o tempo de resposta do aplicativo ultrapassa a faixa de limite especificada. Esse tipo de métrica não é parte do plug-in coletor padrão, que monitora apenas os dados de nível do sistema operacional. Isso significa que a política de escala no padrão WebApp alavanca plug-ins coletores adicionais que monitoram os dados específicos do WebSphere Application Server coletados pelo agente de monitoramento e fornecidos para o agente de autoescala.

Saiba que essa política de escala é integrada ao padrão WebApp e, por isso, não é facilmente utilizável em seu próprio tipo de padrão. . Hoje, a única forma de alavancar os mesmos plug-ins coletores e copiando o código-fonte na implementação do plug-in de política.

De qualquer forma, a implementação no plug-in de política escalado deve garantir que os valores adequados sejam preenchidos no arquivo topology.json, como mostrado abaixo. Para tornar uma política amplamente reutilizável, ela deve ser de tipo 2 . Ou seja, ela deve ser implementada em seu próprio plug-in e tipo de padrão, que podem ser vinculados a outros tipo que desejar alavancar.


Escala manual de uma instância de padrão de aplicativo virtual

Há momentos em que é necessário escalar manualmente a plataforma após a implementação, seja para solucionar um problema de plug-in ou de política de escala, ou simplesmente por uma necessidade administrativa de adicionar ou remover manualmente instâncias de aplicativos virtuais ou serviços compartilhados.

Por exemplo, se você implementar um aplicativo com base no padrão WebApp, na interface da web do IBM PureApplication System web interface, é possível:

  1. selecionar a instância de aplicativo virtual.
  2. Clique em Manage para abrir o console do aplicativo virtual.
  3. Clique em Operations.
  4. Selecione um aplicativo para escalar. Uma volta no painel direito denominada Manual Scaling contém opções para Distribuição e ajuste manuais, como mostra a Figura 6.
    Figura 6. Distribuição e ajuste

Neste caso, ao enviar uma solicitação de escala, é possível ver o status da solicitação na janela de execução de operações (Figura 7). Também é exibida a contagem de aumento ou redução da instância do aplicativo virtual.

Figura 7. Resultados da execução da operação

No entanto, a capacidade de escalar um aplicativo virtual manualmente não é fornecida automaticamente. Para realizar a escala manual, o plug-in associado deve expor especificamente as operações de escala manual. É possível especificar os recursos de escala de um plug-in como metadados de política de escala no modelo do aplicativo. O documento de topologia resultante usa os mesmos atributos para escala manual e autoescala.

O agente de autoescala expõe um grupo de APIs de escala para uso dos plug-ins nos scripts de operação.Por exemplo, os plug-ins usam as funções maestro.autoscaling.scale_in e maestro.autoscalingAgent.scale_out para acionar as ações de distribuição e ajuste para uma função e um modelo de máquina virtual específicos. Essas APIs garantem que as escala manual não interfira na autoescala, pois isso permite que o agente de autoescala suspenda temporariamente o processo enquanto a operação de escala manual está em andamento.

Saiba que as ações de autoescala (adição ou destruição de instâncias) têm base em métricas coletadas para todas as instâncias de uma função específica, e não apenas uma instância particular. O sistema conta o número de instâncias de função que existem e calcula sua métrica média para determinar de uma operação de escala é necessária. Por exemplo, se três instâncias de uma função específica estiverem em execução e o limite da CPU for de 80%, a média de utilização da CPU ( CPU.Used) das três instâncias deve ser maior que 80% para que uma operação de distribuição ocorra. Ou seja, a condição a seguir deve ser cumprida:

(RoleAInst1.CPU.Used + RoleAInst2.CPU.Used + RoleAInst3.CPU.Used)/3 > 80%

Por fim, nem todos os plug-ins expõem as operações de escala manual e autoescala. Um plug-in deve especificar explicitamente e oferecer suporte para esse tipo de operação de escala de quiser oferecê-la. Dependendo dos recursos e da experiência do usuário, alguns plug-ins podem não ter suporte para escala manual. Outros podem permitir apenas a escala manual, sem oferecer suporte para autoescala.


Conclusão

A capacidade de escalar cargas de trabalho de forma flexível é um conceito fundamental para qualquer plataforma de computação em nuvem. Este artigo descreveu como o IBM PureApplication System suporta a escalabilidade e a elasticidade de cargas de trabalho em execução nos sistemas como aplicativos virtuais. Um padrão de aplicativo virtual pode oferecer escala automática por meio de políticas e pode aproveitar os dados de monitoramento integrado para tomar decisões sobre quando e como escalar. Também pode definir seus próprios critérios customizados. A escala poder ser vertical, horizontal ou ambas. O IBM PureApplication System suporta escala manual e automática.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=WebSphere, Cloud computing
ArticleID=951240
ArticleTitle=Escalabilidade e elasticidade para padrões de aplicativo virtual no IBM PureApplication System
publish-date=11012013