Persistência de Sessão

A persistência de sessão é suportada no Private Cloud Appliance.

Dica

A persistência de sessão baseada em cookie não é fornecida por padrão. Ele estará disponível para balanceadores de carga de aplicativos se uma tag definida for aplicada para ativar essa implementação específica. Para obter mais informações, consulte LBaaS Opções de Implementação.

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.

O serviço Load Balancing oferece duas configurações baseadas em cookie mutuamente exclusivas para ativar a persistência da sessão: persistência do cookie do aplicativo e persistência do cookie do balanceador de carga.

Observaçã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 de ISP e os gateways 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.

Outra fraqueza da persistência de sessão orientada por endereço IP é que o endereço IP original pode ser alterado. Nesse caso, a persistência de sessão pode ser perdida ou a solicitação pode ser redirecionada ao servidor de backend incorreto.

Permanência do Cookie do Aplicativo

Para configurar a persistência da sessão de cookie do aplicativo, você só precisa especificar um nome de cookie. Por padrão, o tráfego de um cliente de sessão persistente é redirecionado para outro servidor de backend quando o servidor original está indisponível. Este comportamento de fallback não pode ser desativado.

O serviço de Balanceamento de Carga ativa a persistência da sessão de cookie do aplicativo (atenuante) 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 match-all ( "*"), qualquer cookie definido pelo servidor ativará a persistência da sessão. A menos que um servidor de backend ativa a persistência da sessão, o serviço segue a política de balanceamento de carga especificada quando você criou o balanceador de carga.

Requisitos:

  • O balanceador de carga deve operar no modo HTTP para suportar a persistência de sessão orientada por cookie do servidor.

  • O computador cliente deve aceitar cookies para que a persistência da sessão de balanceamento de carga funcione.

Como Ele Funciona:

O serviço Load Balancing calcula um hash do cookie configurado e de 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

Recomendamos que você trate os dados de cookie como uma 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 os cookies enviando um cabeçalho da resposta Set-Cookie com uma data passada de expiração. O serviço de Balanceamento de Carga roteia solicitações subsequentes usando a política configurada de balanceamento de carga.

Permanê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 persistência da sessão de cookie do balanceador de carga, especifique estes parâmetros e definições:

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 nome, Recomendamos 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 (gerado por um servidor de backend) e do cabeçalho Set-cookie (gerado pelo balanceador de carga) forem iguais, o cliente ou o browser os tratará como um único cookie. O cliente retorna apenas um dos valores de cookie nas solicitações subsequentes. Se ambos os nomes de Set-cookie forem iguais, mas os nomes de domínio forem diferentes, o cliente ou browser os tratará como dois cookies diferentes.

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 - O Mecanismo de Gerenciamento de Estado HTTP descreve a conduta do cliente e browser quando o atributo de domínio está presente ou não 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 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ç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 valor Domain do atributo example.com ou www.example.com enviado de 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.

Se o cabeçalho Set-cookie deve conter o atributo Secure

O atributo Secure direciona o cliente ou browser para enviar o cookie usando apenas 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 às 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.

Esses parâmetros não podem ser usados:

O tempo que o cookie permanece válido

O atributo de idade máxima (maxAgeInSeconds) do cabeçalho Set-cookie inserido pelo balanceador de carga não deve ser especificado. Também não tem valor padrão. O cliente ou browser normalmente retém o cookie até o término da sessão atual, conforme definido pelo cliente.

O caminho de URI no qual o cookie é válido

O atributo de caminho do cabeçalho Set-cookie inserido pelo balanceador de carga não deve ser especificado. O valor padrão ("/") é sempre usado.

Se desativar fallback para servidores indisponíveis

Consulte a seção Fallback abaixo.

Fallback

Por padrão, o serviço de Balanceamento de Carga direciona o tráfego de um cliente da sessão persistente para outro servidor backend quando o servidor original está indisponível. Não é possível configurar o conjunto de backend para desativar esse comportamento de fallback.

Observação

O serviço de Balanceamento 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 persistida existente não são enviadas para esse servidor.