Red Hat Cluster Suite: Configurando e Administrando um Cluster | ||
---|---|---|
Anterior | Capítulo 9. Visão Geral do Servidor Virtual Linux | Próxima |
Uma das vantagens de usar um cluster LVS é sua habilidade em executar o balanceamento flexível de carga ao nível IP no conjunto de servidores reais. Esta flexibilidade se deve à variedade de algoritmos de scheduling que um administrador pode escolher ao configurar um cluster. O balanceamento de carga LVS é superior aos métodos menos flexíveis, como o DNS Round-Robin, onde a natureza hierárquica do DNS e a memória cache de máquinas cliente pode causar o desequilíbrio de carga. Adicionalmente, a filtragem de baixo nível empregada pelo roteador LVS tem vantagens sobre o encaminhamento de pedidos ao nível da aplicação, porque balancear cargas ao nível do pacote de rede causa sobrecarga mínima do computador e permite maior escalabilidade.
Ao usar o scheduling, o roteador ativo pode considerar as atividades dos servidores reais e, opcionalmente, o fator peso atribuído pelo administrador ao rotear pedidos de serviços. Usar pesos atribuídos proporciona prioridades arbitrárias para máquinas individuais. Usando esta forma de agendamento, é possível criar um grupo de servidores reais usando uma variedade de combinações de hardware e software, e o roteador ativo pode inclusive carregar cada servidor real.
O mecanismo de scheduling de um cluster LVS é provido por um conjunto de consertos do kernel chamado Servidor IP Virtual ou módulos IPVS. Estes módulos possibilitam a função de comutação da camada de transporte da camada 4 (L4, layer 4), que é desenvolvida para funcionar bem com múltiplos servidores em um único endereço IP.
Para rastrear e direcionar pacotes eficientemente aos servidores reais, o IPVS cria uma tabela IPVS no kernel. Esta tabela é usada pelo roteador LVS ativo para redirecionar pedidos de um endereço de servidor virtual para e retornando de servidores reais no conjunto. A tabela IPVS é atualizada constantemente por um utilitário chamado ipvsadm — adicionando e removendo membros do cluster, dependendo de suas disponibilidades.
A estrutura da tabela IPVS depende do algoritmo de scheduling que o administrador escolhe para um dado servidor virtual. Para permitir a máxima flexibilidade nos tipos de serviço que você pode clusterizar e em como estes serviços são agendados, o Red Hat Enterprise Linux oferece os algoritmos de agendamento listados abaixo. Para instruções sobre a atribuição de algoritmos de agendamento, consulte a Seção 12.6.1.
Distribui cada pedido sequencialmente ao longo do conjunto de servidores reais. Ao utilizar este algoritmo, todos os servidores reais são tratados igualmente sem considerar a capacidade ou carga. Este modelo de scheduling assemelha-se ao DNS round-robin, mas é mais granular devido ao fato de ser baseado em uma conexão de rede e não baseado na máquina. O scheduling round-robin do LVS também não sofre os desequilíbrios causados por pedidos DNS na memória cache.
Distribui cada pedido sequencialmente ao longo do conjunto de servidores reais, mas atribui mais tarefas aos servidores com maior capacidade. A capacidade é indicada pelo fator peso atribuído pelo usuário, que por sua vez é ajustado para cima ou para baixo pela informação de carga dinâmica. Consulte a Seção 9.3.2 para mais informações sobre a pesagem de servidores reais.
O Weighted weighted round-robin é a melhor opção se há diferenças significativas entre as capacidades dos servidores reais no conjunto. Entretanto, se a carga dos pedidos varia drasticamente; quanto mais carga o servidor responder maior será sua porção de pedidos.
Distribui mais pedidos a servidores reais com menos conexões ativas. Como acompanha as conexões ativas aos servidores reais através da tabela IPVS, o least-connection é um tipo de algoritmo de scheduling dinâmico, tornando-o uma opção melhor se há uma grande variação da carga de pedidos. É mais indicado para um conjunto de servidores reais, no qual cada nódulo do membro tem aproximadamente a mesma capacidade. Se um grupo de servidores tem capacidades diferentes, o agendamento weighted least-connection é uma opção melhor.
Distribui mais pedidos aos servidores com menos conexões ativas relativamente às suas capacidades. A capacidade é indicada pelo peso atribuído pelo usuário, que então é ajustado para cima ou para baixo por informações de carga dinâmica. A adição de pesagem torna este algoritmo ideal para um conjunto de servidores reais que contém hardware com capacidades variadas. Consulte a Seção 9.3.2 para saber mais sobre a pesagem de servidores reais.
Distribui mais pedidos aos servidores com menos conexões ativas relativamente aos seus IPs de destino. Este algoritmo é desenvolvido para uso em um cluster de servidor proxy-cache. Ele direciona os pacotes de um endereço IP para o servidor com o mesmo endereço, a não ser que este servidor esteja acima de sua capacidade e haja um servidor usando metade de sua carga. Neste caso atribui o endereço IP ao servidor real menos carregado.
Distribui mais pedidos aos servidores com menos conexões ativas em relação aos seus IPs de destino. Este algoritmo também é desenvolvido para uso em um cluster de servidor proxy-cache. Este difere do Scheduling Least-Connection Baseado na Localidade mapeando o endereço IP alvo para um sub-conjunto de nódulos de servidores reais. Os pedidos são então direcionados ao servidor deste conjunto com o menor número de conexões. Se todos os nódulos para o IP de destino estão acima da capacidade, ocorre uma duplicação de um novo servidor para aquele endereço IP de destino, adicionando o servidor real com menos conexões dentre todo o conjunto ao sub-conjunto de servidores reais para aquele IP de destino. E então, o nódulo mais carregado é derrubado do sub-conjunto de servidores reais para evitar super-duplicação.
Distribui pedidos ao conjunto de servidores reais procurando o IP de destino em uma tabela hash estática. Este algoritmo é atrbuído para o uso em um cluster de servidor proxy-cache.
Distribui pedidos ao conjunto de servidores reais procurando o IP fonte em uma tabela hash estática. Este algoritmo é desenvolvido para roteadores LVS com firewalls múltiplos.
O administrador de um cluster LVS pode atribuir um peso (weight) para cada nódulo do conjunto de servidores reais. Este peso é um valor inteiro que é fracionado em algoritmos de scheduling weight-aware (como weighted least-connections) e ajuda o roteador LVS a carregar uniformemente o hardware com capacidades diferentes.
Pesos funcionam como uma proporção relativa de um para outro. Por exemplo: se um servidor real tem peso 1 e o outro servidor tem peso 5, então o servidor com peso 5 recebe 5 conexões para cada conexão que o outro servidor recebe. O valor default do peso de um servidor real é 1.
Apesar da adição de peso a configurações variadas de hardware em um conjunto real de servidores ajudar a balancear a carga do cluster com mais eficiência, pode causar desequilíbrios temporários quando um servidor real é inserido ao conjunto e o servidor virtual é agendado usando weighted least-connections. Por exemplo: suponha que há três servidores reais no conjunto. Servidores A e B têm peso 1 e o servidor C tem peso 2. Se o servidor C cair por algum motivo, os servidores A e B distribuem uniformemente a carga abandonada. No entanto, quando o servidor C voltar, o roteador LVS percebe que este tem zero conexões e inunda o servidor com todos os pedidos que entram até que se equipare aos servidores A e B.
Para evitar este fenômeno, os administradores podem fazer do servidor virtual um servidor quiesce — toda vez que um novo nódulo de servidor real vier online, a tabela de least-connections é restaurada para zero e o roteador LVS direciona os pedidos como se todos os servidores estivessem sido recém adicionados ao cluster.