Instalacja wielu centrów danych dla interfejsu API BaaS

Edge dla chmury prywatnej w wersji 4.17.09

Interfejs API BaaS możesz zainstalować w wielu centrach danych, korzystając z konfiguracji aktywny/aktywny. W tym dokumencie opisano, jak dodać centrum danych BaaS do istniejącego centrum danych BaaS.

Dodawanie centrum danych, gdy klaster Cassandra jest udostępniany Edge

Wszystkie centra danych muszą mieć taką samą liczbę węzłów Cassandra. Instalacja API BaaS może używać własnego klastra Cassandra lub udostępniać klaster Cassandra usłudze Edge.

Jeśli instalacja BaaS współużytkuje klaster Cassandra z Edge, musisz zaktualizować serwer zarządzania w pierwotnym centrum danych, aby skonfigurować go do rozpoznawania węzłów Cassandra w nowym centrum danych.

Aktualizowanie istniejącego centrum danych

Dodanie nowego centrum danych BaaS (centrum danych 2) wymaga wykonania czynności związanych z instalacją i konfiguracją nowego centrum danych, ale wymaga też zaktualizowania pierwotnego centrum danych BaaS (centrum danych 1) . Te zmiany są konieczne, ponieważ:

  • Dodajesz nowe węzły Cassandra w nowym centrum danych, które muszą być dostępne dla istniejącego centrum danych.
  • Musisz skonfigurować informacje o replikacji używane przez węzły stosu BaaS w centrum danych 1, aby uwzględnić informacje z centrum danych 2. Nie możesz wykonać tej konfiguracji, dopóki nie zostanie zainstalowane centrum danych 2.

Aby przeprowadzić te aktualizacje w centrum danych 1, zaktualizuj oryginalny plik konfiguracji użyty do zainstalowania centrum danych 1, a następnie ponownie uruchom apigee-setup w węzłach Cassandra centrum danych 1. Jeśli klaster Cassandra dla centrum danych 1 jest udostępniany instalacji Edge, musisz też zaktualizować serwer zarządzania.

Tworzenie plików konfiguracji

Aby zainstalować centrum danych 1, użyj konfiguracji pokazanej w sekcji Instalacja API BaaS. Plik konfiguracji nie musi zawierać żadnych informacji o centrum danych 2 w momencie instalowania centrum danych 1.Informacje te dodasz do pliku konfiguracji po zainstalowaniu centrum danych 2.

Poniżej znajdują się pliki konfiguracji centrum danych 2. Ten plik konfiguracji zakłada, że instalujesz dc-2 na 10 węzłach, zgodnie z opisem w sekcji Topologie instalacji. Jeśli instalujesz na 7 węzłach, odpowiednio zmodyfikuj ten plik.

Zwróć uwagę, że plik konfiguracji centrum danych 2 (dc-2) zawiera informacje o centrum danych 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>"

