Persistência de Sessão do Serviço Load Balancer

Descreve como usar a persistência de 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:

Observação

Persistência de Sessão Baseada em 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 Load Balancer ativa a persistência de sessão de cookie do aplicativo quando um servidor de backend envia um cabeçalho de resposta Set-Cookie contendo um nome de cookie reconhecido. 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.

Como Funciona

O serviço Load Balancer calcula um hash do cookie configurado e outros parâmetros de solicitação e envia esse valor para o cliente em um cookie. O valor armazenado no cookie permite que o serviço roteie as solicitações de cliente subsequentes 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.

Observação

A Oracle recomenda que você trate dados de cookie como entidade opaca. Não os use nos 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 Load Balancer roteia as solicitações subsequentes usando a política de balanceamento de carga configurada.

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 web de backend que não conseguem 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

    Certifique-se de que o nome do cookie usado nos servidores de aplicativos de backend seja distinto do nome do cookie usado no balanceador de carga. Para minimizar a chance de colisão de nomes, a Oracle recomenda que você use um prefixo como X-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çalho Set-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 de cookie nas solicitações subsequentes. Se ambos os nomes Set-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ê não especificar um valor, o balanceador de carga não 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 for example.com no cabeçalho Set-cookie, o cliente incluirá o mesmo cookie no cabeçalho Cookie ao fazer solicitações HTTP para example.com, www.example.com e www.abc.example.com. Se o atributo Domain não estiver presente, o cliente retornará o cookie somente para o domínio em relaçã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çalho Set-cookie não incluir o domínio no qual a solicitação original foi feita, o cliente ou o browser poderá rejeitar o cookie. Conforme especificado na RFC 6265, o cliente aceita um cookie com o atributo Domain igual a example.com ou www.example.com enviado por www.example.com. Ele não aceita um cookie com o atributo Domain igual a abc.example.com ou www.abc.example.com enviado por www.example.com.

     
  • O caminho do URI no qual o cookie é válido. O cabeçalho Set-cookie inserido pelo balanceador de carga contém um atributo Path 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 atributo Path 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 atributo Max-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çalho Set-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 atributo Secure. O atributo Secure direciona o cliente ou o browser para enviar o cookie apenas usando um protocolo seguro.

    Observação

    Se você definir esse campo como verdadeiro, não poderá associar o conjunto de backend correspondente a um listener HTTP.

  • Se o cabeçalho Set-cookie deve conter o atributo HttpOnly. O atributo HttpOnly 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.

Observação

As regras de roteamento de caminho têm precedência para determinar 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.

Importante

Se o fallback estiver desativado, os cookies com uma data de expiração futura distante poderão causar uma interrupção do cliente.

O serviço Load Balancer considera um servidor marcado como drain como disponível para as sessões persistidas existentes. Novas solicitações que não fazem parte de uma sessão persistida existente não são enviadas para esse servidor.