Sessões

São detalhadas abaixo as configurações para controle de balanceamento de carga e cache de sessões.

VariávelDescrição Rápida

Desabilita (valor em 1) o cache de sessão.

Caminho do arquivo com a lista de HSMs para o balanceamento.

Intervalo (em segundos) de atualização do arquivo de balanceamento.

Tempo (em segundos) de suspensão automática de um HSM não responsivo da lisa de balanceamento.

Intervalo (em segundos) de atualização do carregamento dos objetos do HSM nas operações de Pix request(POST/GET/DELETE).

Cache de Sessão

Variável de ambiente a ser definida: HSM_DISABLE_SESSION_CACHE

ValorCache de Sessões

Não definida

habilitado

0

habilitado

1

desabilitado

Somente desabilite o cache de sessões se tiver certeza que a aplicação será de alguma forma beneficiada com esta configuração.

Para mais detalhes consulte o tópico Cache de Sessão.

Em conjunto com o balanceamento funciona um sistema de cache de sessões, visando aperfeiçoar o uso de banda de rede e alocação/desalocação de recursos no HSM e no servidor da aplicação. Quando a aplicação solicita o término da sessão ao HSM, ela é finalizada logicamente (para a aplicação a sessão foi fechada com sucesso); a biblioteca do HSM (carregada no espaço de endereço do processo da aplicação) mantém por um determinado tempo a sessão física com o HSM; se uma nova sessão for solicitada, a biblioteca reutiliza aquela sessão física (re-autenticando localmente o usuário). Ao reutilizar uma sessão já estabelecida há um ganho por não se fazer novamente a negociação da sessão física, principalmente se a aplicação estiver usando sessões cifradas (TLS). O tipo da nova sessão (aberta ou cifrada) deve ser o mesmo da sessão física existente. Caso a sessão física no cache não seja reutilizada dentro do tempo de espera, ela é fisicamente encerrada.

O cache de sessões tem as seguintes características:

  1. Intra-processo: o cache é feito por processo. Isso significa que 2 aplicações em uma mesma máquina terão um cache cada uma, sem compartilhar sessões entre os processos;

  2. Centralizado: implementado na biblioteca do HSM. Desta forma o cache é habilitado em um ponto central e todas as outras bibliotecas dependentes dela herdarão a funcionalidade;

  3. Transparente: para habilitar o cache de sessões é necessário apenas habilitar uma variável de ambiente. Não há necessidade de alteração na aplicação.

Observações:

  1. Sessões com autenticação de 2o. fator não entram no cache. Um exemplo é o uso de OTP;

  2. O cache de sessões pode ser ignorado, em uma determinada sessão, usando a flag CACHE_BYPASS em DOpenSesssion;

  3. O cache de sessões é habilitado por padrão;

  4. Uma sessão pode ser forçada a ser removida do cache utilizando a flag CLOSE_PHYSICALLY em DCloseSession;

  5. Pode ser utilizado juntamente com o balanceamento de carga.

  6. O tempo de espera até a sessão ser descartada pela biblioteca é de 04 minutos.

Um fluxo do cache de sessões pode ser representado como na figura abaixo:

Balanceamento de Carga

Variável de ambiente a ser definida: HSM_LOAD_BALANCE_LIST

ValorBalanceamento de Carga

Não definida

desabilitado

nome do arquivo

usa a lista de HSMs

Contem o caminho e nome do arquivo com a lista de endereços IPs e portas dos HSMs. Em cada linha do arquivo deve ser indicado o endereço e a porta (usar 4433) de um HSM. Até dezesseis endereços podem ser informadas. O arquivo deverá ser em formato texto ASCII com o seguinte formato no conteúdo:

<endereco_ip_1>        <porta>
<endereco_ip_2>        <porta>
...
<endereco_ip_16>        <porta>

Exemplo:

10.0.20.1        4433
10.0.20.2        4433

É possível ter um esquema de balanceamento do tipo ativo-passivo, onde várias listas (até 16) são definidas, e a biblioteca vai passar de uma lista para outra, em esquema circular tipo round robin. Quando nenhum dos HSMs da lista atual responder ao pedido de abertura de sessão, a próxima lista passa a ser utilizada, e permanece sendo utilizada até que novamente nenhum dos HSMs responda e então a próxima lista é carregada e assim por diante. Esta funcionalidade está disponível a partir da versão 1.3.0.14 da biblioteca.

Para utilizar este esquema ativo-passivo crie cada lista de HSMs em um arquivo com o formato indicado acima, e no valor da variável de ambiente indique todos os arquivos, com o caminho completo, separando conforme o padrão do sistema operacional onde estiver executando a aplicação, ; para Windows e : para Unix/Linux.

O Dinamo dispõe de um mecanismo de balanceamento de carga, permitindo maior disponibilidade do ambiente e desempenho para as aplicações. É possível ter até 16 (dezesseis) unidades do Dinamo em sistema de balanceamento de carga, com a mesma quantidade de sessões em cada um dos equipamentos. O balanceamento de carga é transparente para a aplicação, ou seja, uma vez habilitado o balanceamento no ambiente, a aplicação se beneficia sem precisar de qualquer alteração.

