데이터 센터 추가

Private Cloud용 Edge v. 4.17.05

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

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

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

  • OpenLDAP
    각 데이터 센터에는 복제가 사용 설정된 자체 OpenLDAP 서버가 있습니다. 새 데이터 센터를 설치하고 복제를 사용하도록 OpenLDAP를 구성해야 하며 복제를 사용하도록 기존 데이터 센터에서 OpenLDAP 서버를 재구성해야 합니다.
  • ZooKeeper
    다음에 대한 ZK_HOSTS 속성 두 데이터 센터에서 모두 같은 순서로 정렬하고 노드를 ':observer' 한정자로 표시합니다. ':observer' 수정자가 없는 노드를 'voters'라고 합니다. 홀수 '투표자' 수 변경할 수 있습니다

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



    아래 표시된 구성 파일 예에서 노드 9는 노드 1, 2, 3, 7, 8이라는 5명의 투표자가 포함되도록 ':observer' 한정자를 추가합니다.

    ZK_CLIENT_HOSTS용 각 데이터 센터에 대한 속성을 변경하려면 주키퍼의 IP 주소 또는 DNS 이름만 지정하세요. 데이터의 모든 ZuKeeper 노드에 대해 동일한 순서로 데이터 센터의 노드 센터를 방문하세요.
  • Cassandra
    모든 데이터 센터에 동일한 수의 Cassandra 노드가 있어야 합니다.

    각 데이터의 CASS_HOSTS 두 데이터에 대해 DNS 이름이 아닌 모든 Cassandra IP 주소를 지정해야 합니다. 있습니다. 데이터 센터 1의 경우 해당 데이터 센터의 Cassandra 노드를 먼저 나열합니다. 데이터 센터용 2. 먼저 해당 데이터 센터의 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 노드를 실행하도록 이미 구성된 경우 그런 다음, 이 절차의 일부로 기존 대기 노드를 등록 취소하고 새 데이터 센터의 대기 노드로 교체할 수 있습니다.

    다음 표는 두 시나리오 모두의 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

구성 파일 만들기

