Instalar o SSO da Apigee para alta disponibilidade

Você instala várias instâncias do SSO da Apigee para alta disponibilidade em dois cenários:

  • Em um ambiente de data center único, instale duas instâncias do SSO da Apigee para criar um ambiente de alta disponibilidade, o que significa que o sistema continua funcionando se um dos módulos de SSO falhar.
  • Em um ambiente com dois data centers, instale o SSO da Apigee nos dois data centers para que o sistema continue funcionando se o SSO da Apigee em um data center falhar.

Instalar dois módulos de SSO da Apigee no mesmo data center

Implante duas instâncias do SSO da Apigee em nós apigee-openldap diferentes em um único data center para oferecer suporte a alta disponibilidade. Nesse caso:

  • As duas instâncias do SSO da Apigee precisam estar conectadas ao mesmo servidor Postgres. A Apigee recomenda usar um servidor Postgres dedicado para o SSO da Apigee e não o mesmo servidor Postgres que você instalou com o Edge. As duas instâncias precisam compartilhar o banco de dados apigee_dex para persistência de estado.
  • Nenhuma distribuição manual de chaves JWT é necessária:ao contrário do componente UAA legado, o SSO da Apigee modernizado armazena e sincroniza os conjuntos de chaves da Web JSON (JWKS) e o estado do OAuth2 de forma nativa no banco de dados PostgreSQL compartilhado. Não é necessário copiar manualmente as chaves de assinatura entre os nós.
  • Sincronização de credenciais para OpenLDAP interno:se você estiver usando o OpenLDAP interno padrão, o SSO da Apigee usará uma conta de serviço somente leitura dedicada (cn=sso-reader). Para HA (nó 2), o administrador precisa definir o mesmo SSO_READER_PW em /opt/silent.conf nos dois nós ou copiar /opt/apigee/data/apigee-openldap/sso-reader.key do nó 1 para o nó 2 antes de executar setup-sso no nó 2.

    Para copiar manualmente o arquivo de chaves, execute os comandos a seguir no nó 2:

    scp node1_ip:/opt/apigee/data/apigee-openldap/sso-reader.key /opt/apigee/data/apigee-openldap/sso-reader.key
    chown apigee:apigee /opt/apigee/data/apigee-openldap/sso-reader.key
    chmod 600 /opt/apigee/data/apigee-openldap/sso-reader.key
  • É necessário um balanceador de carga na frente das duas instâncias do SSO da Apigee:
    • Configure o balanceador de carga para realizar uma verificação de integridade TCP ou HTTP no SSO. Para HTTP, inclua /healthz:
      http_or_https://edge_sso_IP_DNS:9099/healthz

      Especifique a porta conforme definida pelo SSO da Apigee. A porta 9099 é a padrão.

    • Algumas configurações do balanceador de carga dependem de você ter ativado o HTTPS no SSO da Apigee. Consulte as seções a seguir para mais informações.

Acesso HTTP ao SSO da Apigee

Se você estiver usando o acesso HTTP ao SSO da Apigee, configure o balanceador de carga para:

  • Usar o modo HTTP para se conectar ao SSO da Apigee.
  • Detectar na mesma porta que o SSO da Apigee.

Por padrão, o SSO da Apigee detecta solicitações HTTP na porta 9099. Opcionalmente, você pode usar SSO_PUBLIC_URL_PORT no arquivo /opt/silent.conf para definir a porta. Se você usou SSO_PUBLIC_URL_PORT para mudar a porta padrão, verifique se o balanceador de carga detecta nessa porta.

Por exemplo, em cada instância de SSO, defina a porta como 9033 adicionando o seguinte ao arquivo de configuração:

SSO_PUBLIC_URL_PORT=9033

Em seguida, configure o balanceador de carga para detectar na porta 9033 e encaminhar solicitações para as instâncias de SSO na porta 9033. O URL do emissor público do SSO da Apigee nesse cenário é:

http://LB_DNS_NAME:9033

Acesso HTTPS ao SSO da Apigee

É possível configurar a HA com HTTPS usando um dos dois modos a seguir. Em ambos os casos, siga as etapas de configuração detalhadas em Configurar o SSO da Apigee para acesso HTTPS.

Modo 1: o balanceador de carga encerra o TLS (SSL_PROXY)

