API BaaS용 여러 데이터 센터 설치

Private Cloud용 Edge v. 4.17.09

활성/활성 구성을 사용하여 여러 데이터 센터에 API BaaS를 설치할 수 있습니다. 이 문서에서는 기존 BaaS 데이터 센터에 BaaS 데이터 센터를 추가하는 방법을 설명합니다.

Cassandra 클러스터가 Edge와 공유될 때 데이터 센터 추가

모든 데이터 센터에는 동일한 수의 Cassandra 노드가 있어야 합니다. API BaaS 설치는 자체 Cassandra 클러스터를 사용하거나 Cassandra 클러스터를 Edge와 공유할 수 있습니다.

BaaS 설치가 Edge와 Cassandra 클러스터를 공유하는 경우 원래 데이터 센터의 관리 서버를 업데이트하여 새 데이터 센터의 Cassandra 노드를 인식하도록 구성해야 합니다.

기존 데이터 센터 업데이트

새 BaaS 데이터 센터 (데이터 센터 2)를 추가하려면 새 데이터 센터를 설치하고 구성하는 단계를 수행해야 하지만 기존 BaaS 데이터 센터(데이터 센터 1)도 업데이트해야 합니다. 이러한 수정이 필요한 이유는 다음과 같습니다.

  • 기존 데이터 센터에서 액세스할 수 있어야 하는 새 데이터 센터에 새 Cassandra 노드를 추가합니다.
  • 데이터 센터 2의 정보를 포함하려면 데이터 센터 1의 BaaS 스택 노드에서 사용하는 복제 정보를 구성해야 합니다. 데이터 센터 2가 설치될 때까지는 이 구성을 수행할 수 없습니다.

데이터 센터 1에서 이러한 업데이트를 수행하려면 데이터 센터 1을 설치하는 데 사용된 원본 구성 파일을 업데이트한 후 데이터 센터 1의 Cassandra 노드에서 apigee-setup을 다시 실행합니다. 데이터 센터 1의 Cassandra 클러스터를 Edge 설치와 공유하는 경우 관리 서버도 업데이트해야 합니다.

구성 파일 만들기

데이터 센터 1을 설치하려면 API BaaS 설치에 표시된 구성을 사용합니다. 데이터 센터 1을 설치할 때는 구성 파일에 데이터 센터 2에 대한 정보를 포함하지 않아도 됩니다.데이터 센터 2를 설치한 후에는 구성 파일에 정보를 추가합니다.

다음은 데이터 센터 2의 구성 파일입니다. 이 구성 파일에서는 설치 토폴로지에 설명된 대로 10개의 노드에 dc-2를 설치한다고 가정합니다. 7개 노드에 설치하는 경우 이 파일을 적절하게 수정하세요.

데이터 센터 2 (dc-2)의 구성 파일에는 데이터 센터 1(dc-1)에 대한 정보가 포함되어 있습니다.

# Specify IP address or DNS name of node for dc-2.
IP1=192.168.1.1   # ElasticSearch
IP2=192.168.1.2   # ElasticSearch
IP3=192.168.1.3   # ElasticSearch
IP4=192.168.1.4   # API BaaS Stack
IP5=192.168.1.5   # API BaaS Stack
IP6=192.168.1.6   # API BaaS Stack
IP7=192.168.1.7   # API BaaS Portal
IP8=192.168.1.8   # Cassandra dc-2 (shared with Edge or standalone)
IP9=192.168.1.9   # Cassandra dc-2 (shared with Edge or standalone)
IP10=192.168.1.10  # Cassandra dc-2 (shared with Edge or standalone)

# Specify node information for dc-1
IP11=192.168.1.11   # Cassandra dc-1 (shared with Edge or standalone)
IP12=192.168.1.12   # Cassandra dc-1 (shared with Edge or standalone)
IP13=192.168.1.13   # Cassandra dc-1 (shared with Edge or standalone)
IP14=192.168.1.14   # API BaaS Stack
IP15=192.168.1.15   # API BaaS Stack

# Must resolve to IP address or DNS name of host - not to 127.0.0.1 or localhost.
HOSTIP=$(hostname -i)

# Define the API BaaS administrator account.  
AS_ADMIN="superuser"    # User name - default is "superuser".
AS_ADMIN_EMAIL=stackAdmin@email.com
AS_PASSWD=stackAdminPWord

# Specify Cassandra data center and rack suffix.
# List dc-2 nodes first, then dc-1.
# Must use IP addresses for CASS_HOSTS, not DNS names.
# CASS_HOSTS="$IP8:2,1 $IP9:2,1 $IP10:2,1 $IP11:1,1 $IP12:1,1 $IP13:1,1"

# Specify the Cassandra region.
REGION=dc-2

