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

Edge для частного облака версии 4.17.05

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

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

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

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

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

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

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

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

Как создать файлы конфигурации

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

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

Обратите внимание, что файл конфигурации для центра обработки данных 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 на узлах 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 в центре обработки данных 1:
    1. На первом узле стека BaaS в центре обработки данных 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. Повторите шаги 1 и 2 для остальных узлов стека BaaS.
    4. Перезапустите все узлы стека BaaS.

      Примечание. При перезапуске узлов стека BaaS перезапускайте их в том же порядке, в котором они указаны в 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 проверьте статус:
    > 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.