O balanceamento funciona num esquema tipo round-robin, distribuindo conexões circularmente entre os HSM configurados para balanceamento. A unidade de balanceamento é a sessão com o HSM, independente da carga ou das APIs utilizadas em cada sessão e também da taxa de utilização de recursos em cada HSM. O HSM que vai estabelecer a sessão com a aplicação é definido pela estrutura de balanceamento e não pela aplicação. O esquema do balanceamento funciona por processo, ou seja, dentro de cada processo são suas sessões que serão balanceadas; caso dois processos rodem ao mesmo tempo, cada um terá uma estrutura de balanceamento separada e independente.

Caso a aplicação esteja utilizando objetos armazenados no HSM, é preciso que o objeto exista em todos os HSMs. O recomendado é que um HSM seja preparado inicialmente com todos os objetos usados pela aplicação e a partir dele seja gerado um backup, que será restaurado em todos os demais HSMs que fazem parte do conjunto de balanceamento.

O balanceamento não pode ser usado por aplicações que criam objetos dentro da sessão, precisam persistir estes objetos entre sessões mas não utilizam o mecanismo de replicação do HSM, pois neste caso a criação do objeto não é replicada entre os HSMs e não há garantia que a próxima sessão será dirigida ao HSM onde o objeto foi criado. Para aplicações que criam objetos que devem persistir entre sessões, e o mecanismo de replicação do HSM não seja utilizado, é função da aplicação manter um mecanismo de sincronização entre as bases dos HSMs participantes do balanceamento. Tal mecanismo pode ser baseado por exemplo na exportação e importação de objetos.

O balanceamento de carga e o cache de sessões são habilitados por intermédio de variáveis de ambiente. Se a definição das variável de ambiente tiver escopo de sistema (system wide), todas as aplicações são beneficiadas pela estrutura de balanceamento e/ou cache (pois os processos herdam as definições de variáveis de ambiente do sistema). Também é possível fazer uma configuração definindo a variável de ambiente apenas para o processo particular de uma aplicação. Consulte a documentação do sistema operacional para detalhes sobre criação e escopo de variáveis de ambiente.

O balanceamento de carga m as seguintes características:

  1. Intra-processo: o balanceamento de carga é feito por processo. Isso significa que 2 aplicações em uma mesma máquina terão conjuntos de balanceamento distintos;

  2. Centralizado: implementado na biblioteca do HSM. Desta forma o balanceamento é habilitado em um ponto central e todas as outras bibliotecas dependentes dela herdarão a funcionalidade

  3. Transparente: para habilitar o balanceamento é necessário apenas habilitar uma variável de ambiente. Não é necessário nenhuma alteração de código fonte da aplicação

Um diagrama estrutural do mecanismos de balanceamento de carga é mostrado na figura abaixo:

Intervalo de atualização

Variável de ambiente a ser definida: HSM_LB_FILE_REFRESH_INTERVAL

ValorIntervalo de atualização

Não definida

somente na inicialização da biblioteca.

0

somente na inicialização da biblioteca.

n

recarga (em segundos) da lista de balanceamento.

As listas carregadas são as definidas na variável de ambiente HSM_LOAD_BALANCE_LIST.

Caso os arquivos da lista de balanceamento estejam corrompidos, inválidos a lista de balanceamento alterada não será atualizada.

Caso a lista de balanceamento alterada esteja igual a lista de balanceamento atual a atualização não será efetuada, para evitar o recarregamento desnecessário da lista de balanceamento.

Caso a lista de balanceamento seja atualizada, as sessões atuais serão marcadas para serem finalizadas ao término das operações e as novas sessões serão criadas utilizando a nova lista de balanceamento.

Tempo de Suspensão

Variável de ambiente a ser definida: HSM_BALANCE_SUSPEND_TIME

ValorTempo de Suspensão

Não definida

tempo de suspensão default de 120 segundos.

n

tempo em segundos de suspensão.

Durante a operação da biblioteca com balanceamento de carga pode acontecer de um ou mais dos endereços indicados na lista não conseguir estabelecer sessão com a aplicação. Neste caso a biblioteca vai retirar temporariamente da lista de balanceamento o endereço problemático e vai tentar uma nova conexão vencido este prazo.

Intervalo de atualização de objetos no Pix Request

Variável de ambiente a ser definida: HSM_PIX_HTTP_CONN_REFRESH_INTERVAL

ValorIntervalo de atualização

Não definida

atualiza os objetos a cada operação de Pix Request.

0

atualiza os objetos a cada operação de Pix Request.

n

recarga (em segundos) da lista de balanceamento.

Em cada operação Pix Request (Requisições HTTP POST, GET e DELETE) é feito o carregamento dos objetos armazenados no HSM (handle de chave privada, certificado e cadeia do peer) para poder realizar o fechamento do túnel TLS.

A vantagem do recarregamento dos objetos à cada operação de Pix Request é que permite que, caso o objeto seja alterado, ele seja recarregado já na proxima operação. Por outro lado, estes recarregamento frequente causa um custo de performance desnecessário.

A vantagem de definir um intervalo de tempo para que haja o recarregamento dos objetos do HSM nas operações de Pix Request é um ganho de performance. Isto permite uma melhoria na performance com o custo de ter que esperar no máximo o tempo de recarga definido na variável de ambiente para que os novos objetos sejam recarregados. Como normalmente a troca de chaves e certificados é feita com pouca frequência, é possível configurar um intervalo para que os objetos sejam carregados com impacto reduzido.

Last updated