데이터 센터 추가

이 문서에서는 데이터 센터 (리전이라고도 함)를 기존 데이터 센터에 추가하는 방법을 설명합니다.

데이터 센터를 추가하기 전 고려사항

데이터 센터를 설치하기 전에 데이터 센터에서 OpenLDAP, 동물원, Cassandra, Postgres 서버를 구성하는 방법을 이해해야 합니다. 또한 두 데이터 센터의 노드 간에 필요한 포트가 열려 있는지 확인해야 합니다.

  • OpenLDAP

    각 데이터 센터에는 복제가 사용 설정된 자체 OpenLDAP 서버가 있습니다. 새 데이터 센터를 설치할 때는 복제를 사용하도록 OpenLDAP를 구성해야 하며, 복제를 사용하려면 기존 데이터 센터에서 OpenLDAP 서버를 다시 구성해야 합니다.

  • ZooKeeper

    두 데이터 센터의 ZK_HOSTS 속성에 대해 두 데이터 센터에서 모든 JoKeeper 노드의 IP 주소 또는 DNS 이름을 같은 순서로 지정하고 ':observer' 수정자로 노드를 표시합니다. :observer 수정자가 없는 노드를 'voters'라고 합니다. 구성에 '투표자' 수가 홀수여야 합니다.

    이 토폴로지에서는 호스트 9의 JoKeeper 호스트가 관찰자입니다.

    아래의 구성 파일 예에서 노드 9는 :observer 수정자로 태그되어 있으므로 투표자가 5개(노드 1, 2, 3, 7, 8) 있습니다.

    각 데이터 센터의 ZK_CLIENT_HOSTS 속성에 데이터 센터의 모든 주Keeper 노드에 데이터 센터에 있는 주Keeper 노드의 IP 주소 또는 DNS 이름을 동일한 순서로 지정합니다.

  • Cassandra

    각 데이터 센터의 CASS_HOSTS에 두 데이터 센터 모두에 DNS 이름이 아닌 모든 Cassandra IP 주소를 지정해야 합니다. 데이터 센터 1의 경우 먼저 해당 데이터 센터의 Cassandra 노드를 나열합니다. 데이터 센터 2의 경우 먼저 해당 데이터 센터의 Cassandra 노드를 나열합니다. 데이터 센터의 모든 Cassandra 노드에 대해 동일한 순서로 Cassandra 노드를 나열합니다.

    모든 Cassandra 노드에는 서픽스 ':d,r'가 있어야 합니다. 예를 들어 'ip:1,1 = 데이터 센터 1 및 랙/가용성 영역 1' 및 'ip:2,1 = 데이터 센터 2 및 랙/가용성 영역 1'입니다.

    예: '192.168.124.201:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.168.124,192.168.124,

    각 데이터 센터의 랙/가용성 영역 1에 있는 첫 번째 노드는 시드 서버로 사용됩니다. 이 배포 모델에서 Cassandra 설정은 다음과 같습니다.

  • Postgres

    기본적으로 Edge는 모든 Postgres 노드를 마스터 모드로 설치합니다. 그러나 데이터 센터가 여러 개 있는 경우에는 마스터-대기 복제를 사용하도록 Postgres 노드를 구성하여 마스터 노드에 장애가 발생해도 대기 노드가 서버 트래픽을 계속할 수 있도록 합니다. 일반적으로 한 데이터 센터에서 마스터 Postgres 서버를 구성하고 두 번째 데이터 센터에 대기 서버를 구성합니다.

    기존 데이터 센터가 두 개의 Postgres 노드가 마스터/대기 모드로 실행되도록 이미 구성된 경우 이 절차의 일환으로 기존 대기 노드를 등록 취소하고 새 데이터 센터에서 대기 노드로 교체합니다.

    다음 표는 두 시나리오의 Postgres 구성 전과 후를 보여줍니다.

    변경 전 변경 후

    dc-1의 단일 마스터 Postgres 노드

    dc-1의 마스터 Postgres 노드

    dc-2의 대기 Postgres 노드

    dc-1의 마스터 Postgres 노드

    dc-1의 대기 Postgres 노드

    dc-1의 마스터 Postgres 노드

    dc-2의 대기 Postgres 노드

    dc-1에서 이전 대기 Postgres 노드 등록 취소

  • 포트 요구사항

    두 데이터 센터의 노드 간에 필요한 포트가 열려 있는지 확인해야 합니다. 포트 다이어그램은 포트 요구사항을 참고하세요.