Se o balanceador de carga encerrar a conexão TLS, ele precisará encaminhar o tráfego HTTP simples para as instâncias do SSO da Apigee.

  • Defina SSO_PUBLIC_URL_SCHEME=https e SSO_PUBLIC_URL_PORT=443 (ou a porta HTTPS pública do balanceador de carga) no arquivo /opt/silent.conf.
  • Configure o balanceador de carga para usar o modo HTTP para se conectar às instâncias do SSO da Apigee de back-end.
  • Configure o balanceador de carga para encaminhar solicitações para as instâncias do SSO da Apigee na porta de vinculação HTTP local (padrão: 9099).

Modo 2: o SSO da Apigee encerra o TLS (SSL_TERMINATION)

Se você quiser que as instâncias do SSO da Apigee encerrem as conexões TLS diretamente, o balanceador de carga precisará transmitir o tráfego criptografado para elas.

  • Defina SSO_PUBLIC_URL_SCHEME=https e SSO_PUBLIC_URL_PORT=9443 (ou a porta segura escolhida) no arquivo /opt/silent.conf.
  • Configure o balanceador de carga para usar o modo TCP (não o modo HTTP) para se conectar ao back-end, permitindo que o SSO da Apigee encerre o TLS.
  • Configure o balanceador de carga para detectar na mesma porta que o SSO da Apigee e encaminhar solicitações para as instâncias do SSO da Apigee na porta segura (por exemplo, 9443).

Instalar o SSO da Apigee em vários data centers

Em um ambiente de vários data centers, instale uma instância do SSO da Apigee (via apigee-openldap) em cada data center. Uma instância de SSO processa todo o tráfego. Se essa instância falhar, você poderá mudar o tráfego para a segunda instância de SSO.

Antes de instalar o SSO da Apigee em dois data centers, você precisa do seguinte:

  • O endereço IP ou o nome de domínio do servidor Postgres principal.

    Em um ambiente de vários data centers, normalmente você instala um servidor Postgres em cada data center e os configura no modo de replicação principal-standby. Para este exemplo, o data center 1 contém o servidor Postgres principal e o data center 2 contém o standby. Para mais informações, consulte Configurar a replicação principal-standby para o Postgres.

  • Uma única entrada de DNS que aponta para uma instância de SSO. Por exemplo, crie uma entrada de DNS no seguinte formato, que aponta para a instância de SSO no data center 1:
    my-sso.domain.com => apigee-sso-dc1-ip-or-lb
  • Credenciais de leitor OpenLDAP sincronizadas. Se você estiver usando o OpenLDAP interno, verifique se os dois data centers usam o mesmo SSO_READER_PW ou compartilham o mesmo arquivo sso-reader.key para evitar a dessincronização do cluster durante a configuração.

Ao configurar o SSO da Apigee em cada data center, você aponta as duas configurações para o Postgres principal no data center 1:

## Postgres configuration
PG_HOST=IP_or_DNS_of_PG_Master_in_DC1
PG_PORT=5432

Você também precisa configurar os dois data centers para usar a entrada de DNS compartilhada como o URL do emissor acessível publicamente. Como o script setup-sso constrói automaticamente o URL do emissor e anexa a porta, defina o URL exato diretamente em /opt/apigee/customer/application/openldap.properties em vez de /opt/silent.conf para evitar que a porta seja anexada se não for necessária:

# Externally accessible URL of the Apigee SSO
etc_sso_config_issuer_url=https://my-sso.domain.com

Como processar o failover de SSO

Se a instância do SSO da Apigee (ou o Postgres principal) no data center 1 falhar, você poderá mudar para a instância de SSO no data center 2 sem perder as sessões OAuth ativas:

  1. Converta o servidor Postgres standby no data center 2 para principal, conforme descrito em Como processar um failover de banco de dados PostgreSQL.
  2. Atualize o registro DNS para apontar my-sso.domain.com para a instância de SSO no data center 2:
    my-sso.domain.com => apigee-sso-dc2-ip-or-lb
  3. Atualize o arquivo /opt/silent.conf para o SSO da Apigee no data center 2 para apontar para o novo servidor Postgres principal no data center 2:
    ## Postgres configuration
    PG_HOST=IP_or_DNS_of_PG_Master_in_DC2
  4. Reconfigure e reinicie o SSO da Apigee no data center 2 para atualizar a conexão de forma nativa:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap setup-sso -f /opt/silent.conf