Dodawanie centrum danych BaaS

  1. Zainstaluj pierwsze centrum danych zgodnie z opisem w artykule Instalacja API BaaS. Ten dokument zawiera plik konfiguracji, którego używasz do instalacji centrum danych 1.
  2. Utwórz plik konfiguracji dla dc-2 w sposób opisany powyżej.
  3. Zainstaluj Cassandrę jako część istniejącej instalacji Edge lub jako samodzielny klaster dla BaaS:
    1. Zainstaluj narzędzie Edge apigee-setup w pierwszym węźle Cassandra w dc-2, na komputerze 8, korzystając z procedury internetowej lub nieinternetowej. Więcej informacji znajdziesz w artykule o instalowaniu narzędzia apigee-setup w Edge.
    2. W wierszu polecenia uruchom skrypt konfiguracyjny, aby zainstalować Cassandrę w pierwszym węźle:
      > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile

      Opcja „-p c” określa, że ma zostać zainstalowana Cassandra.

      Plik konfiguracji musi być dostępny lub możliwy do odczytania przez użytkownika „apigee”.
    3. Powtórz kroki 3 i 4 w przypadku pozostałych węzłów Cassandra, maszyn 9 i 10, w dc-2.
  4. W węzłach Cassandra w dc-1 zmodyfikuj plik konfiguracji, aby dodać węzły Cassandra z centrum danych 2, w zależności od sposobu instalacji Cassandra:

    # List dc-1 nodes first, then dc-2,
    # including Cassandra data center and rack suffix
    CASS_HOSTS="$IP11:1,1 $IP12:1,1 $IP13:1,1 $IP8:2,1 $IP9:2,1 $IP10:2,1"
  5. Na pierwszym węźle Cassandra w dc-1 uruchom setup.sh z nowym plikiem konfiguracji dc-1, który zawiera węzły Cassandra z dc-2:
    > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  6. Powtórz kroki 6 i 7 w przypadku pozostałych węzłów Cassandra w dc-1.
  7. Jeśli łączysz się z klastrem Cassandra dla dc-1 udostępnionym Edge, dodaj węzły Cassandra dc-2 do pliku konfiguracji węzła serwera zarządzania dc-1 i uruchom setup.sh:
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. Zaktualizuj przestrzenie kluczy Cassandra, podając prawidłowy współczynnik replikacji dla 2 centrów danych. Wystarczy, że wykonasz ten krok tylko raz na dowolnym serwerze Cassandra w jednym z centrów danych:

    Uwaga: wszystkie poniższe polecenia ustawiają współczynnik replikacji na „3”, co oznacza 3 węzły Cassandra w klastrze. W razie potrzeby zmień tę wartość w swojej instalacji.
    1. Uruchom narzędzie cqlsh Cassandra:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. Aby ustawić poziomy replikacji dla przestrzeni kluczy Cassandra, uruchom te polecenia CQL po znaku zachęty „cqlsh>”:
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. cqlsh> ALTER KEYSPACE "Apigee_Baas_Locks" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      4. cqlsh> ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      5. cqlsh> ALTER KEYSPACE "system_auth" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      6. Wyświetl przestrzenie kluczy za pomocą polecenia:
        cqlsh> select * from system.schema_keyspaces;
      7. Zamknij cqlsh:
        cqlsh> exit
  9. Na wszystkich węzłach Cassandra w dc-2 uruchom polecenie rebuild, podając nazwę regionu dc-1:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP rebuild dc-1
  10. Uruchom polecenie „nodetool status” w każdym węźle Cassandra i sprawdź, czy wszystkie węzły Cassandra mają wartość „100%” w polu „Owns”:
    > /opt/apigee/apigee-cassandra/bin/nodetool status
  11. Zainstaluj BaaS w dc-2:
    1. Zmodyfikuj plik konfiguracji, aby zawierał tylko węzły Cassandra w dc-2:
      # List dc-2 Cassandra nodes,
      # omitting Cassandra data center and rack suffix
      CASS_HOSTS="$IP8 $IP9 $IP10"
    2. Zainstaluj ElasticSearch na węzłach 4, 5 i 6 centrum danych dc-2:
      > /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
    3. Zainstaluj stos BaaS na węzłach 4, 5 i 6 w dc-2:
      > /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile
    4. Zainstaluj portal BaaS na komputerze 7:
      > /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
  12. Zaktualizuj węzły stosu BaaS w centrum danych 1:
    1. Na pierwszym węźle BaaS Stack w centrum danych 1 zmodyfikuj plik /opt/apigee/customer/application/usergrid.properties w edytorze. Jeśli plik nie istnieje, utwórz go.
    2. Dodaj te właściwości do pliku usergrid.properties:
      # Taka sama wartość jak BAAS_CLUSTER_SEEDS w pliku konfiguracji dc-2,
      # bez cudzysłowów.
      usergrid-deployment_usergrid.cluster.seeds=dc-1:dc1StackIP1,dc-1:dc1StackIP2,dc-2:dc2StackIP1,dc-2:dc2StackIP2

      # Same value as BAAS_CASS_DC_LIST in the dc-2 config file.
      usergrid-deployment_usergrid.cluster.region.list=dc-1,dc-2
    3. Powtórz kroki a i b na pozostałych węzłach BaaS Stack.
    4. Uruchom ponownie wszystkie węzły BaaS Stack.

      Uwaga: podczas ponownego uruchamiania węzłów BaaS Stack uruchamiaj je ponownie w tej samej kolejności, w jakiej są wymienione w BAAS_CLUSTER_SEEDS. BAAS_CLUSTER_SEEDS zawiera maksymalnie 2 węzły Stack. Po ponownym uruchomieniu tych 2 węzłów w odpowiedniej kolejności możesz ponownie uruchomić pozostałe węzły w dowolnej kolejności.

      > /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  13. Zaktualizuj wartości przestrzeni kluczy BaaS. Te przestrzenie kluczy muszą być skonfigurowane do replikacji podczas instalacji, ale nie muszą być skonfigurowane podczas działania. Usunięcie replikacji pozwala też zaoszczędzić pamięć Cassandra.

    Ten krok musisz wykonać tylko raz na dowolnym serwerze Cassandra w jednym z centrów danych:
    1. Uruchom narzędzie cqlsh Cassandra:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. Uruchom te polecenia CQL, aby ustawić poziomy replikacji dla przestrzeni kluczy Cassandra:
      1. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_1" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. Wyświetl przestrzenie kluczy za pomocą polecenia:
        cqlsh> select * from system.schema_keyspaces;
      4. Zamknij cqlsh:
        cqlsh> exit

Instalacja drugiego centrum danych została zakończona.

Po zakończeniu instalacji i konfiguracji obu centrów danych możesz sprawdzić poprawność instalacji, wykonując te czynności:

  1. Sprawdź stan na wszystkich węzłach BaaS Stack:
    > curl 0:8080/status
  2. Sprawdź, czy wywołanie interfejsu API tokena działa:
    > curl -X POST "http://localhost:8080/management/token" -d '{"grant_type":"password", "username":"adminEmail","password":"pWord"}'
  3. Spróbuj zalogować się w portalu BaaS dla dc-2. Sprawdź, czy wszystkie dane są replikowane w dc-2, np. kolekcje utworzone w dc-1.