데이터 센터 추가

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

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

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

  • OpenLDAP

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

  • ZooKeeper

    다음에 대한 ZK_HOSTS 속성 두 데이터 센터에서 모두 같은 순서로 정렬하고 노드를 ':observer' 한정자로 표시합니다. :observer 수정자가 없는 노드를 '투표자'라고 합니다. 홀수 '투표자' 수 변경할 수 있습니다

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

    아래 표시된 구성 파일 예에서 노드 9는 :observer 수정자를 만듭니다.

    ZK_CLIENT_HOSTS 관련 각 데이터 센터에 대한 속성을 변경하려면 주키퍼의 IP 주소 또는 DNS 이름만 지정하세요. 데이터의 모든 ZuKeeper 노드에 대해 동일한 순서로 데이터 센터의 노드 센터를 방문하세요.

  • 카산드라

    각 데이터 센터의 CASS_HOSTS에 모든 Cassandra IP를 지정해야 합니다. 두 데이터의 주소 (DNS 이름 아님) 있습니다. 데이터 센터 1의 경우 해당 데이터 센터의 Cassandra 노드를 먼저 나열합니다. 데이터 센터용 2. 먼저 해당 데이터 센터의 Cassandra 노드를 나열합니다. Cassandra 노드를 동일하게 나열합니다. 작업을 수행합니다

    모든 Cassandra 노드에는 ':d,r' 서픽스가 있어야 합니다. 예: 'ip:1,1 = 데이터 센터 1 및 랙/가용성 영역 1 및 'ip:2,1 = 랙/가용성 영역 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.205:2,1 192.168.124.206:2,1"

    각 데이터 센터의 랙/가용성 영역 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 및 동물원Keeper 노드를 새 기존 데이터 센터에서 액세스할 수 있어야 하며 이를 재구성해야 하는 복제를 사용하려면 OpenLDAP

구성 파일 만들기

다음은 두 데이터 센터에 대한 자동 구성 파일로, 각 데이터는 센터에는 설치 토폴로지와 같이 노드가 6개 있습니다. dc-1의 구성 파일에는 추가 설정을 사용하여 다음 작업을 수행할 수 있습니다.

  • 두 개의 OpenLDAP 노드 간 복제가 포함된 OpenLDAP를 구성합니다.
  • dc-2의 새 Cassandra 및 동물원Keeper 노드를 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-1을 사용하여 원래 Cassandra 노드에서 setup.sh를 다시 실행합니다. 다음 명령어로 dc-2의 Cassandra 노드를 포함합니다.
    /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 및 동물원을 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  5. dc-2의 경우 모든 Cassandra 노드에서 다시 빌드 명령어를 실행하여 리전 이름(dc-1):
    /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를 삭제합니다. 서버에서 다음을 실행합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. 고객 그룹에서 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

        dc-1이 2개의 Postgres 노드를 실행하도록 구성된 경우 둘 다 삭제하세요.

        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이 두 개의 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 서버를 분석 그룹에 추가합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. 두 Postgres 서버를 분석 그룹에 추가합니다.
        apigee-adminapi.sh analytics groups postgres_server \
          add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost

        Ehere UUID_1dc-1UUID_2는 대기 Postgres에 상응 dc-2의 노드

      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 서버를 분석 그룹에 추가합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. dc-1의 관리 서버 노드에서 Qpid의 UUID를 가져옵니다. dc-2의 노드:
        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 대기 서버를 등록 해제하고 삭제합니다. <ph type="x-smartling-placeholder">
        </ph>
      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. 2개의 데이터 센터에 대해 올바른 복제 계수로 Cassandra 키스페이스를 업데이트합니다. 나 두 데이터 센터 중 하나의 Cassandra 서버에서 이 단계를 한 번만 실행하면 됩니다.
    1. Cassandra cqlsh 유틸리티를 시작합니다.
      /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 'cqlsh>'에서 다음 CQL 명령어를 실행합니다. 복제를 설정하라는 프롬프트가 Cassandra 키스페이스 레벨을 제공합니다. <ph type="x-smartling-placeholder">
        </ph>
      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. 데이터 센터 전반에 걸쳐 지원하려는 각 조직 및 환경에 대해 다음을 수행합니다. <ph type="x-smartling-placeholder">
      </ph>
    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은 MP_POD 속성에 포함할 수 있습니다.

    2. 조직 및 환경에 새 메시지 프로세서를 추가합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. dc-2의 관리 서버 노드에서 dc-2의 메시지 프로세서 노드:
        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 프록시의 이름입니다.