7.2. 3scale의 백엔드 구성 요소 구성

3scale 관리자로 backend-cron, backend-listener, backend-worker 구성 요소 환경 변수에 대한 back-end의 Redis HA(failover)를 구성합니다. 이러한 구성은 3scale의 Redis HA에 필요합니다.

참고

sentinels와 함께 Redis를 사용하려면 3scale을 배포하기 전에 원하는 Redis를 구성하려면 모든 필드가 있는 system-redis 시크릿을 생성해야 합니다. 필드는 3scale 현재 백엔드에서 매개변수로 제공되지 않습니다.

7.2.1. backend-redissystem-redis 시크릿 생성

다음 단계에 따라 backend-redissystem-redis 시크릿을 생성합니다.

7.2.2. HA용 3scale 신규 설치 배포

단일 데이터베이스 Redis 인스턴스를 사용하여 배포할 때 키 충돌을 방지하려면 sidekiqmessage_bus Redis 키에 대해 다른 네임스페이스를 설정합니다. 이는 Redis Enterprise 및 Redis 클러스터에 모두 적용됩니다.

sidekiqmessage_bus가 다른 Redis 데이터베이스에 읽고 쓰는 기타 배포의 경우 네임스페이스는 필요하지 않습니다.

다음 매개 변수는 Redis 키 네임스페이스를 설정하는 데 사용됩니다.

  • NAMESPACE: Redis 데이터베이스에 system-appsystem-sidekiq 에 저장된 작업 대기열과 관련된 항목의 경우
  • MESSAGE_BUS_NAMESPACE: Redis 데이터베이스의 system-app 에 의해 저장된 프로세스 간 message_bus 통신과 관련된 항목의 경우

절차

  1. 아래 필드를 사용하여 backend-redissystem-redis 시크릿을 생성합니다.

    backend-redis

    REDIS_QUEUES_SENTINEL_HOSTS
    REDIS_QUEUES_SENTINEL_ROLE
    REDIS_QUEUES_URL
    REDIS_STORAGE_SENTINEL_HOSTS
    REDIS_STORAGE_SENTINEL_ROLE
    REDIS_STORAGE_URL

    system-redis

    MESSAGE_BUS_NAMESPACE
    MESSAGE_BUS_SENTINEL_HOSTS
    MESSAGE_BUS_SENTINEL_ROLE
    MESSAGE_BUS_URL
    NAMESPACE
    SENTINEL_HOSTS
    SENTINEL_ROLE
    URL

    • sentinels를 사용하여 Redis에 대해 구성할 때 backend-redissystem-redis 의 해당 URL 필드는 redis://[:redis-password@]redis-group[/db]` 형식의 Redis 그룹을 나타냅니다. 여기서 [x]는 선택적 요소 x이며, redis-password, redis-group, db 변수를 적절하게 대체합니다.

      예제

      redis://:redispwd@mymaster/5

    • SENTINEL_HOSTS 필드는 다음 형식의 sentinel 연결 문자열을 쉼표로 구분한 목록입니다.

      redis://:sentinel-password@sentinel-hostname-or-ip:port
      • 목록의 각 요소에 대해 [x]는 선택적 요소 xsentinel-password,sentinel-hostname-or-ip 를 나타내며, port 는 그에 따라 교체할 변수입니다.

        예제

        :sentinelpwd@123.45.67.009:2711,:sentinelpwd@other-sentinel:2722

    • SENTINEL_ROLE 필드는 master 또는 slave 입니다.
  2. 최신 버전의 템플릿을 사용하여 템플릿을 사용하여 OpenShift에 3scale 배포에 표시된 대로 3scale을 배포합니다.

    1. 이미 존재하는 backend-redissystem-redis로 인한 오류를 무시합니다.

