为 API BaaS 安装多个数据中心

适用于私有云的 Edge v4.18.01

您可以使用主动/主动模式跨多个数据中心安装 API BaaS 配置。本文档介绍了如何向现有 BaaS 数据中心添加 BaaS 数据中心。

添加数据中心时 Cassandra 集群与 Edge 共享

所有数据中心都必须拥有相同数量的 Cassandra 节点。API BaaS 安装 也可以使用自己的 Cassandra 集群,也可以与 Edge 共享 Cassandra 集群。

如果 BaaS 安装与 Edge 共享 Cassandra 集群,您必须更新 管理服务器,将其配置为识别 Cassandra 节点中的 新数据中心

更新现有数据中心

若要添加新的 BaaS 数据中心(数据中心 2),您需要执行安装和配置新数据中心的步骤,但同时也需要更新原始 BaaS 数据中心(数据中心 1)。我们之所以需要进行这些修改,是因为:

  • 您要在新数据中心添加新的 Cassandra 节点,这些节点必须可供现有数据中心访问。
  • 您必须配置数据中 BaaS 栈节点使用的复制信息 以包含来自数据中心 2 的信息。在下列日期之前,您无法执行该配置: 数据中心 2。

要在数据中心 1 上执行这些更新,您需要更新用于 安装数据中心 1,然后在 Cassandra 数据的 Cassandra 节点上重新运行 apigee-setup 中心 1。如果数据中心 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. 安装 Cassandra,既可以作为现有 Edge 安装的一部分进行安装,也可以作为独立版本进行安装 BaaS 集群:
    1. 在第一个实例上安装 Edge apigee-setup 实用程序 使用互联网或非互联网过程的 dc-2 机器 8 的 Cassandra 节点。如需了解详情,请参阅安装 Edge apigee-setup 实用程序
    2. 在命令提示符处,运行设置脚本以在第一个节点上安装 Cassandra:
      &gt; /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 节点上,修改配置文件以从 数据中心 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. 在 dc-1 的第一个 Cassandra 节点上,使用 包含 dc-2 中的 Cassandra 节点:
    &gt; /opt/apigee/apigee-setup/bin/setup.sh -p c -f configFile
  6. 对 dc-1 中其余的 Cassandra 节点重复第 6 步和第 7 步。
  7. 如果您要连接到与 Edge 共享的 dc-1 的 Cassandra 集群, 将 dc-2 Cassandra 节点添加到 dc-1 的管理服务器节点的配置文件中,然后运行 setup.sh:
    &gt; /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile
  8. 使用正确的复制因子更新 Cassandra 键空间,以适应两个数据中心。您只需在任一数据中心的任何 Cassandra 服务器上运行此步骤一次:

    注意:以下命令都将复制因子设置为“3”,表示集群中有 3 个 Cassandra 节点。根据需要修改此值,以便安装。
    1. 启动 Cassandra cqlsh 实用程序:
      > /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 在“cqlsh>”处执行以下 CQL 命令提示设置复制 级别:
      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&gt;ALTER KEYSPACE“system_auth”WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3'};
      6. 使用以下命令查看键空间:
        cqlsh&gt;选择 * 从 system.schema_keyspaces;
      7. 退出 cqlsh:
        cqlsh> exit
  9. 在 dc-2 中的所有 Cassandra 节点上,运行 rebuild 命令,指定 dc-1 的区域名称:
    > /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP rebuild dc-1
  10. 运行“nodetool status”并验证所有 Cassandra 节点 “自有”值为“100%”:
    &gt; /opt/apigee/apigee-cassandra/bin/nodetool status
  11. 在 dc-2 中安装 BaaS:
    1. 修改配置文件,以仅列出 dc-2 中的 Cassandra 节点:
      # List dc-2 Cassandra nodes,
      # omitting Cassandra data center and rack suffix
      CASS_HOSTS="$IP8 $IP9 $IP10"
    2. 在 dc-2 的节点 4、5 和 6 上安装 ElasticSearch:
      &gt; /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 门户:
      &gt; /opt/apigee/apigee-setup/bin/setup.sh -p p -f configFile
  12. 更新数据中心 1 中的 BaaS 堆栈节点:
    1. 在数据中心 1 中的第一个 BaaS Stack 节点上,使用编辑器修改 /opt/apigee/customer/application/usergrid.properties。如果该文件不存在,请创建该文件。
    2. 将以下属性添加到 usergrid.properties
      # 与 BAAS_CLUSTER_SEEDS 的值相同
      # 不带双引号。
      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 栈节点重复执行步骤 a 和 b。
    4. 重启所有 BaaS Stack 节点。

      注意:重启 BaaS Stack 节点时,请按照 BAAS_CLUSTER_SEEDS 中列出的顺序重启这些节点。 BAAS_CLUSTER_SEEDS 最多列出两个堆栈节点。按顺序重启这两个节点后,您可以按任意顺序重启其余节点。

      > /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&gt;更改键区 &quot;Apigee_Baas_dc_1&quot;WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3' };
      2. cqlsh&gt;更改键区 &quot;Apigee_Baas_dc_2&quot;WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-2': '3' };
      3. 使用以下命令查看键空间:
        cqlsh&gt;选择 * system.schema_keyspaces;
      4. 退出 cqlsh:
        cqlsh&gt;退出

第二个数据中心现已安装完毕。

完成两个数据中心的安装和配置后,您可以 按照以下步骤验证安装:

  1. 在所有 BaaS 堆栈节点上,检查状态:
    &gt;curl 0:8080/status
  2. 检查令牌 API 调用是否有效:
    &gt;curl -X POST &quot;http://localhost:8080/management/token&quot;-d &#39;{&quot;grant_type&quot;:&quot;password&quot;, "username":"adminEmail","password":"pWord"}'
  3. 请尝试登录 dc-2 的 BaaS 门户。确认一下,所有数据都复制到 dc-2 中 例如在 dc-1 中创建的集合。