기존 데이터 센터 업데이트

데이터 센터를 추가하려면 새 데이터 센터 노드를 설치하고 구성하는 단계를 수행해야 하지만 원래 데이터 센터에서 노드를 업데이트해야 합니다. 기존 데이터 센터에서 액세스할 수 있어야 하는 새 데이터 센터에 새 Cassandra 및 JoKeeper 노드를 추가하고 복제를 사용하려면 OpenLDAP를 재구성해야 하므로 이러한 수정이 필요합니다.

구성 파일 만들기

아래에는 설치 토폴로지에 나와 있는 것처럼 두 데이터 센터의 자동 구성 파일이 나와 있습니다. 각 데이터 센터에는 6개의 노드가 있습니다. dc-1의 구성 파일이 다음에 설정을 더 추가합니다.

  • 두 개의 OpenLDAP 노드에서 복제되도록 OpenLDAP를 구성합니다.
  • dc-2의 새 Cassandra 및 JoKeeper 노드를 dc-1의 구성 파일에 추가합니다.
# Datacenter 1
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP1
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=1
LDAP_PEER=$IP7
APIGEE_LDAPPW=secret
MP_POD=gateway-1
REGION=dc-1
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1 $IP7:2,1 $IP8:2,1 $IP9:2,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"
# Datacenter 2
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP7
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=2
LDAP_PEER=$IP1
APIGEE_LDAPPW=secret
MP_POD=gateway-2
REGION=dc-2
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP7:2,1 $IP8:2,1 $IP9:2,1 $IP1:1,1 $IP2:1,1 $IP3:1,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"

새 데이터 센터 추가

아래 절차에 따라 새 데이터 센터를 설치합니다.

이 절차에서 데이터 센터 이름은 다음과 같습니다.

  • dc-1: 기존 데이터 센터
  • dc-2: 새 데이터 센터