7.2.3. 3scale이 아닌 HA 배포를 HA로 마이그레이션

  1. HA 용 3scale의 새로운 설치 배포에 표시된 대로 모든 필드를 사용하여 backend-redissystem-redis 시크릿을 편집합니다.
  2. 백엔드 pod에 대해 다음 backend-redis 환경 변수가 정의되어 있는지 확인합니다.

    name: BACKEND_REDIS_SENTINEL_HOSTS
      valueFrom:
        secretKeyRef:
          key: REDIS_STORAGE_SENTINEL_HOSTS
          name: backend-redis
    name: BACKEND_REDIS_SENTINEL_ROLE
      valueFrom:
        secretKeyRef:
          key: REDIS_STORAGE_SENTINEL_ROLE
          name: backend-redis
  3. 다음 system-redis 환경 변수가 system-(app|sidekiq|sphinx) Pod에 대해 정의되어 있는지 확인합니다.

    name: REDIS_SENTINEL_HOSTS
      valueFrom:
        secretKeyRef:
          key: SENTINEL_HOSTS
          name: system-redis
    name: REDIS_SENTINEL_ROLE
      valueFrom:
        secretKeyRef:
          key: SENTINEL_ROLE
          name: system-redis
    name: MESSAGE_BUS_REDIS_SENTINEL_HOSTS
      valueFrom:
        secretKeyRef:
          key: MESSAGE_BUS_SENTINEL_HOSTS
          name: system-redis
    name: MESSAGE_BUS_REDIS_SENTINEL_ROLE
      valueFrom:
        secretKeyRef:
          key: MESSAGE_BUS_SENTINEL_ROLE
          name: system-redis
  4. 템플릿을 사용하여 3scale을 계속 업그레이드 하려면 지침을 따르십시오.

7.2.3.1. Redis Enterprise 사용

  1. OpenShift에 배포된 Redis Enterprise를 사용하여 다음과 같은 세 가지 redis-enterprise 인스턴스를 사용하십시오.

    1. system-redis 시크릿을 편집합니다.

      1. 고유한 값을 MESSAGE_BUS_NAMESPACENAMESPACE 로 설정합니다.
      2. URLMESSAGE_BUS_URL 을 동일한 데이터베이스로 설정합니다.
    2. backend-redis의 백엔드 데이터베이스를 REDIS_QUES_URL로 설정합니다.
    3. backend-redis 의 세 번째 데이터베이스를 REDIS_STORAGE_URL 로 설정합니다.

7.2.3.2. Redis Sentinel 사용

  1. 3개 또는 4개의 다른 Redis 데이터베이스와 함께 Redis Sentinel을 사용하십시오.

    1. system-redis 시크릿을 편집합니다.

      1. 고유한 값을 MESSAGE_BUS_NAMESPACENAMESPACE 로 설정합니다.
      2. URLMESSAGE_BUS_URL 을 적절한 Redis 그룹으로 설정합니다 (예: redis://:redispwd@mymaster/5)
      3. SENTINEL_HOSTSMESSAGE_BUS_SENTINEL_HOSTS 를 sentinels 호스트 및 포트의 쉼표로 구분된 목록으로 설정합니다(예: :sentinelpwd@123.45.67.009:2711,:sentinelpwd@other-sentinel:2722).
      4. SENTINEL_ROLEMESSAGE_BUS_SENTINEL_ROLEmaster로 설정합니다.
  2. 백엔드의 backend-redis 시크릿을 다음 값으로 설정합니다.

    • REDIS_QUEUES_URL
    • REDIS_QUEUES_SENTINEL_ROLE
    • REDIS_QUEUES_SENTINEL_HOSTS
  3. 세 번째 데이터베이스의 변수를 다음과 같이 설정합니다.

    • REDIS_STORAGE_URL
    • REDIS_STORAGE_SENTINEL_ROLE
    • REDIS_STORAGE_SENTINEL_HOSTS

참고

  • system-appsystem-sidekiq 구성 요소는 통계를 검색하기 위해 back-end Redis에 직접 연결합니다.

    • 3scale 2.7부터 이러한 시스템 구성 요소는 sentinels를 사용할 때 back-end Redis(스토리지)에도 연결할 수 있습니다.
  • system-appsystem-sidekiq 구성 요소는 backend-redis 대기열이 아닌 backend-redis 스토리지 사용합니다.

    • 시스템 구성 요소를 변경하면 sentinels가 있는 backend-redis 스토리지를 지원합니다.