# Cassandra uname/pword.
# Even if Cassandra authentication is disabled,
# you must still pass values for these properties.
CASS_USERNAME=cassandra    # Default value
CASS_PASSWORD=cassandra    # Default value

# Specify BaaS Cassandra connection information.
# Specify the data center name as dc-2.
BAAS_CASS_LOCALDC=dc-2    

# Specify both data centers.
BAAS_CASS_DC_LIST=dc-1,dc-2

# Replication is in the form "dataCenterName:#CassandraNodes". 
# Specify both data centers.
BAAS_CASS_REPLICATION=dc-1:3,dc-2:3

# Defines the initial contact points for members of the BaaS cluster. 
# Specify the IP address of no more than two Stack nodes per data center.
# Specify both data centers. 
BAAS_CLUSTER_SEEDS="dc-1:$IP14,dc-1:$IP15,dc-2:$IP4,dc-2:$IP5"

# ElasticSearch IPs or DNS names, separated by spaces, for dc-2.
ES_HOSTS="$IP1 $IP2 $IP3"

# API BaaS Stack information.
# Default cluster name is "apigee_baas"
BAAS_USERGRID_CLUSTERNAME="apigee_baas" 

# URL and port of the load balancer for the API BaaS Stack nodes, 
# or IP/DNS and port 8080 of a single Stack node with no load balancer.
BAAS_USERGRID_URL=http://myloadbalancer:8443

# API BaaS Portal information.
# URL and port number of load balancer, if there is one in front of the Portal,
# or the URL and port of the Portal node.  
BAAS_PORTAL_URL="http://$IP7:9000"

# Portal port. Default value is 9000.
BAAS_PORTAL_LISTEN_PORT=9000 

# SMTP information. BaaS requires an SMTP server.
SMTPHOST=smtp.gmail.com
SMTPPORT=465
SMTPUSER=your@email.com
SMTPPASSWORD=yourEmailPassword
SMTPSSL=y
SMTPMAILFROM="My Company <myco@company.com>"

