고가용성을 위해 Apigee SSO 설치

다음 두 가지 시나리오에서 고가용성을 위해 Apigee SSO의 여러 인스턴스를 설치합니다.

  • 단일 데이터 센터 환경에서 Apigee SSO 인스턴스 두 개를 설치하여 고가용성 환경을 만듭니다. 즉, SSO 모듈 중 하나가 다운되더라도 시스템이 계속 작동합니다.
  • 데이터 센터가 두 개인 환경에서 한 데이터 센터의 Apigee SSO가 다운되더라도 시스템이 계속 작동하도록 두 데이터 센터 모두에 Apigee SSO를 설치합니다.

동일한 데이터 센터에 Apigee SSO 모듈 두 개 설치

고가용성을 지원하기 위해 단일 데이터 센터의 서로 다른 apigee-openldap 노드에 Apigee SSO의 두 인스턴스를 배포하여 지원합니다. 이 시나리오에서는 다음과 같습니다.

  • Apigee SSO의 두 인스턴스가 모두 동일한 Postgres 서버에 연결되어야 합니다. Apigee에서는 Edge와 함께 설치한 동일한 Postgres 서버가 아닌 Apigee SSO 전용 Postgres 서버를 사용하는 것이 좋습니다. 두 인스턴스는 모두 상태 지속성을 위해 apigee_dex 데이터베이스를 공유해야 합니다.
  • 수동 JWT 키 배포가 필요하지 않음: 기존 UAA 구성요소와 달리 현대화된 Apigee SSO는 공유 PostgreSQL 데이터베이스에 JSON 웹 키 집합 (JWKS) 및 OAuth2 상태를 기본적으로 저장하고 동기화합니다. 노드 간에 서명 키를 수동으로 복사할 필요가 없습니다.
  • 내부 OpenLDAP의 사용자 인증 정보 동기화: 기본 내부 OpenLDAP를 사용하는 경우 Apigee SSO는 전용 읽기 전용 서비스 계정 (cn=sso-reader)을 사용합니다. HA (노드 2)의 경우 관리자는 두 노드의 /opt/silent.conf에서 동일한 SSO_READER_PW를 설정하거나 노드 2에서 setup-sso를 실행하기 전에 노드 1에서 노드 2로 /opt/apigee/data/apigee-openldap/sso-reader.key를 복사해야 합니다.

    키 파일을 수동으로 복사하려면 노드 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
  • Apigee SSO의 두 인스턴스 앞에 부하 분산기가 필요합니다.
    • SSO에서 TCP 또는 HTTP 상태 점검을 실행하도록 부하 분산기를 구성합니다. HTTP의 경우 /healthz를 포함합니다.
      http_or_https://edge_sso_IP_DNS:9099/healthz

      Apigee SSO에서 설정한 포트를 지정합니다. 기본 포트는 9099입니다.

    • 일부 부하 분산기 설정은 Apigee SSO에서 HTTPS를 사용 설정했는지 여부에 따라 다릅니다. 자세한 내용은 다음 섹션 을 참고하세요.

Apigee SSO에 대한 HTTP 액세스

Apigee SSO에 대한 HTTP 액세스를 사용하는 경우 다음과 같이 부하 분산기를 구성합니다.

  • HTTP 모드를 사용하여 Apigee SSO에 연결합니다.
  • Apigee SSO와 동일한 포트에서 리슨합니다.

기본적으로 Apigee SSO는 포트 9099에서 HTTP 요청을 수신 대기합니다. 선택적으로 /opt/silent.conf 파일에서 SSO_PUBLIC_URL_PORT를 사용하여 포트를 설정할 수 있습니다. SSO_PUBLIC_URL_PORT 를 사용하여 포트를 기본값에서 변경한 경우 부하 분산기가 해당 포트에서 리슨하는지 확인합니다.

예를 들어 각 SSO 인스턴스에서 구성 파일에 다음을 추가하여 포트를 9033으로 설정합니다.

SSO_PUBLIC_URL_PORT=9033

그런 다음 포트 9033에서 리슨하고 포트 9033에서 SSO 인스턴스로 요청을 전달하도록 부하 분산기를 구성합니다. 이 시나리오에서 Apigee SSO의 공개 발급기관 URL은 다음과 같습니다.

http://LB_DNS_NAME:9033

Apigee SSO에 대한 HTTPS 액세스

다음 두 가지 모드 중 하나를 사용하여 HTTPS로 HA를 구성할 수 있습니다. 두 시나리오 모두 HTTPS 액세스를 위한 Apigee SSO 구성의 자세한 설정 단계를 따르세요.

모드 1: 부하 분산기가 TLS를 종료함 (SSL_PROXY)

