Eu não posso falar especificamente sobre glassfish, mas é normal construir sistemas LB resistentes a falhas com um par de LBs, dos quais apenas um está ativo a qualquer momento.
Se os LBs forem applicances, isso é feito em hardware - você terá um par, geralmente com alguma conexão direta entre os dois, para monitoramento / heartbeat e às vezes para troca de estado. Se o LB for baseado em software e for executado em um dos nós balanceados, é bastante normal executar o segundo LB em outro nó do pool.
Garantir que um e apenas um LB seja executado em um determinado momento é importante e não pode ser facilmente abordado aqui. Particularmente para soluções baseadas em software, uma boa implementação e hardware apropriado do STONITH pode realmente ajudar com isso.
Editar re seu comentário: eu levo o seu ponto, mas não. Geralmente, a maneira como isso é feito é ter uma infraestrutura que esteja ciente de que uma e apenas uma instância de algo - nesse caso, um LB - deve estar em execução e usar um endereço IP flutuante para manipular o failover entre os dois. No software, no Linux, isso geralmente é feito com algo como LinuxHA e CRM, sendo executado em nós de LB primário e secundário, o que lida com o negócio de garantir que apenas um nó execute o processo LB e ter certeza de que o primário está morto se decide promover o secundário.