Este capítulo inclui as seguintes seções:
Controlador Cisco CSS ou Controlador Nortel Alteon pode residir na mesma máquina que um servidor para o qual você está fazendo o balanceamento de carga de solicitações. Isto é comumente referido como instalando um servidor. Nenhuma etapa de configuração adicional é necessária.
O recurso de alta disponibilidade agora está disponível para Controlador Cisco CSS e Controlador Nortel Alteon.
Para melhorar a tolerância a falhas do controlador, a função de alta disponibilidade contém estes recursos:
Consulte ccocontrol highavailability — controlar alta disponibilidade e nalcontrol highavailability — controlar alta disponibilidade para conhecer a sintaxe completa para xxxcontrol highavailability.
Para configurar a alta disponibilidade do controlador:
xxxcontrol highavailability add address 10.10.10.10 partneraddress 10.10.10.20 port 143 role primary
xxxcontrol highavailability add address 10.10.10.20 partneraddress 10.10.10.10 port 143 role secondaryOs parâmetros address e partneraddress são reversos nas máquinas principal e secundária.
xxxcontrol highavailability set beatinterval 1000
xxxcontrol highavailability usereach 10.20.20.20O mesmo número de destinos de alcance deve ser configurado nos controladores local e parceiro.
xxxcontrol highavailability start auto
xxxcontrol highavailability report
xxxcontrol highavailability takeoverIsso é necessário apenas para manutenção.
Além da perda de conectividade entre controladores ativo e de espera, que é detectada por meio de mensagens de pulsação, o alcance é outro mecanismo de detecção de falha.
Quando você configura a alta disponibilidade do controlador, é possível fornecer uma lista de hosts que cada controlador deve atingir para trabalhar corretamente. Deve haver pelo menos um host para cada sub-rede que a máquina do controlador usa. Esses hosts podem ser roteadores, servidores IP ou outros tipos de host.
O alcance do host é obtido pelo orientador de alcance, que executa ping no host. O switchover acontece se as mensagens de pulsação não puderem ser transmitidas ou se os critérios de alcance forem melhor atendidos pelo controlador de espera do que pelo controlador ativo. Para tomar essa decisão com base em todas as informações disponíveis, o controlador ativo envia regularmente ao controlador de espera seus recursos de alcance e vice-versa. Os controladores então comparam suas informações de alcance com as informações do parceiro e decidem quem deve ficar ativo.
As funções das duas máquinas do controlador são configuradas como principal e secundária. Na inicialização, os controladores trocam informações até que cada máquina esteja sincronizada. Nesse ponto, o controlador principal muda para o estado ativo e começa a calcular pesos e a atualizar o comutador, enquanto que a máquina secundária muda para o estado de espera e monitora a disponibilidade da máquina principal.
Em qualquer ponto, se a máquina de espera detectar que a máquina ativa falhou, a máquina de espera assume o controle das funções de balanceamento de carga da máquina ativa (com falha) e se torna a máquina ativa. Quando a máquina principal estiver operacional novamente, as duas máquinas determinarão qual controlador estará ativo de acordo com a forma como a estratégia de recuperação está configurada.
Existem dois tipos de estratégia de recuperação:
O controlador principal muda para o estado ativo, calculando e atualizando pesos, assim que se torna operacional novamente. A máquina secundária muda para espera após a principal se tornar ativa.
O controlador secundário ativo permanece no estado ativo, mesmo após o controlador principal estar operacional.
O controlador principal muda para o estado de espera e requer intervenção manual para mudar para o estado ativo.
O parâmetro de estratégia deve ser configurado igual para ambas a máquinas.
Para obter exemplos de configuração de alta disponibilidade do Controlador Cisco CSS, consulte Exemplos.
Para obter exemplos de configuração de alta disponibilidade do Controlador Nortel Alteon, consulte Exemplos.
A função do controlador do Balanceador de Carga executa balanceamento de carga com base nas seguintes configurações:
É possível alterar essas configurações para otimizar o balanceamento de carga de sua rede.
O controlador pode usar alguns ou todos os coletores de métrica a seguir em suas tomadas de decisões de peso:
As métricas padrão são activeconn e connrate.
É possível alterar a proporção relativa de importância dos valores de métrica. Pense nas proporções como porcentagens; a soma das proporções relativas deve ser igual a 100%. Por padrão, as métricas de conexões ativas e as novas conexões são usadas e suas proporções são configuradas como 50/50. Em seu ambiente, talvez seja necessário tentar combinações de proporção de métrica diferentes para localizar a combinação que fornece o melhor desempenho.
Para configurar valores de proporção:
Pesos são configurados com base na disponibilidade e no tempo de resposta do aplicativo, no feedback dos orientadores e no feedback de um programa de monitoramento de sistema, como Metric Server. Se quiser configurar pesos manualmente, especifique a opção fixedweight para o servidor. Para obter uma descrição da opção fixedweight, consulte Pesos Fixos do Controlador.
Pesos são aplicados a todos os servidores que fornecem um serviço. Para qualquer serviço específico, as solicitações são distribuídas entre servidores baseados em seus pesos relativos entre si. Por exemplo, se um servidor for configurado para um peso 10 e outro servidor para o peso 5, o servidor configurado para 10 deverá ter o dobro de pedidos que o servidor configurado para 5.
Se um orientador achar que um servidor ficou inativo, o peso do servidor será configurado como -1. Para Controlador Cisco CSS e Controlador Nortel Alteon, o comutador é informado de que o servidor não está disponível e para de designar conexões ao servidor.
Sem o controlador, orientadores não podem ser executados e nem detectar se um servidor está inativo. Se você optar por executar os orientadores, mas não quiser que o controlador atualize o peso configurado para um determinado servidor, use a opção fixedweight no comando ccocontrol service para Controlador Cisco CSS ou o comando nalcontrol server para Controlador Nortel Alteon.
Use o comando fixedweight para configurar o peso para o valor desejado. O valor do peso do servidor permanece fixo enquanto o controlador está em execução até que seja emitido outro comando com a opção fixedweight configurada como não.
Para otimizar o desempenho geral, é possível restringir com que frequência as métricas são coletadas.
O tempo de hibernação do consultor especifica com que frequência o consultor atualiza os pesos do servidor. Se o tempo de hibernação do consultor for muito baixo, isso pode significar baixo desempenho como resultado da ação do consultor de interromper constantemente o comutador. Se o tempo de hibernação do consultor for muito alto, isso pode significar que o balanceamento de carga do comutador não é baseado em informações exatas e atualizadas.
Por exemplo, para configurar o tempo de hibernação do consultor para 1 segundo:
xxxcontrol consultant set consultantID sleeptime interval
Outros métodos estão disponíveis para que você otimize o balanceamento de carga para seus servidores. Para trabalhar com alta velocidade, as atualizações dos pesos para os servidores são feitas apenas se os pesos forem alterados significativamente. Atualizando os pesos constantemente quando houver pequena ou nenhuma mudança no status do servidor, será criada uma sobrecarga desnecessária. Quando a mudança de peso da porcentagem para o peso total para todos os servidores fornecendo um serviço é maior que o limite de sensibilidade, os pesos usados pelo balanceador de carga para distribuir conexões são atualizados. Considere, por exemplo, que o peso total das alterações é alterado de 100 para 105. A mudança é 5%. Com o limite de sensibilidade padrão de 5, os pesos usados pelo balanceador de carga não são atualizados, pois a mudança de porcentagem não está acima do limite. Se, no entanto, o peso total mudar de 100 para 106, os pesos serão atualizados. Para configurar o limite de sensibilidade do consultor para um valor diferente do padrão, insira o seguinte comando:
xxxcontrol consultant set consultantID sensitivity percentageChange
Na maioria dos casos, você não precisará alterar esse valor.
Orientadores são agentes dentro do Balanceador de Carga. Seu propósito é avaliar o funcionamento e o carregamento das máquinas servidores. Eles fazem isso por meio de uma troca do tipo cliente proativa com os servidores. Considere os orientadores como clientes leves dos servidores de aplicativos.
Os orientadores abrem periodicamente uma conexão TCP com cada servidor e enviam uma mensagem de pedido para o servidor. O conteúdo da mensagem é específico para o protocolo que é executado no servidor. Por exemplo, o orientador HTTP envia um pedido de HTTP "HEAD" ao servidor.
Os orientadores então atendem a uma resposta a partir do servidor. Depois de obter a resposta, o orientador faz uma avaliação do servidor. Para calcular esse valor de carregamento, a maioria dos orientadores mede o tempo para o servidor responder e, em seguida, usa esse valor (em milissegundos) como o carregamento.
Depois os orientadores relatam o valor do carregamento para a função do consultor, onde ele aparece no relatório do consultor. O consultor então calcula valores de peso agregados de todas as suas origens, por proporção, e envia esses valores de peso para o comutador. O comutador usa esses pesos para o balanceamento de carga de novas conexões do cliente recebidas.
Se o orientador determinar que um servidor está ativo e bem, ele relata um número de carregamento positivo diferente de zero para o consultor. Se o orientador determinar que o servidor não está ativo, ele retorna um valor de carregamento especial igual a um negativo (-1) para informar o comutador de que o servidor está inativo. Subsequentemente, o comutador não encaminha nenhuma conexão adicional para esse servidor até que ele fique ativo novamente.
O tempo de hibernação do orientador configura com que frequência um orientador solicita o status dos servidores na porta em que está monitorando e relata os resultados para o consultor. Se o tempo de hibernação do orientador for muito baixo, isso pode resultar em baixo desempenho porque o orientador interrompe constantemente os servidores. Se o tempo de hibernação do orientador for muito alto, isso pode significar que as decisões sobre peso do consultor não são baseadas em informações exatas e atualizadas.
Por exemplo, para configurar o intervalo para 3 segundos para o orientador HTTP, digite o seguinte comando:
xxxcontrol metriccollector set consultantID:HTTP sleeptime 3
É possível configurar a quantidade de tempo que o orientador leva para detectar que uma determinada porta no servidor ou serviço falhou. Valores de tempo limite do servidor com falha, connecttimeout e receivetimeout, determinam quanto tempo um orientador espera antes de relatar que uma conexão ou um recebimento falhou.
Para obter o servidor com falha mais rápido detecção, configure os tempos limites de conexão e recebimento do orientador como o menor valor (um segundo) e configure o tempo de intervalo do orientador e do consultor como o menor valor (um segundo).
Para configurar timeoutconnect para 9 segundos para o orientador HTTP, digite o seguinte comando:
xxxcontrol metriccollector set consultantID:HTTP timeoutconnect 9
O padrão para os tempos limite de conexão e de recebimento é 3 vezes o valor especificado para o tempo de hibernação do orientador.
Os orientadores têm a habilidade de tentar novamente uma conexão antes de marcar um servidor como inativo. O orientador não marcará um servidor como inativo até que a consulta do servidor tenha falhado o número de vezes de novas tentativas mais 1. Se não estiver configurado, o valor de novas tentativas será padronizado como zero.
Para o Cisco CSS Controller, configure o valor de nova tentativa usando o comando ccocontrol ownercontent set. Para obter informações adicionais, consulte ccocontrol ownercontent — controlar o nome do proprietário e a regra de conteúdo.
Para o Nortel Alteon Controller, configure o valor de nova tentativa usando o comando nalcontrol service set. Para obter informações adicionais, consulte nalcontrol service — configurar um serviço.
O orientador customizado (customizável) é uma pequena parte de código Java fornecida como um arquivo de classe e chamada pelo código base. O código base fornece todos os serviços administrativos, como:
Ele também relata resultados para o consultor. Periodicamente, o código base executa um ciclo do orientador, em que avalia individualmente todos os servidores em sua configuração. Ele começa abrindo uma conexão com uma máquina servidor. Se o soquete abrir, o código base chama o método getLoad (função) no orientador customizado. O orientador customizado então executa as etapas necessárias para avaliar o funcionamento do servidor. Tipicamente, ele envia uma mensagem definida pelo usuário para o servidor e aguarda uma resposta. (O acesso ao soquete aberto é fornecido ao orientador customizado.) O código base então fecha o soquete com o servidor e relata as informações de carregamento ao consultor.
O código base e o orientador customizado podem operar no modo normal ou de substituição. A escolha do modo de operação é especificada no arquivo do orientador customizado como um parâmetro no método do construtor.
No modo normal, o orientador customizado troca dados com o servidor e o código do orientador base determina o tempo da troca e calcula o valor de carregamento. O código base então relata esse valor de carregamento para o consultor. O orientador customizado só precisa retornar um zero (êxito) ou um 1 negativo (erro). Para especificar o modo normal, o sinalizador de substituição no construtor é configurado como false.
No modo de substituição, o código base não executa nenhuma medida de tempo. O código do orientador customizado executa quaisquer operações desejadas para seus requisitos exclusivos e retorna um número de carregamento real. O código base aceitará o número e o relatará para o consultor. Para obter os melhores resultados, normalize seu número de carregamentos entre 10 e 1000, sendo que 10 representa um servidor rápido e 1000 representa um servidor lento. Para especificar o modo de substituição, o sinalizador de substituição no construtor é configurado como true.
Com esse recurso, é possível gravar seus próprios orientadores para fornecer informações precisas sobre os servidores necessários. Um orientador customizado de amostra, ADV_ctlrsample.java, é fornecido para os controladores. Após instalar o Balanceador de Carga, é possível localizar o código de amostra em:
O nome do arquivo do orientador customizado deve estar no formato ADV_myadvisor.java. Ele deve começar com o prefixo ADV_ em maiúscula. Todos os caracteres subsequentes devem estar em letras minúsculas.
Assim como por convenções Java, o nome da classe definida no arquivo deve corresponder ao nome do arquivo. Se você copiar o código de amostra, certifique-se de alterar todas as instâncias de ADV_ctrlsample dentro do arquivo para o novo nome de classe.
Orientadores customizados são gravados em linguagem Java. Use o compilador Java instalado com o Balanceador de Carga. Os seguintes arquivos são referidos durante a compilação:
Seu caminho de classe deve apontar para o arquivo do orientador customizado e arquivo de classe base durante a compilação.
Para plataforma Windows, um comando de compilação pode ser semelhante a este:
install_dir/java/bin/javac -classpath <install_root>ibm\edge\lb\servers\lib\ibmlb.jar ADV_pam.java
onde:
A saída para a compilação é um arquivo de classe; por exemplo:
ADV_pam.class
Antes de iniciar o orientador, copie o arquivo de classe para o seguinte diretório:
Para sistemas AIX, HP-UX, Linux e Solaris, a sintaxe é semelhante.
Para executar o orientador customizado, primeiro você deve copiar o arquivo de classe no diretório de instalação adequado:
Inicie o consultor e emita este comando para iniciar o orientador customizado:
onde:
Como todos os orientadores, um orientador customizado estende a função da base do orientador, chamada ADV_Base. É a base do orientador que executa de fato a maioria das funções do orientador, como relatar carregamentos de volta para o consultor para ele usar em seu algoritmo de peso. O orientador base também executa operações de conexão e de fechamento de soquete e fornece métodos de envio e de recebimento para uso pelo orientador. O orientador em si é usado apenas para enviar e receber dados para e da porta no servidor sendo avisado. Os métodos TCP na base do orientador são sincronizados para calcular o carregamento. Um sinalizador no construtor em ADV_base sobrescreve o carregamento existente com um novo carregamento retornado do orientador, se desejado.
Estes são os métodos de classe base:
Os controladores olham primeiro a lista fornecida de orientadores nativos; se não encontrarem um determinado orientador lá, eles olham a lista de orientadores customizados.
A listagem de programas para um orientador de amostra de controlador está incluída em Orientador de Amostra. Após a instalação, esse orientador de amostra pode ser localizado no seguinte diretório:
O Metric Server fornece informações de carregamento do servidor para o Balanceador de Carga no formulário de métricas específicas ao sistema, relatando no funcionamento dos servidores. O consultor do Balanceador de Carga consulta o agente Metric Server que reside em cada um dos servidores, designando pesos ao processo de balanceamento de carga usando métricas reunidas dos agentes. Os resultados também são colocados no relatório de serviço para Controlador Cisco CSS ou relatório de servidor para Controlador Nortel Alteon.
O agente Metric Server deve ser instalado e em execução em todos os servidores que estão tendo a carga balanceada.
Abaixo estão as etapas para configurar o Metric Server para os controladores.
Para Controlador Nortel Alteon, inclua um consultor de comutador e inclua um serviço.
em que metricName é o nome do script de servidor de métrica.
O script de métrica do sistema reside no servidor backend e é executado em cada um dos servidores na configuração sob o ownercontent ou service especificado. Dois scripts, cpuload e memload, são fornecidos, ou é possível criar scripts de métricas do sistema customizados. O script contém um comando que deve retornar um valor numérico. Esse valor numérico representa a medida de um carregamento, e não um valor de disponibilidade.
Limitação: Para sistemas Windows, se o nome do script de métrica do sistema tiver uma extensão diferente de .exe, você deverá especificar o nome completo do arquivo; por exemplo, mySystemScript.bat. Essa é uma limitação do código Java.
Opcionalmente, é possível gravar seus próprios arquivos de script de métrica customizados que definem o comando que o Metric Server emitirá em máquinas servidores. Certifique-se de que qualquer script customizado seja executável e esteja localizado no seguinte diretório:
Para que o Metric Server seja executado em um endereço diferente do host local, edite o arquivo metricserver na máquina servidor com carga balanceada. Após java no arquivo metricserver, insira o seguinte:
-Djava.rmi.server.hostname=OTHER_ADDRESS
Além disso, antes de instruções "if" no arquivo metricserver, inclua isto: hostname OTHER_ADDRESS.
Para sistemas Windows: Crie um alias para OTHER_ADDRESS na pilha da Microsoft. Para criar um alias para um endereço na pilha da Microsoft, consulte a seção sobre como criar um alias para um endereço na pilha da Microsoft para um servidor de métrica.
WLM é o código executado nos mainframes MVS. Ele pode ser consultado para perguntar sobre o carregamento na máquina MVS.
Quando o MVS Workload Management for configurado em seu sistema OS/390, os controladores poderão aceitar informações de capacidade do WLM e usá-las no processo de balanceamento de carga. Usando o orientador WLM, os controladores abrem conexões periodicamente por meio da porta do WLM em cada servidor na tabela de host do consultor e aceitam os números inteiros de capacidade retornados. Como esses números inteiros representam a quantidade de capacidade que ainda está disponível e os consultores esperam valores representando as cargas em cada máquina, os números inteiros de capacidade são invertidos pelo orientador e normalizados em valores de carga (por exemplo, um número inteiro de capacidade grande, mas com um valor de carga pequeno representam um servidor mais funcional). Há várias diferenças importantes entre o orientador WLM e outros orientadores de controlador:
O recurso de criação de log binário permite que as informações do servidor sejam armazenadas em arquivos binários. Esses arquivos podem ser processados para analisar as informações do servidor que foram reunidas ao longo do tempo.
As seguintes informações são armazenadas no log binário para cada servidor definido na configuração.
O consultor deve estar em execução para registrar informações nos logs binários.
Use o conjunto de comandos xxxcontrol consultant binarylog para configurar a criação de logs binários.
A opção Iniciar inicia as informações do servidor de criação de log para logs binários no diretório de logs. Um log é criado no início de cada hora com a data e hora conforme o nome do arquivo.
A opção Parar para as informações do servidor de criação de log para os logs binários. Por padrão, o serviço de log é interrompido.
A opção Configurar Intervalo controla a frequência com que as informações são gravadas nos logs. O consultor envia informações do servidor para o servidor de log a cada intervalo do consultor. As informações são gravadas nos logs apenas se os segundos do intervalo de log especificado tiverem decorridos desde quando o último registro foi gravado no log. Por padrão, o intervalo de log é configurado como 60 segundos.
Há uma certa interação entre as configurações de intervalo do consultor e o intervalo de log. Como o servidor de log recebe informações não mais rápido que os segundos do intervalo do consultor, a configuração do intervalo de log abaixo do intervalo do consultor o configura efetivamente para o mesmo intervalo do consultor.
Essa técnica de criação de log permite capturar informações do servidor em qualquer granularidade. É possível capturar todas as mudanças nas informações do servidor que são vistas pelo consultor para calcular pesos do servidor; no entanto, essa quantidade de informações provavelmente não é necessária para a análise de uso e tendências do servidor. Criar o log de informações do servidor a cada 60 segundos fornece capturas instantâneas de informações do servidor ao longo do tempo. Configurar o intervalo de log muito baixo pode gerar altas quantias de dados.
A opção Configurar Retenção controla quanto tempo os arquivos de log são mantidos. Os arquivos de log, mais antigos do que as horas de retenção especificadas, são excluídos pelo servidor de log. Isso só ocorre se o servidor de log estiver sendo chamado pelo consultor, portanto, se você parar o consultor, os arquivos de log antigos não serão excluídos.
Um programa Java de amostra e um arquivo de comando são fornecidos no seguinte diretório:
Essa amostra mostra como recuperar todas as informações a partir dos arquivos de log e imprimí-las na tela. Ela pode ser customizada para efetuar qualquer tipo de análise que desejar com os dados.
A seguir está um exemplo usando o script e o programa fornecidos:
xxxlogreport 2002/05/01 8:00 2002/05/01 17:00
Isso produz um relatório das informações do servidor do controlador das 8h às 17h em 1 de maio de 2002.
O Balanceador de Carga fornece saídas de usuários que acionam scripts que podem ser customizados. É possível criar os scripts para executar ações automatizadas, como alertar um Administrador quando servidores forem marcados como inativos ou simplesmente para registrar o evento de falha. Scripts de amostra, que você pode customizar, estão no seguinte diretório:
Para executar os arquivos, copie-os para o seguinte diretório, e renomeie cada arquivo de acordo com as direções contidas no script:
Os scripts de amostra a seguir são fornecidos, em que xxx é cco para Controlador Cisco CSS e nal para Controlador Nortel Alteon: