데이터 센터 추가

Private Cloud용 Edge v4.18.01

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

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

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

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

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



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

    각 데이터 센터의 ZK_CLIENT_HOSTS 속성에는 데이터 센터의 모든 주Keeper 노드에 데이터 센터에 있는 주Keeper 노드의 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.121:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.121:1, 192.168.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 confiig 파일을 사용하여 원본 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에서 모든 Cassandra 노드에서 재빌드 명령어를 실행하여 dc-1의 리전 이름을 지정합니다.
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP 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 노드가 마스터/대기 모드로 실행되도록 이미 구성된 경우 이 절차의 일환으로 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 server list -r dc-1 -p analytics -t postgres-server --admin adminEmail --pwd adminPword --host localhost

      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 속성을 사용하여 애널리틱스 그룹의 이름을 설정할 수 있습니다.

      분석 및 소비자 그룹의 이름을 잘 모르는 경우 다음 명령어를 사용하여 표시합니다.
      > apigee-adminapi.sh analytics groups list --admin adminEmail --pwd adminPword --host localhost

      이 명령어는 이름 필드에 분석 그룹 이름을, 소비자 그룹 필드에 소비자 그룹 이름을 반환합니다.
    4. dc-1의 관리 서버 노드의 애널리틱스 그룹에서 기존 Postgres 서버를 삭제합니다.
      1. Consumer-group에서 Postgres 노드를 삭제합니다.
        > apigee-adminapi.sh analytics groupsconsumer_groups datastores remove -g axgroup-001 -cconsumer-group-001 -u UUID -Y --admin adminEmail --pwd adminPword --host localhost Y UUID, my_group_admin-groups 12가 실행됩니다.

        > apigee-adminapi. > apigee-adminapi. - 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 노드, postgres 그룹(postgres 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

        여기서 dc_1dc_res2 노드, Postgres 노드에 해당하는 UUID.2 노드입니다.
      2. PG 서버를 소비자 그룹에 마스터/대기로 추가합니다.
        > apigee-adminapi.sh analytics groupsconsumer_groups datastores add -g axgroup-001 -cconsumer-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 server list -r dc-2 -p central -t qpid-server --admin adminEmail --pwd adminPword --host adminEmail

        반환된 localhost의 UUID 끝에 표시됩니다. 해당 값을 저장합니다.
      2. dc-1의 관리 서버 노드에서 Qpid 노드를 분석 그룹에 추가합니다 (두 명령어 실행).
        >apigee-adminapi.sh analytics groups qpid_server add -g axgroup-001 -u "UUID_1 --admin adminEmail --pwd adminPword --admin adminEmail --pwd adminPword --admin-admin2 api > adminPword --admin-admin-admin2 api 1 localhost-admin-admin-admin2 api > localhost_admin-admin-admin-admin2 localhost-admin-admin-admin2 localhost-admin-admin-admin-group

      3. dc-1의 관리 서버 노드에서 Qpid 노드를 소비자 그룹에 추가합니다 (두 명령어 실행 모두 실행).
        > apigee-adminapi.sh analytics groupsconsumer_groupsconsumer add -g axgroup-001 -cconsumer-group-001 -u "UUID_1" --admin admin
        Email
        --pwd
        adminPword
        --admin admin
        email
        --pwd
        adminPword >
    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는 Post-gres의 이전 대기 노드입니다.
      2. 기존 dc-1 Postgres 대기 서버를 삭제합니다.
        참고: 이 명령어는 Postgres 서버 노드를 제거하지 않습니다. 에지 노드 목록에서만 삭제됩니다. 필요한 경우 나중에 노드에서 Postgres를 제거할 수 있습니다.
        > apigee-adminapi.sh server 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 역할 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "system_traces" WITH refresh = { '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 config

      여기서 Gateway-2
    2. 조직 및 환경에 새 메시지 프로세서를 추가합니다.
      1. dc-2의 관리 서버 노드에서 dc-2에 있는 메시지 프로세서 노드의 UUID를 가져옵니다.
        > apigee-adminapi.sh server 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 server add -o orgName -e envName -u UUID --admin adminEmail --pwd adminPword --hostEmail
    3. dc-1의 관리 서버 노드에서 조직을 확인합니다.
      > apigee-adminapi.sh orgs apis -o orgName -a apiProxyName --admin adminEmail --pwd adminPword --host localhost


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