O balanceamento de carga de rede é a distribuição de tráfego com base em variáveis de rede, como endereço IP e portas de destino. É a camada 4 (TCP) e abaixo e não foi projetada para levar em consideração qualquer coisa na camada do aplicativo, como tipo de conteúdo, dados de cookie, cabeçalhos personalizados, localização do usuário ou o comportamento do aplicativo. É sem contexto, preocupando-se apenas com as informações da camada de rede contidas nos pacotes que ele está direcionando de um jeito ou de outro.
O balanceamento de carga do aplicativo é a distribuição de solicitações com base em várias variáveis, da camada de rede até a camada do aplicativo. É sensível ao contexto e pode direcionar solicitações com base em qualquer variável simples tão facilmente quanto uma combinação de variáveis. Os aplicativos são balanceados por carga com base em seu comportamento peculiar e não apenas nas informações do servidor (sistema operacional ou camada de virtualização).
A diferença entre os dois é importante porque o balanceamento de carga de rede não pode garantir a disponibilidade do aplicativo. Isso ocorre porque baseia suas decisões apenas em variáveis de rede e camada TCP e não tem nenhum conhecimento do aplicativo. Geralmente, um balanceador de carga de rede determinará a “disponibilidade” com base na capacidade de um servidor responder ao ping ICMP ou concluir corretamente o handshake TCP de três vias. Um balanceador de carga de aplicativos é muito mais profundo e é capaz de determinar a disponibilidade com base não apenas em um HTTP GET bem-sucedido de uma determinada página, mas também na verificação de que o conteúdo é conforme esperado com base nos parâmetros de entrada.
Isso também é importante observar ao considerar a implantação de vários aplicativos nos mesmos endereços IP de compartilhamento de host (hosts virtuais no speak antigo do skool). Um balanceador de carga de rede não diferenciará entre o Aplicativo A e o Aplicativo B ao verificar a disponibilidade (na verdade, ele não pode, a menos que as portas sejam diferentes), mas um balanceador de carga de aplicativos diferenciará os dois aplicativos examinando os dados da camada de aplicativo disponíveis. Essa diferença significa que um balanceador de carga de rede pode acabar enviando solicitações para um aplicativo que caiu ou está offline, mas um balanceador de carga de aplicativos nunca cometerá o mesmo erro.
Referência:
Balanceamento de carga de rede versus balanceamento de carga de aplicativos