Установка нескольких центров обработки данных для API BaaS

Edge for Private Cloud версии 4.17.05

Вы можете установить API BaaS в нескольких центрах обработки данных, используя конфигурацию active/active. В этом документе описывается, как добавить центр обработки данных BaaS в существующий центр обработки данных BaaS.

Добавление центра обработки данных, когда кластер Cassandra используется совместно с Edge

Во всех центрах обработки данных должно быть одинаковое количество узлов Cassandra. При установке API BaaS можно использовать собственный кластер Cassandra или общий кластер Cassandra с Edge.

Если установка BaaS использует кластер Cassandra совместно с Edge, вам необходимо обновить сервер управления в исходном центре обработки данных, чтобы настроить его на распознавание узлов Cassandra в новом центре обработки данных.

Обновление существующего центра обработки данных

Чтобы добавить новый центр обработки данных BaaS (центр обработки данных 2), необходимо выполнить шаги по установке и настройке нового центра обработки данных, а также обновить исходный центр обработки данных BaaS (центр обработки данных 1) . Эти изменения необходимы по следующим причинам:

  • Вы добавляете новые узлы Cassandra в новый центр обработки данных, который должен быть доступен из существующего центра обработки данных.
  • Вам нужно настроить информацию о репликации, используемую узлами BaaS Stack в центре обработки данных 1, чтобы включить информацию из центра обработки данных 2. Вы не сможете выполнить эту настройку, пока не будет установлен центр обработки данных 2.

Чтобы выполнить эти обновления в центре обработки данных 1, обновите исходный файл конфигурации, используемый для установки центра обработки данных 1, а затем повторно запустите apigee-setup на узлах Cassandra центра обработки данных 1. Если кластер Cassandra для центра обработки данных 1 используется совместно с установкой Edge, то вам также необходимо обновить сервер управления.

Создание файлов конфигурации

Для установки первого центра обработки данных используйте конфигурацию, описанную в статье Установка API BaaS. При установке центра обработки данных 1 в файл конфигурации не нужно включать информацию о центре обработки данных 2.Вы добавите ее после установки центра обработки данных 2.

Ниже показаны файлы конфигурации для центра обработки данных 2. В этом файле конфигурации предполагается, что вы устанавливаете dc-2 на 10 узлах, как описано в разделе Топологии установки. Если вы устанавливаете Edge на семь узлов, измените этот файл соответствующим образом.

Обратите внимание, что файл конфигурации для центра обработки данных 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

