데이터 센터 추가

Private Cloud용 Edge v4.18.01

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

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

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

  • OpenLDAP
    각 데이터 센터에는 복제가 사용 설정된 자체 OpenLDAP 서버가 있습니다. 새 데이터 센터를 설치할 때는 복제를 사용하도록 OpenLDAP를 구성해야 하며, 복제를 사용하도록 기존 데이터 센터의 OpenLDAP 서버를 재구성해야 합니다.
  • ZooKeeper
    두 데이터 센터의 ZK_HOSTS 속성에는 두 데이터 센터에 있는 모든 주키퍼 노드의 IP 주소 또는 DNS 이름을 동일한 순서로 지정하고 노드를 ':observer' 한정자로 표시합니다. ':observer' 수정자가 없는 노드를 'voter'라고 합니다. 구성에 '투표자'가 홀수 개여야 합니다.

    이 토폴로지에서 호스트 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개를 갖도록 구성된 경우 이 절차의 일환으로 기존 스탠바이 노드를 등록 해제하고 새 데이터 센터의 스탠바이 노드로 교체합니다.

    다음 표에는 두 시나리오의 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 및 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에서 dc-1의 리전 이름을 지정하여 모든 Cassandra 노드에서 다시 빌드 명령어를 실행합니다.
    > /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 노드가 대기 서버입니다.

    참고: dc-1이 이미 마스터/스탠바이 모드에서 실행되는 Postgres 노드 2개를 갖도록 구성된 경우 이 절차의 일부로 dc-1의 기존 마스터 Postgres 노드를 마스터로, dc-2의 Postgres 노드를 스탠바이 서버로 사용합니다. 이 절차의 뒷부분에서 dc-1에서 기존 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는 반환된 데이터 끝에 표시됩니다. 이 값을 저장합니다.

      참고: dc-1이 마스터/스탠바이 모드로 실행되는 Postgres 노드 2개를 갖도록 구성된 경우 출력에 IP 주소와 UUID가 2개 표시됩니다. 두 UUID를 모두 저장합니다. IP에서 마스터용 UUID와 대기 노드용 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 server deregister -u UUID -r dc-1 -p analytics -t postgres-server -Y --admin adminEmail --pwd adminPword --host localhost

        여기서 UUID는 이전 대기 dc Postgres 노드입니다.
      2. 기존 dc-1 Postgres 대기 서버를 삭제합니다.
        참고: 이 명령어를 실행해도 Postgres 서버 노드가 제거되지 않습니다. 이렇게 하면 에지 노드 목록에서만 삭제됩니다. 필요한 경우 나중에 노드에서 Postgres를 제거할 수 있습니다.
        > apigee-adminapi.sh servers delete -u UUID --admin adminEmail --pwd adminPword --host localhost
  13. 두 데이터 센터의 올바른 복제 인수로 Cassandra 키스페이스를 업데이트합니다. 이 단계는 두 데이터 센터의 Cassandra 서버에서 한 번만 실행하면 됩니다.

    참고: 아래 명령어는 모두 복제 계수를 '3'으로 설정하여 클러스터에 Cassandra 노드가 3개 있음을 나타냅니다. 설치에 필요한 경우 이 값을 수정합니다.
    1. Cassandra cqlsh 유틸리티를 시작합니다.
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 'cqlsh>" 프롬프트에서 다음 CQL 명령어를 실행하여 Cassandra 키스페이스의 복제 수준을 설정합니다.
      1. cqlsh> ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. 다음 명령어를 사용하여 키스페이스를 확인합니다.
        cqlsh> select * from system.schema_keyspaces;
      4. cqlsh 종료:
        cqlsh> exit
  14. dc-1의 모든 Cassandra 노드에서 다음 nodetool 명령어를 실행하여 메모리를 확보합니다.
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP 정리
  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 프록시의 이름입니다.