Um cookie é definido no navegador, não em um servidor. Ele é restrito a um domínio e, opcionalmente, a um caminho específico na URL. Portanto, contanto que os dois servidores sejam acessados pelo mesmo domínio, o cookie estará lá.
Se um cookie apontar para uma sessão, então é necessário que tanto o servidor1 quanto o servidor2 tenham acesso a essa sessão de alguma forma. Se as sessões não puderem ser compartilhadas entre os servidores, você precisará forçar um usuário a persistir em um servidor específico. Isso pode ser facilmente realizado com DNS e um pouco de mágica de reescrita de URL:
- www.example.com aponta para os dois servidores.
- www1.example.com aponta apenas para server1
- www2.example.com aponta apenas para server2
Usando um conjunto de regras de reconfiguração simples (ish) e um cookie, o usuário pode ser bloqueado para um determinado servidor, garantindo que a sessão dele persista.
Aqui estão mais alguns detalhes.
DNS:
- example.com A 1.1.1.1, A 2.2.2.2
- www.example.com NS example.com
- www1.example.com A 1.1.1.1
- www2.example.com A 2.2.2.2
Reescreva as regras:
- cookie de persistência: "backend"
- conexão inicial: "backend" não definido, defina "backend" para www1 ou www2, dependendo de qual servidor respondeu e redirecionou para esse servidor. O cookie deve ser definido para o domínio "example.com", desta forma, será carregado em www1 e www2
- Se "backend" estiver definido, assegure-se de que seu valor corresponda à instância do servidor e redirecione, se necessário.
- Verifique se o cookie da sessão está definido no nome completo do domínio do servidor - ou seja, www1.example.com ou www2.example.com
A lógica de reescrita deve ser definida no próprio servidor web. Todos os servidores web modernos possuem linguagens de reescrita com muitos recursos que são totalmente capazes de implementar essa funcionalidade.