Как добавить центр обработки данных BaaS

  1. Установите первый центр обработки данных, как описано в статье Установка API BaaS. В этом документе есть файл конфигурации, который вы используете для установки центра обработки данных 1.
  2. Создайте файл конфигурации для dc-2, как описано выше.
  3. Установите Cassandra как часть существующей установки Edge или как отдельный кластер для BaaS:
    1. Установите утилиту Edge apigee-setup на первом узле Cassandra в dc-2 (машина 8), используя процедуру с интернетом или без него. Подробнее о том, как установить утилиту apigee-setup для Edge…
    2. В командной строке запустите скрипт настройки, чтобы установить Cassandra на первом узле:
      > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile

      Параметр -p c указывает, что нужно установить Cassandra.

      Файл конфигурации должен быть доступен или доступен для чтения пользователю apigee.
    3. Повторите шаги 3 и 4 для остальных узлов Cassandra (машины 9 и 10) в dc-2.
  4. На узлах Cassandra в dc-1 добавьте в файл конфигурации узлы Cassandra из центра обработки данных 2 в зависимости от того, как вы установили Cassandra:

    # Сначала укажите узлы dc-1, затем dc-2,
    # включая центр обработки данных Cassandra и суффикс стойки
    CASS_HOSTS="$IP11:1,1 $IP12:1,1 $IP13:1,1 $IP8:2,1 $IP9:2,1 $IP10:2,1"
  5. На первом узле Cassandra в dc-1 запустите setup.sh с новым файлом конфигурации dc-1, который включает узлы Cassandra из dc-2:
    > /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  6. Повторите шаги 6 и 7 для остальных узлов Cassandra в dc-1.
  7. Если вы подключаетесь к кластеру Cassandra для dc-1, который используется совместно с Edge, добавьте узлы Cassandra dc-2 в файл конфигурации для узла сервера управления dc-1 и выполните команду setup.sh:
    > /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. Обновите пространства ключей Cassandra, указав правильный коэффициент репликации для двух центров обработки данных. Этот шаг нужно выполнить только один раз на любом сервере Cassandra в любом центре обработки данных.

    Примечание. Во всех приведенных ниже командах коэффициент репликации равен 3, что указывает на три узла Cassandra в кластере. Измените это значение в соответствии с вашими требованиями.
    1. Запустите утилиту Cassandra cqlsh:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. Выполните следующие команды CQL в командной строке cqlsh>, чтобы задать уровни репликации для пространства ключей Cassandra:
      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. Посмотрите пространства ключей с помощью команды:
        cqlsh> select * from system.schema_keyspaces;
      7. Выйдите из cqlsh:
        cqlsh> exit
  9. На всех узлах Cassandra в dc-2 выполните команду rebuild, указав название региона dc-1:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP rebuild dc-1
  10. Выполните команду nodetool status на каждом узле Cassandra и убедитесь, что для всех узлов Cassandra в поле Owns указано значение 100 %.
    > /opt/apigee/apigee-cassandra/bin/nodetool status
  11. Установите BaaS в dc-2:
    1. Измените файл конфигурации, чтобы в нем были указаны только узлы Cassandra в dc-2:
      # List dc-2 Cassandra nodes,
      # omitting Cassandra data center and rack suffix
      CASS_HOSTS="$IP8 $IP9 $IP10"
    2. Установите ElasticSearch на узлах 4, 5 и 6 в dc-2:
      > /opt/apigee/apigee-setup/bin/setup.sh -p e -f configFile
    3. Установите BaaS Stack на узлах 4, 5 и 6 в dc-2:
      > /opt/apigee/apigee-setup/bin/setup.sh -p b -f configFile
    4. Установите портал BaaS на компьютер 7:
      > /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
  12. Обновите узлы BaaS Stack в центре обработки данных 1:
    1. На первом узле BaaS Stack в центре обработки данных 1 откройте в редакторе файл /opt/apigee/customer/application/usergrid.properties. Если файла нет, создайте его.
    2. Добавьте в файл usergrid.properties следующие свойства:
      # То же значение, что и BAAS_CLUSTER_SEEDS в файле конфигурации dc-2,
      # без двойных кавычек.
      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. Повторите шаги "а" и "б" для остальных узлов стека BaaS.
    4. Перезапустите все узлы стека BaaS.

      Примечание. Перезапускать узлы BaaS Stack нужно в том же порядке, в котором они перечислены в BAAS_CLUSTER_SEEDS. BAAS_CLUSTER_SEEDS содержит не более двух узлов Stack. После перезапуска этих двух узлов в указанном порядке вы можете перезапустить оставшиеся узлы в любом порядке.

      > /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 replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh> ALTER KEYSPACE "Apigee_Baas_dc_2" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. Посмотрите пространства ключей с помощью команды:
        cqlsh> select * from system.schema_keyspaces;
      4. Выйдите из cqlsh:
        cqlsh> exit

Установка второго центра обработки данных завершена.

После завершения установки и настройки двух центров обработки данных вы можете проверить установку, выполнив следующую процедуру:

  1. Проверьте статус на всех узлах BaaS Stack:
    > curl 0:8080/status
  2. Проверьте, работает ли вызов API токена:
    > curl -X POST "http://localhost:8080/management/token" -d '{"grant_type":"password", "username":"adminEmail","password":"pWord"}'
  3. Попробуйте войти на портал BaaS для dc-2. Убедитесь, что все данные реплицированы в dc-2, например коллекции, созданные в dc-1.