为 API BaaS 安装多个数据中心

适用于私有云的 Edge v. 4.17.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

添加 BaaS 数据中心

  1. 按照 API BaaS 中所述安装第一个数据中心 安装。该文档包含您在安装数据时使用的配置文件 中心 1。
  2. 按照上述说明创建 dc-2 的配置文件。
  3. 安装 Cassandra,既可以作为现有 Edge 安装的一部分进行安装,也可以作为独立版本进行安装 BaaS 集群: <ph type="x-smartling-placeholder">
      </ph>
    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. 对剩余的 Cassandra 节点(机器 9 和 10)重复步骤 3 和 4, dc-2。
  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”,表示 三个 Cassandra 节点根据需要修改此值,以便安装。
    1. 启动 Cassandra cqlsh 实用程序:
      &gt; /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 在“cqlsh>”处执行以下 CQL 命令提示设置复制 级别: <ph type="x-smartling-placeholder">
        </ph>
      1. cqlsh&gt;替代 KEYSPACE“Apigee_Baas_dc_1”WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3'};
      2. cqlsh&gt;替代 KEYSPACE“Apigee_Baas”WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3'};
      3. cqlsh&gt;替代 KEYSPACE“Apigee_Baas_Locks”WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3'};
      4. cqlsh&gt;更改键区 “system_traces”WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3'};
      5. cqlsh&gt;替代 KEYSPACE“system_auth”WITH 复制 = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3'};
      6. 使用以下命令查看键空间:
        cqlsh&gt;选择 * 从 system.schema_keyspaces;
      7. 退出 cqlsh:
        cqlsh&gt;退出
  9. 在 dc-2 中的所有 Cassandra 节点上,运行重新构建命令,并指定 dc-1:
    &gt; /opt/apigee/apigee-cassandra/bin/nodetool -h cassandraIP 重建 dc-1
  10. 运行“nodetool status”并验证所有 Cassandra 节点 “自有”值为“100%”:
    &gt; /opt/apigee/apigee-cassandra/bin/nodetool status
  11. 在 dc-2 中安装 BaaS: <ph type="x-smartling-placeholder">
      </ph>
    1. 修改配置文件,仅列出 dc-2 中的 Cassandra 节点:
      # 列出 dc-2 Cassandra 节点,
      # 省略 Cassandra 数据中心和机架后缀
      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 堆栈:
      &gt; /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 栈节点: <ph type="x-smartling-placeholder">
      </ph>
    1. 在数据中心 1 的第一个 BaaS 栈节点上,修改 /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

      # 与 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 个列表位于 最多两个堆栈节点按顺序重启这两个节点后,您就可以 按任意顺序排列其余节点

      &gt; /opt/apigee/apigee-service/bin/apigee-service baas-usergrid restart
  13. 更新 BaaS 键空间值。这些键空间必须在安装时设置才能进行复制 但不一定是在运行时取消复制还可以节省 Cassandra 内存。

    您只需在任一数据中心的任何 Cassandra 服务器上运行此步骤一次: <ph type="x-smartling-placeholder">
      </ph>
    1. 启动 Cassandra cqlsh 实用程序:
      &gt; /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 执行以下 CQL 命令,设置 Cassandra 的复制级别 键空间: <ph type="x-smartling-placeholder">
        </ph>
      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 中创建的集合。