BaaS 데이터 센터 추가

  1. API BaaS 설치에 설명된 대로 첫 번째 데이터 센터를 설치합니다. 해당 문서에는 데이터 센터 1을 설치하는 데 사용하는 구성 파일이 포함되어 있습니다.
  2. 위에서 설명한 대로 dc-2의 구성 파일을 만듭니다.
  3. 기존 Edge 설치의 일부로 또는 BaaS용 독립형 클러스터로 Cassandra를 설치합니다.
    1. 인터넷 또는 인터넷이 아닌 절차를 사용하여 dc-2(머신 8)의 첫 번째 Cassandra 노드에 Edge apigee-setup 유틸리티를 설치합니다. 자세한 내용은 Edge Apigee-setup 유틸리티 설치를 참고하세요.
    2. 명령 프롬프트에서 설정 스크립트를 실행하여 첫 번째 노드에 Cassandra를 설치합니다.
      > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile

      '-p c' 옵션은 Cassandra를 설치하도록 지정합니다.

      'apigee' 사용자가 구성 파일에 액세스하거나 읽을 수 있어야 합니다.
    3. dc-2에 있는 나머지 Cassandra 노드, 머신 9 및 10에 대해 3단계와 4단계를 반복합니다.
  4. dc-1의 Cassandra 노드에서 구성 파일을 수정하여 Cassandra를 설치한 방법에 따라 데이터 센터 2의 Cassandra 노드를 추가합니다.

    # dc-1 노드를 먼저 나열한 다음 dc-2,
    # Cassandra 데이터 센터 및 랙 서픽스를 포함합니다.
    CASS_HOSTS="$IP11:1,1: $IP12:1,1 $IP138
    :02:1,1 $IP138"
  5. dc-1의 첫 번째 Cassandra 노드에서 dc-2의 Cassandra 노드가 포함된 새로운 dc-1 구성 파일로 setup.sh를 실행합니다.
    > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  6. dc-1의 나머지 Cassandra 노드에 6단계와 7단계를 반복합니다.
  7. 에지와 공유되는 dc-1을 위해 Cassandra 클러스터에 연결하는 경우 dc-1 관리 서버 노드의 구성 파일에 dc-2 Cassandra 노드를 추가하고 setup.sh를 실행합니다.
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. 두 데이터 센터의 올바른 복제 계수로 Cassandra 키스페이스를 업데이트합니다. 두 데이터 센터의 Cassandra 서버에서 이 단계를 한 번만 실행하면 됩니다.

    참고: 아래의 명령어는 복제 계수를 '3'으로 설정하여 클러스터에 Cassandra 노드 3개를 표시합니다. 이 값을 설치에 맞게 수정합니다.
    1. Cassandra cqlsh 유틸리티를 시작합니다.
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 'cqlsh>' 프롬프트에서 다음 CQL 명령어를 실행하여 Cassandra 키스페이스의 복제 수준을 설정합니다.
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH 역할 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas" WITHplication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. cqlsh> ALTER KEYSPACE "Apigee_Baas_Locks" WITHplication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      4. cqlsh> ALTER KEYSPACE "system_traces" WITH refresh = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      5. cqlsh> ALTER KEYSPACE "system_auth" WITH reporting = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      6. 다음 명령어를 사용하여 키스페이스를 확인합니다.
        cqlsh> select * from system.schema_keyspaces;
      7. cqlsh 종료:
        cqlsh> exit
  9. dc-2의 모든 Cassandra 노드에서 dc-1의 리전 이름을 지정하여 재빌드 명령어를 실행합니다.
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP rebuild dc-1
  10. 모든 Cassandra 노드에서 'nodetool status'를 실행하고 모든 Cassandra 노드의 'Owns' 값이 '100%'인지 확인합니다.
    > /opt/apigee/apigee-cassandra/bin/nodetool status
  11. dc-2에 BaaS를 설치합니다.
    1. dc-2의 Cassandra 노드만 나열하도록 구성 파일을 수정합니다.
      # dc-2 Cassandra 노드를 나열합니다.
      # Cassandra 데이터 센터와 랙 접미사 생략
      CASS_HOSTS="$IP8 $IP9 $IP10"
    2. dc-2의 노드 4, 5, 6에 ElasticSearch를 설치합니다.
      > /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
    3. dc-2의 노드 4, 5, 6에 BaaS 스택을 설치합니다.:
      > /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile
    4. 머신 7에 BaaS 포털을 설치합니다.
      > /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
  12. 데이터 센터 1에서 BaaS 스택 노드를 업데이트합니다.
    1. 데이터 센터 1의 첫 번째 BaaS 스택 노드에서 편집기에서 /opt/apigee/customer/application/usergrid.properties를 수정합니다. 파일이 없으면 새로 만듭니다.
    2. 다음 속성을 usergrid.properties에 추가합니다.
      # dc-2 구성 파일의 BAAS_CLUSTER_SEEDS와 동일한 값,
      # 큰따옴표 없이.
      usergrid-deployment_usergrid.cluster.seeds=dc-1:dc1StackIP1,dc-1:dc1StackIP2,dc-2:dc2StackIP1,dc-2:dc2StackIP2

      # dc-2 구성 파일의 BAAS_CASS_DC_LIST와 값이 동일합니다.
      usergrid-deployment_usergrid.cluster.region.list=dc-1,dc-2
    3. 나머지 BaaS 스택 노드에서 a단계와 b단계를 반복합니다.
    4. 모든 BaaS 스택 노드를 다시 시작합니다.

      참고: BaaS 스택 노드를 다시 시작할 때 BAAS_CLUSTER_SEEDS에 나열된 것과 동일한 순서로 다시 시작하세요. BAAS_CLUSTER_SEEDS는 Stack 노드를 최대 2개까지 나열합니다. 두 노드를 순서대로 다시 시작한 후 나머지 노드를 원하는 순서대로 다시 시작할 수 있습니다.

      > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  13. BaaS 키스페이스 값을 업데이트합니다. 이러한 키스페이스는 설치 시 복제용으로 설정해야 하지만 런타임에 설정할 필요는 없습니다. 복제를 삭제하면 Cassandra 메모리도 절약됩니다.

    이 단계는 두 데이터 센터의 Cassandra 서버에서 한 번만 실행하면 됩니다.
    1. Cassandra cqlsh 유틸리티를 시작합니다.
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 다음 CQL 명령어를 실행하여 Cassandra 키스페이스의 복제 수준을 설정합니다.
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH logo = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITHplication = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. 다음 명령어를 사용하여 키스페이스를 확인합니다.
        cqlsh> select * from system.schema_keyspaces;
      4. cqlsh 종료:
        cqlsh> exit

두 번째 데이터 센터 설치가 완료되었습니다.

두 데이터 센터의 설치 및 구성을 완료한 후에는 다음 절차에 따라 설치 유효성을 검사할 수 있습니다.

  1. 모든 BaaS 스택 노드에서 상태를 확인합니다.
    > curl 0:8080/status
  2. 토큰 API 호출이 작동하는지 확인합니다.
    > curl -X POST "http://localhost:8080/management/token" -d '{"grant_type":"password", "username":"adminEmail","password":"pWord"}'
  3. dc-2용 BaaS 포털에 로그인해 보세요. dc-1에 생성된 컬렉션과 같이 모든 데이터가 dc-2에 복제되는지 확인합니다.