Persistência de Sessão do Serviço Load Balancer
Use a persistência da sessão com um balanceador de carga para direcionar todas as solicitações originadas de um único cliente lógico para um único servidor Web de backend.
A persistência de sessão é um método para direcionar todas as solicitações originadas de um único cliente lógico para um único servidor web de backend. Os servidores de backend que usam armazenamento no cache para melhorar o desempenho ou para permitir sessões de log-in ou carrinhos de compras podem se beneficiar da persistência de sessão.
Você ativa a persistência de sessão ao criar um balanceador de carga ou ao criar um conjunto de backend. Você também pode editar um conjunto de backend existente para ativar, desativar ou alterar a configuração de persistência de sessão.
Cookies Persistentes
O serviço Load Balancer oferece duas configurações mutuamente exclusivas baseadas em cookie para ativar a persistência de sessão:
Persistência de Sessão Orientada por Endereço IP
Alguns produtos oferecem suporte à persistência de sessão sem cookies. Esses produtos dependem do endereço IP da solicitação recebida. Os proxies ISP e os gateways de saída da empresa podem emitir muitas solicitações de um único endereço IP. Nesse caso, um único servidor de backend pode estar sujeito a altos volumes de tráfego. A sua configuração de backend pode se tornar sobrecarregada, um servidor por vez, embora seja possível um balanceamento de carga efetivo.
Outro ponto fraco da persistência de sessão baseada em endereço IP é que o endereço IP de origem pode mudar. Nesse caso, a persistência de sessão pode ser perdida ou a solicitação pode ser redirecionada ao servidor de backend incorreto.
Persistência de Cookie do Aplicativo
Para configurar a persistência de sessão de cookie do aplicativo, especifique um nome de cookie e decida se deseja desativar o fallback para servidores indisponíveis.
O serviço do Balanceador de Carga ativa a persistência da sessão de cookie do aplicativo (atenção) quando um servidor de backend envia um cabeçalho da resposta Set-Cookie
contendo um nome reconhecido de cookie. O nome do cookie deve corresponder ao nome especificado na configuração do conjunto de backend. Se a configuração especificar um padrão de correspondência match-all, '*', qualquer cookie definido pelo servidor ativará a persistência de sessão. A menos que um servidor de backend ative a persistência de sessão, o serviço seguirá a política de balanceamento de carga especificada durante a criação do balanceador de carga.
Requisitos:
- O seu balanceador de carga deve operar no modo HTTP para suportar a persistência de sessão baseada em cookie no lado do servidor.
- O computador cliente deve aceitar cookies para que a funcionalidade de persistência de sessão do serviço Load Balancer funcione.
O serviço do Balanceador de Carga calcula um hash do cookie configurado e de outros parâmetros de solicitação e envia esse valor ao cliente em um cookie. O valor armazenado no cookie permite que o serviço roteie solicitações posteriores do cliente para o servidor de backend correto. Se os seus servidores de backend alterarem qualquer um dos cookies definidos, o serviço recalculará o valor do cookie e o reenviará ao cliente.
Recomendamos que você trate os dados do cookie como uma entidade opaca. Não use-o em seus aplicativos.
O servidor de backend pode interromper a persistência de cookie do aplicativo excluindo o cookie de persistência de sessão. Caso você tenha usado o padrão match-all, todos os cookies deverão ser excluídos. Você pode excluir cookies enviando um cabeçalho de resposta Set-Cookie
com uma data de expiração já passada. O serviço do Balanceador de Carga roteia solicitações posteriores usando a política configurada de balanceamento de carga.
Persistência de Cookie do Balanceador de Carga
Quando você configura a persistência de cookie do balanceador de carga, o balanceador de carga insere um cookie na resposta. Os parâmetros configurados no cookie permitem a persistência de sessão. Esse método é útil quando você tem aplicativos e serviços de back-end da Web que não podem gerar seus próprios cookies.
Para configurar a persistência de sessão de cookie do balanceador de carga, especifique:
- O nome do cookie.
Se você Não especificar um nome de cookie, o nome padrão será
X-Oracle-BMC-LBS-Route
.Observação
Verifique se o nome de cookie usado nos servidores do aplicativo de back-end é diferente do nome de cookie usado no balanceador de carga. Para minimizar a chance de colisão de nome, Recomendamos que você use um prefixo comoX-Oracle-OCI-
.Se um servidor de backend e o balanceador de carga inserirem cookies com o mesmo nome, o comportamento do cliente ou do browser poderá variar, dependendo do valor do domínio associado ao cookie. Se os valores de nome e domínio do cabeçalho
Set-cookie
(gerados por um servidor de backend) e o cabeçalhoSet-cookie
(gerado pelo balanceador de carga) forem iguais, o cliente ou o browser vai tratá-los como um único cookie. O cliente retorna apenas um dos valores do cookie em solicitações posteriores. Se ambos os nomesSet-cookie
forem iguais, mas os nomes do domínio forem distintos, o cliente ou o browser vai tratá-los como dois cookies distintos - O domínio no qual o cookie é válido. O cabeçalho
Set-cookie
inserido pelo balanceador de carga contém um atributo de domínio com o valor especificado.Esse atributo não tem valor padrão. Se você nao especificar um valor, o balanceador de carga nao inserirá o atributo de domínio no cabeçalho
Set-cookie
.Observação
- RFC 6265 - Mecanismo de Gerenciamento de Estado HTTP descreve o comportamento do cliente e do browser quando o atributo de domínio está ou não presente no cabeçalho
Set-cookie
.Se o valor do atributo
Domain
forexample.com
no cabeçalhoSet-cookie
, o cliente incluirá o mesmo cookie no cabeçalhoCookie
ao fazer solicitações HTTP paraexample.com
,www.example.com
ewww.abc.example.com
. Se o atributoDomain
não for presente, o cliente retornará o cookie somente para o domínio para o qual a solicitação original foi feita. - Certifique-se de que esse atributo especifique o valor de domínio correto. Se o atributo
Domain
no cabeçalhoSet-cookie
não incluir o domínio para o qual a solicitação original foi feita, o cliente ou navegador poderá rejeitar o cookie. Conforme especificado na RFC 6265, o cliente aceita um cookie com o atributoDomain
igual aexample.com
ouwww.example.com
enviado porwww.example.com
. Ela não aceita um cookie com o atributoDomain
abc.example.com
ouwww.abc.example.com
enviado dowww.example.com
.
- RFC 6265 - Mecanismo de Gerenciamento de Estado HTTP descreve o comportamento do cliente e do browser quando o atributo de domínio está ou não presente no cabeçalho
- O caminho do URI no qual o cookie é válido. O cabeçalho
Set-cookie
inserido pelo balanceador de carga contém um atributoPath
com o valor especificado.Os clientes só incluem o cookie em uma solicitação HTTP se a parte do caminho do
request-uri
corresponder ao atributoPath
do cookie ou for um subdiretório desse atributo.O valor padrão é `/`.
- O tempo que o cookie permanece válido. O cabeçalho
Set-cookie
inserido pelo balanceador de carga contém um atributoMax-Age
com o valor especificado.O valor especificado deve ser pelo menos um segundo. Não existe valor padrão para esse atributo. Se você não especificar um valor, o balanceador de carga não incluirá o atributo
Max-Age
no cabeçalhoSet-cookie
. Em geral, o cliente ou o browser mantém o cookie até que a sessão atual seja encerrada, conforme definido pelo cliente. - Independentemente de
Set-cookie
conter ou não o atributoSecure
. O atributoSecure
direciona o cliente ou o browser para enviar o cookie apenas usando um protocolo seguro.Observação
Se você definir esse campo com true, não será possível associar o conjunto de backend correspondente a um listener HTTP.
- Se o cabeçalho
Set-cookie
deve conter o atributoHttpOnly
. O atributoHttpOnly
limita o escopo do cookie a solicitações HTTP. Esse atributo direciona o cliente ou o browser para omitir o cookie ao permitir acesso aos cookies por meio de APIs não HTTP. Por exemplo, esse atributo restringe o cookie aos canais JavaScript. - Indica se o fallback será desativado para servidores indisponíveis.
As regras de roteamento de caminho têm precedência para decidir o servidor de backend de destino. O balanceador de carga verifica se a persistência de sessão está ativada para o servidor de backend e se a configuração do cookie é válida para o alvo. O sistema ignora cookies inválidos.
Fallback
Por padrão, o serviço Load Balancer direciona o tráfego de um cliente de sessão persistente para outro servidor de backend quando o servidor original está indisponível. Você pode configurar o conjunto de backend para desativar este comportamento de fallback. Quando você desativa o fallback, o balanceador de carga falha ao fazer a solicitação e retorna um código HTTP 502. O serviço continua a retornar um HTTP 502 até que o cliente não apresente mais um cookie de sessão persistente.
Se fallback estiver desativado, os cookies com uma data de expiração futura distante poderão causar uma interrupção do cliente.
O serviço do Balanceador de Carga considera um servidor marcado como drain
disponível para sessões persistidas existentes. Novas solicitações que não fazem parte de uma sessão persistente existente não são enviadas para esse servidor.