새 데이터 센터를 추가하려면 다음 단계를 따르세요.

  1. dc-1에서 dc-2의 Cassandra 노드가 포함된 새로운 dc-1 구성 파일로 원본 Cassandra 노드에서 setup.sh를 다시 실행합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
  2. dc-1의 관리 서버 노드에서 setup.sh를 다시 실행합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1
  3. dc-2에서 모든 노드에 apigee-setup을 설치합니다. 자세한 내용은 Edge Apigee-setup 유틸리티 설치를 참고하세요.
  4. dc-2에서 적절한 노드에 Cassandra 및 JoKeeper를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  5. dc-2에서 dc-1의 리전 이름을 지정하여 모든 Cassandra 노드에서 재빌드 명령어를 실행합니다.
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1

    Cassandra에 JMX 인증을 사용 설정한 경우에만 사용자 이름과 비밀번호를 전달하면 됩니다.

  6. dc-2에서 적절한 노드에 관리 서버를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. dc-2의 관리 서버 노드에서 apigee-provision를 설치합니다. 이는 apigee-adminapi.sh 유틸리티를 설치합니다.
    /opt/apigee/apigee-service/bin/apigee-service apigee-provision install
  8. dc-2에서 적절한 노드에 경로 및 메시지 프로세서를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
  9. dc-2에서 적절한 노드에 Qpid를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
  10. dc-2에서 적절한 노드에 Postgres를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
  11. Postgres 노드에 대한 Postgres 마스터/대기를 설정합니다. dc-1의 Postgres 노드는 마스터이고, dc-2의 Postgres 노드는 대기 서버입니다.
    1. dc-1의 마스터 노드에서 설정할 구성 파일을 수정합니다.
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    2. 새 마스터에서 복제를 사용 설정합니다.
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
    3. dc-2의 대기 노드에서 설정할 구성 파일을 수정합니다.
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    4. dc-2의 대기 노드에서 서버를 중지한 후 기존 Postgres 데이터를 삭제합니다.
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
      rm -rf /opt/apigee/data/apigee-postgresql/

      필요한 경우 이 데이터를 삭제하기 전에 백업할 수 있습니다.

    5. dc-2에서 대기 노드를 구성합니다.
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
  12. dc-1에서 애널리틱스 구성을 업데이트하고 조직을 구성합니다.
    1. dc-1의 관리 서버 노드에서 Postgres 노드의 UUID를 가져옵니다.
      apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \
        --admin adminEmail --pwd adminPword --host localhost

      UUID는 반환된 데이터의 끝에 표시됩니다. 이 값을 저장합니다.

    2. dc-2의 관리 서버 노드에서 이전 단계와 같이 Postgres 노드의 UUID를 가져옵니다. 이 값을 저장합니다.
    3. dc-1의 관리 서버 노드에서 애널리틱스 및 소비자 그룹의 이름을 결정합니다. 아래 명령어 중 다수는 해당 정보를 필요로 합니다.

      기본적으로 분석 그룹의 이름은 'axgroup-001'이고 소비자 그룹의 이름은 'consumer-group-001'입니다. 리전의 자동 구성 파일에서 AXGROUP 속성을 사용하여 애널리틱스 그룹의 이름을 설정할 수 있습니다.

      분석 및 소비자 그룹의 이름을 잘 모르는 경우 다음 명령어를 사용하여 표시합니다.

      apigee-adminapi.sh analytics groups list \
        --admin adminEmail --pwd adminPword --host localhost

      이 명령어는 이름 필드에 분석 그룹 이름을, 소비자 그룹 필드에 소비자 그룹 이름을 반환합니다.

    4. dc-1의 관리 서버 노드의 애널리틱스 그룹에서 기존 Postgres 서버를 삭제합니다.
      1. Consumer-group에서 Postgres 노드를 삭제합니다.
        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u UUID \
          -Y --admin adminEmail --pwd adminPword --host localhost

        마스터/대기 모드에서 두 개의 Postgres 노드가 실행되도록 dc-1이 구성된 경우 둘 다 삭제합니다.

        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" \
          -Y --admin adminEmail --pwd adminPword --host localhost

      2. 분석 그룹에서 Postgres 노드를 삭제합니다.
        apigee-adminapi.sh analytics groups postgres_server remove \
          -g axgroup-001 -u UUID -Y --admin adminEmail \
          --pwd adminPword --host localhost

        dc-1이 마스터/대기 모드로 실행되는 2개의 Postgres 노드를 포함하도록 구성된 경우 둘 다 삭제합니다.

        apigee-adminapi.sh analytics groups postgres_server \
          remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \
          --pwd adminPword --host localhost
    5. dc-1의 관리 서버 노드에서 새 마스터/대기 Postgres 서버를 애널리틱스 그룹에 추가합니다.
      1. 두 Postgres 서버를 분석 그룹에 추가합니다.
        apigee-adminapi.sh analytics groups postgres_server \
          add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost

        여기서 UUID_1dc-1의 마스터 Postgres 노드에 해당하고 UUID_2dc-2의 대기 Postgres 노드에 해당합니다.

      2. PG 서버를 소비자 그룹에 마스터/대기로 추가합니다.
        apigee-adminapi.sh analytics groups consumer_groups datastores \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
    6. dc-2의 Qpid 서버를 애널리틱스 그룹에 추가합니다.
      1. dc-1의 관리 서버 노드에서 dc-2에 있는 Qpid 노드의 UUID를 가져옵니다.
        apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \
          --admin adminEmail --pwd adminPword --host localhost

        UUID는 반환된 데이터의 끝에 표시됩니다. 해당 값을 저장합니다.

      2. dc-1의 관리 서버 노드에서 분석 그룹에 Qpid 노드를 추가합니다 (두 명령어 모두 실행).
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_1" --admin adminEmail \
          --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
      3. dc-1의 관리 서버 노드에서 Qpid 노드를 소비자 그룹에 추가합니다 (두 명령어 모두 실행).
        apigee-adminapi.sh analytics groups consumer_groups consumers \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_1" \
          --admin adminEmail --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups consumer_groups consumers \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_2" \
          --admin adminEmail --pwd adminPword --host localhost
    7. dc-1에서 이전 Postgres 대기 서버를 등록 해제하고 삭제합니다.
      1. 기존 dc-1 Postgres 대기 서버를 등록 취소합니다.
        apigee-adminapi.sh servers deregister -u UUID -r dc-1 \
          -p analytics -t postgres-server -Y --admin adminEmail \
          --pwd adminPword --host localhost

        여기서 UUID는 dc-1의 이전 대기 Postgres 노드입니다.

      2. 기존 dc-1 Postgres 대기 서버를 삭제합니다.
        apigee-adminapi.sh servers delete -u UUID \
          --admin adminEmail --pwd adminPword --host localhost
  13. 두 데이터 센터의 올바른 복제 계수로 Cassandra 키스페이스를 업데이트합니다. 이 단계는 두 데이터 센터의 Cassandra 서버에서 한 번만 실행하면 됩니다.
    1. Cassandra cqlsh 유틸리티를 시작합니다.
      /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 'cqlsh>' 프롬프트에서 다음 CQL 명령어를 실행하여 Cassandra 키스페이스의 복제 수준을 설정합니다.
      1. ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' }; 
      2. ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. 다음 명령어를 사용하여 키스페이스를 확인합니다.
        select * from system.schema_keyspaces;
      4. cqlsh 종료:
        exit
  14. dc-1의 모든 Cassandra 노드에서 다음 nodetool 명령어를 실행하여 메모리를 확보합니다.
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup

    Cassandra에 JMX 인증을 사용 설정한 경우에만 사용자 이름과 비밀번호를 전달하면 됩니다.

  15. 데이터 센터에서 지원하려는 조직 및 환경별로 다음 조치를 취합니다.
    1. dc-1의 관리 서버 노드에서 새 MP_POD를 조직에 추가합니다.
      apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \
        --admin adminEmail --pwd adminPword --host localhost

      여기서 gateway-2은 dc-2 구성 파일의 MP_POD 속성으로 정의된 게이트웨이 포드의 이름입니다.

    2. 조직 및 환경에 새 메시지 프로세서를 추가합니다.
      1. dc-2의 관리 서버 노드에서 dc-2에 있는 메시지 프로세서 노드의 UUID를 가져옵니다.
        apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \
          -t message-processor --admin adminEmail --pwd adminPword --host localhost

        UUID는 반환된 데이터의 끝에 표시됩니다. 해당 값을 저장합니다.

      2. dc-1의 관리 서버 노드에서 dc-2의 각 메시지 프로세서에 대해 다음과 같은 조직의 환경에 메시지 프로세서를 추가합니다.
        apigee-adminapi.sh orgs envs servers add -o orgName -e envName \
          -u UUID --admin adminEmail --pwd adminPword --host localhost
    3. dc-1의 관리 서버 노드에서 조직을 확인합니다.
      apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \
        --admin adminEmail --pwd adminPword --host localhost

      여기서 apiProxyName은 조직에 배포된 API 프록시의 이름입니다.