Existem três maneiras comuns de fazer isso:
Primeiro, você pode alterar a lógica de encaminhamento do balanceador de carga (acompanhar o número de conexões para cada host e tentar distribuir a carga uniformemente, executar um round-robin simples etc.). Qualquer uma das opções mencionadas elimina a natureza determinística da sua configuração atual (os clientes do IP X não vão mais ao servidor Y), o que também elimina (ou reduz) o seu problema.
Note that you want to implement "sticky sessions" or their equivalent so that once a client is randomly assigned to a back-end server they keep going to the same one as long as their connection is active.
Em segundo lugar, você pode descriptografar as informações, ler alguns identificadores de servidor e, em seguida, passá-las para fora (criptografá-las novamente ou transmiti-las à clareza pela rede de back-end). Observe que isso não é realmente prático em larga escala, a menos que seu hardware de balanceamento de carga seja acelerado por SSL (por exemplo, um switch de conteúdo da Cisco com módulos SSL), pois o dispositivo para o qual você canaliza todo o tráfego precisa ser ALL o trabalho SSL.
Per note in the original question, #2 is probably not an option since the traffic needs to be kept encrypted end-to-end (sounds like decrypting on the load balancer would be a policy violation?)
O terceiro método que eu não recomendo: Configurar DNS split-horizon ou round-robin para o servidor de destino (apontando diretamente para um servidor de back-end ou apontando para IPs separados no balanceador de carga que estão estaticamente vinculados a um back-end, ter pools de balanceamento diferentes etc.) - Isso é bastante comum em operações menores como "balanceamento de carga do gueto", mas na sua situação (onde você já tem um equipamento de balanceamento de carga) adiciona complexidade desnecessária em comparação com as outras soluções.