부하 분산기가 TLS 연결을 종료하는 경우 일반 HTTP 트래픽을 Apigee SSO 인스턴스로 전달해야 합니다.

  • /opt/silent.conf 파일에서 SSO_PUBLIC_URL_SCHEME=https 및 SSO_PUBLIC_URL_PORT=443 (또는 부하 분산기의 공개 HTTPS 포트)을 설정합니다.
  • HTTP 모드 를 사용하여 백엔드 Apigee SSO 인스턴스에 연결하도록 부하 분산기를 구성합니다.
  • 로컬 HTTP 바인드 포트 (기본값: 9099)에서 Apigee SSO 인스턴스로 요청을 전달하도록 부하 분산기를 구성합니다.

모드 2: Apigee SSO가 TLS를 종료함 (SSL_TERMINATION)

Apigee SSO 인스턴스가 TLS 연결을 직접 종료하도록 하려면 부하 분산기가 암호화된 트래픽을 인스턴스로 전달해야 합니다.

  • /opt/silent.conf 파일에서 SSO_PUBLIC_URL_SCHEME=https 및 SSO_PUBLIC_URL_PORT=9443 (또는 선택한 보안 포트)을 설정합니다.
  • TCP 모드 (HTTP 모드 아님)를 사용하여 백엔드에 연결하도록 부하 분산기를 구성하여 Apigee SSO가 TLS를 종료하도록 허용합니다.
  • Apigee SSO와 동일한 포트에서 리슨하고 보안 포트 (예: 9443)에서 Apigee SSO 인스턴스로 요청을 전달하도록 부하 분산기를 구성합니다.

여러 데이터 센터에 Apigee SSO 설치

여러 데이터 센터 환경에서는 각 데이터 센터에 Apigee SSO 인스턴스 (apigee-openldap를 통해)를 설치합니다. 하나의 SSO 인스턴스가 모든 트래픽을 처리합니다. 해당 인스턴스가 다운되면 트래픽을 두 번째 SSO 인스턴스로 전환할 수 있습니다.

두 데이터 센터에 Apigee SSO를 설치하기 전에 다음이 필요합니다.

  • 마스터 Postgres 서버의 IP 주소 또는 도메인 이름

    여러 데이터 센터 환경에서는 일반적으로 각 데이터 센터에 하나의 Postgres 서버를 설치하고 마스터-대기 복제 모드로 구성합니다. 이 예에서는 데이터 센터 1 에 마스터 Postgres 서버가 포함되고 데이터 센터 2 에 대기 가 포함됩니다. 자세한 내용은 Postgres의 기본-대기 복제 설정을 참고하세요.

  • 하나의 SSO 인스턴스를 가리키는 단일 DNS 항목 예를 들어 데이터 센터 1의 SSO 인스턴스를 가리키는 다음 형식으로 DNS 항목을 만듭니다.
    my-sso.domain.com => apigee-sso-dc1-ip-or-lb
  • 동기화된 OpenLDAP 리더 사용자 인증 정보 내부 OpenLDAP를 사용하는 경우 설정 중에 클러스터가 동기화되지 않도록 하려면 두 데이터 센터 모두 정확히 동일한 SSO_READER_PW를 사용하거나 동일한 sso-reader.key 파일을 공유해야 합니다.

각 데이터 센터에서 Apigee SSO를 구성할 때 두 구성을 모두 데이터 센터 1의 Postgres 마스터 로 지정합니다.

## Postgres configuration
PG_HOST=IP_or_DNS_of_PG_Master_in_DC1
PG_PORT=5432

또한 공개적으로 액세스할 수 있는 발급기관 URL로 공유 DNS 항목을 사용하도록 두 데이터 센터를 모두 구성해야 합니다. setup-sso 스크립트는 발급기관 URL을 자동으로 구성하고 포트를 추가하므로 포트가 필요하지 않은 경우 포트가 추가되지 않도록 /opt/silent.conf 대신 /opt/apigee/customer/application/openldap.properties에서 정확한 URL을 직접 설정해야 합니다.

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

SSO 장애 조치 처리

데이터 센터 1의 Apigee SSO 인스턴스 (또는 Postgres 마스터)가 다운되면 활성 OAuth 세션을 잃지 않고 데이터 센터 2의 SSO 인스턴스로 전환할 수 있습니다.

  1. PostgreSQL 데이터베이스 장애 조치 처리에 설명된 대로 데이터 센터 2의 Postgres 대기 서버를 마스터로 변환합니다.
  2. my-sso.domain.com이 데이터 센터 2의 SSO 인스턴스를 가리키도록 DNS 레코드를 업데이트합니다.
    my-sso.domain.com => apigee-sso-dc2-ip-or-lb
  3. 데이터 센터 2의 Apigee SSO에 대한 /opt/silent.conf 파일을 업데이트하여 데이터 센터 2의 새 Postgres 마스터 서버를 가리키도록 합니다.
    ## Postgres configuration
    PG_HOST=IP_or_DNS_of_PG_Master_in_DC2
  4. 데이터 센터 2에서 Apigee SSO를 재구성하고 다시 시작하여 연결을 기본적으로 업데이트합니다.
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap setup-sso -f /opt/silent.conf