데이터 센터 추가

Private Cloud용 Edge v4.18.05

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

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

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

  • OpenLDAP

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

  • ZooKeeper

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

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

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

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

  • Cassandra

    모든 데이터 센터의 Cassandra 노드 수는 동일해야 합니다.

    각 데이터 센터의 CASS_HOSTS의 경우 두 데이터 센터의 모든 Cassandra IP 주소 (DNS 이름 아님)를 지정해야 합니다. 데이터 센터 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.205:2,1 192.168.124.206:2,1'

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

  • Postgres

    기본적으로 Edge는 모든 Postgres 노드를 마스터 모드로 설치합니다. 그러나 데이터 센터가 여러 개인 경우 마스터 노드가 실패해도 스탠바이 노드가 트래픽을 계속 전송할 수 있도록 마스터-스탠바이 복제를 사용하도록 Postgres 노드를 구성합니다. 일반적으로 한 데이터 센터에 마스터 Postgres 서버를, 다른 데이터 센터에 대기 서버를 구성합니다.

    기존 데이터 센터가 이미 마스터/스탠바이 모드로 실행되는 Postgres 노드 2개를 갖도록 구성된 경우 이 절차의 일환으로 기존 스탠바이 노드를 등록 해제하고 새 데이터 센터의 스탠바이 노드로 교체합니다.

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

    이전 이후

    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 및 ZooKeeper 노드를 새 데이터 센터에 추가하고 복제를 사용하도록 OpenLDAP를 재구성해야 하므로 이러한 수정이 필요합니다.

구성 파일 만들기

아래는 두 데이터 센터의 무음 구성 파일입니다. 각 데이터 센터에는 설치 토폴로지와 같이 6개의 노드가 있습니다. dc-1의 구성 파일은 다음에 추가 설정을 추가합니다.

  • 두 OpenLDAP 노드 간에 복제를 사용하여 OpenLDAP를 구성합니다.
  • dc-2의 새 Cassandra 및 ZooKeeper 노드를 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 및 ZooKeeper를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  5. dc-2에서 모든 Cassandra 노드에서 리빌드 명령어를 실행하고 dc-1의 리전 이름을 지정합니다.
    /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP rebuild dc-1
  6. dc-2에서 적절한 노드에 관리 서버를 설치합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. dc-2의 관리 서버 노드에서 apigee-adminapi.sh 유틸리티를 설치하는 apigee-provision를 설치합니다.
    /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

      이 명령어는 이름 필드에 애널리틱스 그룹 이름을, consumer-groups 필드에 소비자 그룹 이름을 반환합니다.

    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

        dc-1이 마스터/스탠바이 모드로 실행되는 Postgres 노드 2개를 갖도록 구성된 경우 둘 다 삭제합니다.

        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 노드 2개를 갖도록 구성된 경우 둘 다 삭제합니다.

        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 서버를 마스터/스탠바이로 consumer-group에 추가합니다.
        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 -h cassandraIP cleanup
  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 속성에 의해 정의된 게이트웨이 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 프록시의 이름입니다.