다음은 두 데이터 센터에 대한 자동 구성 파일로, 각 데이터는 센터에는 설치 토폴로지. 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
BIND_ON_ALL_INTERFACES=y
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
BIND_ON_ALL_INTERFACES=y
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를 다시 실행합니다. confiig 파일:dc-2의 Cassandra 노드를 포함합니다.
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
  2. dc-1의 경우 관리 서버 노드에서 setup.sh를 다시 실행합니다.
    &gt; /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의 리전 이름:
    &gt; /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP 재빌드 dc-1
  6. dc-2의 경우 적절한 노드에 관리 서버를 설치합니다.
    &gt; /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. dc-2의 관리 서버 노드에서 apigee-provisionapigee-adminapi.sh 유틸리티:
    &gt; /opt/apigee/apigee-service/bin/apigee-service apigee-provision 설치
  8. dc-2의 경우 적절한 컴퓨터에 경로 및 메시지 프로세서를 설치합니다. 노드:
    &gt; /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
  9. dc-2에서 적절한 노드에 Qpid를 설치합니다.
    &gt; /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
  10. dc-2에서 적절한 노드에 Postgres를 설치합니다.
    &gt; /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
  11. Postgres 노드의 Postgres 마스터/대기 모드를 설정합니다. dc-1의 Postgres 노드는 마스터이고 dc-2의 Postgres 노드는 대기 서버입니다.

    참고: dc-1이 이미 두 개의 Postgres를 포함하도록 구성된 경우 노드가 마스터/대기 모드에서 실행되는 경우, 이 절차의 일부로 dc-1에 기존 마스터 Postgres 노드를 마스터로 지정하고 대기 서버로 dc-2의 Postgres 노드를 사용합니다. 이 절차의 후반부에서는 dc-1에서 기존 Postgres 대기 서버를 등록 취소합니다.
    1. dc-1의 마스터 노드에서 다음을 설정하도록 구성 파일을 수정합니다.
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    2. 새 마스터에서 복제를 사용 설정합니다.
      &gt; /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 데이터:
      &gt; /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql 중지
      &gt; rm -rf /opt/apigee/data/apigee-postgresql/

      참고: 필요한 경우 삭제하기 전에 이 데이터를 백업할 수 있습니다.
    5. dc-2에서 대기 노드를 구성합니다.
      &gt; /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-waitby -f configFile
  12. dc-1에서 분석 구성을 업데이트하고 조직을 구성합니다.
    1. dc-1의 관리 서버 노드에서 Postgres의 UUID를 가져옵니다. 노드:
      &gt; apigee-adminapi.sh 서버 list -r dc-1 -p analytics -t postgres-server --admin adminEmail --pwd adminPword --호스트 localhost
      <ph type="x-smartling-placeholder">
      </ph> UUID는 반환된 데이터의 끝에 표시됩니다. 값을 저장합니다.

      참고: dc-1이 두 개의 Postgres 노드를 실행하도록 구성된 경우 2개의 IP 주소와 UUID가 출력됩니다. 두 UUID를 모두 저장합니다. IP에서 마스터용 UUID와 마스터용 UUID를 확인할 수 있어야 합니다. 사용할 수 있습니다
    2. dc-2의 관리 서버 노드에서 Postgres의 UUID를 가져옵니다. 노드 풀로 구성해야 합니다 값을 저장합니다.
    3. dc-1의 관리 서버 노드에서 분석 및 소비자 그룹입니다 아래의 명령어 중 상당수는 이러한 정보가 필요합니다.
      기본적으로 분석 그룹의 이름은 axgroup-001이고 소비자의 이름은 그룹은 consumer-group-001입니다. 리전의 자동 구성 파일에서 AXGROUP 속성을 사용하여 분석 그룹의 보고서를 생성합니다.

      분석 그룹과 소비자 그룹의 이름을 잘 모르는 경우 다음을 사용하세요. 명령어를 사용하여 이를 표시합니다.
      &gt; Apigee-adminapi.sh 애널리틱스 groups list --admin adminEmail --pwd adminPword --host localhost

      이 명령어는 이름 필드에 애널리틱스 그룹 이름을 반환하고 소비자 그룹을 반환합니다. 고객 그룹 필드에 입력합니다.
    4. dc-1의 관리 서버 노드에서 기존 Postgres를 삭제합니다. 서버에서 다음을 실행합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. 고객 그룹에서 Postgres 노드를 삭제합니다.
        &gt; apigee-adminapi.sh 애널리틱스 그룹 consumer_groups 데이터 스토어 삭제 -g axgroup-001 -c consumer-group-001 -u UUID -Y --admin adminEmail --pwd adminPword - 호스트 localhost

        dc-1이 2개의 Postgres 노드를 실행하도록 구성된 경우 둘 다 삭제:
        &gt; apigee-adminapi.sh 애널리틱스 그룹 consumer_groups 데이터 스토어 삭제 -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" -Y --admin adminEmail --pwd adminPword --호스트 localhost
      2. 분석 그룹에서 Postgres 노드를 삭제합니다.
        &gt; apigee-adminapi.sh 애널리틱스 그룹 postgres_server 삭제 -g axgroup-001 -u UUID -Y --admin adminEmail --pwd adminPword --호스트 localhost

        dc-1이 두 개의 Postgres 노드를 마스터/대기 모드로 실행되도록 구성된 경우 둘 다:
        &gt; apigee-adminapi.sh analytics 그룹 postgres_server 삭제 -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail --pwd adminPword - 호스트 localhost
    5. dc-1의 관리 서버 노드에서 새 마스터/대기를 추가합니다. Postgres 서버를 분석 그룹에 추가합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. 두 Postgres 서버를 분석 그룹에 추가합니다.
        &gt; apigee-adminapi.sh 애널리틱스 그룹 postgres_server add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail --pwd adminPword --호스트 localhost

        여기서 UUID_1dc-1UUID_2는 대기 Postgres에 해당합니다. dc-2의 노드
      2. PG 서버를 소비자 그룹에 마스터/대기 모드로 추가합니다.
        &gt; apigee-adminapi.sh 애널리틱스 그룹 consumer_groups datastores add -g axgroup-001 -c consumer-group-001 -u 'UUID_1,UUID_2' --admin adminEmail --pwd adminPword - 호스트 localhost
    6. dc-2의 Qpid 서버를 분석 그룹에 추가합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. dc-1의 관리 서버 노드에서 Qpid의 UUID를 가져옵니다. dc-2의 노드:
        &gt; apigee-adminapi.sh 서버 목록 -r dc-2 -p central -t qpid-server --admin adminEmail --pwd adminPword --호스트 localhost
        <ph type="x-smartling-placeholder">
        </ph> UUID는 반환된 데이터의 끝에 표시됩니다. 해당 값을 저장합니다.
      2. dc-1의 관리 서버 노드에서 Qpid 노드를 분석 그룹:
        &gt;apigee-adminapi.sh 애널리틱스 그룹 qpid_server add -g axgroup-001 -u 'UUID_1 UUID_2' --admin adminEmail --pwd adminPword --호스트 localhost
      3. dc-1의 관리 서버 노드에서 Qpid 노드를 소비자 그룹:
        &gt; apigee-adminapi.sh 애널리틱스 그룹 consumer_groups 소비자 추가 -g axgroup-001 -c consumer-group-001 -u 'UUID_1,UUID_2' --admin adminEmail --pwd adminPword - 호스트 localhost
    7. dc-1에서 이전 Postgres 대기 서버를 등록 해제하고 삭제합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. 기존 dc-1 Postgres 대기 서버를 등록 취소합니다.
        &gt; apigee-adminapi.sh 서버 등록 취소 -u UUID -r dc-1 -p analytics -t postgres-server -Y --admin adminEmail --pwd adminPword --호스트 localhost
        <ph type="x-smartling-placeholder">
        </ph> UUID가 이전 대기 모드임 dc-1의 Postgres 노드
        에서 확인하시기 바랍니다.
      2. 기존 dc-1 Postgres 대기 서버(
        )를 삭제합니다. 참고: 이 명령어는 Postgres 서버 노드를 제거하지 않습니다. 그것은 Edge 노드 목록에서만 삭제합니다. 나중에 Postgres를 사용할 수 있습니다
        &gt; apigee-adminapi.sh 서버 삭제 -u UUID --admin adminEmail --pwd adminPword - 호스트 localhost
  13. 2개의 데이터 센터에 대해 올바른 복제 계수로 Cassandra 키스페이스를 업데이트합니다. 나 두 데이터 센터 중 하나의 Cassandra 서버에서 이 단계를 한 번만 실행하면 됩니다.

    참고: 아래의 모든 명령어는 복제 계수를 '3'으로 설정하며 이는 3개의 Cassandra 노드가 있어야 합니다 설치에 맞게 이 값을 수정합니다.
    1. Cassandra cqlsh 유틸리티를 시작합니다.
      &gt; /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 'cqlsh>'에서 다음 CQL 명령어를 실행합니다. 복제를 설정하라는 프롬프트가 Cassandra 키스페이스 레벨을 제공합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. cqlsh&gt; 대체 KEYSPACE 'identityzone' WITH 복제본 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' } 를 통해 개인정보처리방침을 정의할 수 있습니다.
      2. cqlsh&gt; 대체 키스페이스 'system_traces' WITH 복제본 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. 다음 명령어를 사용하여 키스페이스를 확인합니다.
        cqlsh&gt; 다음에서 * 선택 system.schema_keyspaces;
      4. cqlsh 종료:
        cqlsh&gt; 나가기
  14. dc-1의 모든 Cassandra 노드에서 다음 nodetool 명령어를 실행하여 메모리를 확보합니다.
    &gt; /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP 삭제
  15. 데이터 전반에 걸쳐 지원하려는 각 조직 및 환경마다 센터: <ph type="x-smartling-placeholder">
      </ph>
    1. dc-1의 관리 서버 노드에서 새 MP_POD를 조직:
      &gt; Apigee-adminapi.sh 조직 포드 add -o orgName -r dc-2 -p gateway-2 --admin adminEmail --pwd adminPword --호스트 로컬 호스트
      <ph type="x-smartling-placeholder">
      </ph> 여기서 gateway-2는 MP_POD에 의해 정의된 게이트웨이 포드의 이름입니다. 속성을 설정합니다.
    2. 조직 및 환경에 새 메시지 프로세서를 추가합니다. <ph type="x-smartling-placeholder">
        </ph>
      1. dc-2의 관리 서버 노드에서 dc-2의 메시지 프로세서 노드:
        &gt; apigee-adminapi.sh 서버 목록 -r dc-2 -p gateway-2 -t message-processor --admin adminEmail --pwd adminPword --호스트 localhost
        <ph type="x-smartling-placeholder">
        </ph> UUID는 반환된 데이터의 끝에 표시됩니다. 해당 값을 저장합니다.
      2. 각 메시지 프로세서에 대한 dc-1의 관리 서버 노드 dc-2에서
        조직의 환경에 메시지 프로세서를 추가합니다. &gt; apigee-adminapi.sh 조직 envs 서버 추가 -o orgName -e envName -u UUID --admin adminEmail --pwd adminPword - 호스트 localhost
    3. dc-1의 관리 서버 노드에서 조직을 확인합니다.
      &gt; apigee-adminapi.sh 조직 API 배포 -o orgName -a apiProxyName --admin adminEmail --pwd adminPword --호스트 로컬 호스트
      <ph type="x-smartling-placeholder">
      </ph> 여기서 apiProxyName은 되었습니다.