添加数据中心

本文档介绍如何向现有数据 中心添加数据中心(也称为区域)。

添加数据中心之前的注意事项

在安装添加数据中心之前,您必须了解如何在数据中心之间配置 OpenLDAP, ZooKeeper、Cassandra 和 Postgres 服务器。您还必须确保 两个数据中心内的节点之间已打开必要的端口。

  • OpenLDAP

    每个数据中心都有自己的 OpenLDAP 服务器,并且配置为启用复制。安装新数据中心时,您必须将 OpenLDAP 配置为使用复制,并且必须重新配置现有数据中心内的 OpenLDAP 服务器以使用复制。

  • ZooKeeper

    对于两个数据中心的 ZK_HOSTS 属性,请按相同的顺序指定两个数据中心中所有 ZooKeeper 节点的 IP 地址或 DNS 名称,并使用“:observer”修饰符标记任何节点。没有 :observer 修饰符的节点称为“投票者”。您的配置中必须有奇数个 “投票者”。

    在此拓扑中,主机 9 上的 ZooKeeper 主机是观察者:

    在下面显示的示例配置文件中,节点 9 带有 :observer 修饰符,因此您有五个投票者:节点 1、2、3、7 和 8。

    对于每个数据中心的 ZK_CLIENT_HOSTS 属性,请仅针对数据中心内的 ZooKeeper 节点,按相同的顺序指定数据中心内所有 ZooKeeper 节点的 IP 地址或 DNS 名称。

  • Cassandra

    对于每个数据中心的 CASS_HOSTS,请确保您为两个数据中心指定所有 Cassandra IP 地址(而非 DNS 名称)。对于数据中心 1,请先列出该数据中心内的 Cassandra 节点。对于数据中心 2,请先列出该数据中心内的 Cassandra 节点。按相同的 顺序列出数据中心内所有 Cassandra 节点的 Cassandra 节点。

    所有 Cassandra 节点都必须具有后缀“:d,r”;例如 “ip:1,1 = 数据中心 1 和机架/可用区 1”以及“ip:2,1 = 数据中心 2 和机架/可用区 1”。

    例如,“192.168.124.201:1,1 192.168.124.202:1,1 192.168.124.203:1,1 192.168.124.204:2,1 192.168.124.205:2,1 192.168.124.206:2,1”

    每个数据中心内机架/可用区 1 中的第一个节点将用作种子 服务器。在此部署模型中,Cassandra 设置将如下所示:

  • Postgres

    默认情况下,Edge 会以主模式安装所有 Postgres 节点。但是,当您有多个 数据中心时,您可以将 Postgres 节点配置为使用主备复制,这样,如果 主节点发生故障,备用节点可以继续为服务器流量提供服务。通常,您会在一个数据中心内配置主 Postgres 服务器,并在第二个数据中心内配置备用服务器。

    如果现有数据中心已配置为具有两个以 主/备模式运行的 Postgres 节点,则在此过程中,请取消注册现有备用节点,并将其替换为新数据中心内的备用节点。

    下表显示了这两种场景下 Postgres 配置的前后对比:

    之前 之后

    dc-1 中的单个主 Postgres 节点

    dc-1 中的主 Postgres 节点

    dc-2 中的备用 Postgres 节点

    dc-1 中的主 Postgres 节点

    dc-1 中的备用 Postgres 节点

    dc-1 中的主 Postgres 节点

    dc-2 中的备用 Postgres 节点

    取消注册 dc-1 中的旧备用 Postgres 节点

  • 端口要求

    您必须确保两个数据中心内的节点之间已打开必要的端口。 如需查看端口图,请参阅端口要求

更新现有数据中心

添加数据中心需要您执行安装和配置新数据 中心节点的步骤,但还需要您更新原始数据中心内的节点。这些 修改是必要的,因为您要在新 数据中心内添加新的 Cassandra 和 ZooKeeper 节点,这些节点必须可供现有数据中心访问,并且您必须重新配置 OpenLDAP 以使用复制。

创建配置文件

下面显示了两个数据中心的静默配置文件,其中每个数据 中心都有 6 个节点,如安装拓扑中所述。请注意,dc-1 的配置文件会向以下项添加 其他设置:

  • 配置 OpenLDAP,以便在两个 OpenLDAP 节点之间进行复制。
  • 将 dc-2 中的新 Cassandra 和 ZooKeeper 节点添加到 dc-1 的配置文件。
# Datacenter 1
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP1
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=1
LDAP_PEER=$IP7
APIGEE_LDAPPW=secret
MP_POD=gateway-1
REGION=dc-1
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP1 $IP2 $IP3"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1 $IP7:2,1 $IP8:2,1 $IP9:2,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"
# Datacenter 2
IP1=IPorDNSnameOfNode1
IP2=IPorDNSnameOfNode2
IP3=IPorDNSnameOfNode3
IP7=IPorDNSnameOfNode7
IP8=IPorDNSnameOfNode8
IP9=IPorDNSnameOfNode9 
HOSTIP=$(hostname -i)
MSIP=$IP7
ADMIN_EMAIL=opdk@google.com
APIGEE_ADMINPW=Secret123
LICENSE_FILE=/tmp/license.txt
USE_LDAP_REMOTE_HOST=n
LDAP_TYPE=2
LDAP_SID=2
LDAP_PEER=$IP1
APIGEE_LDAPPW=secret
MP_POD=gateway-2
REGION=dc-2
ZK_HOSTS="$IP1 $IP2 $IP3 $IP7 $IP8 $IP9:observer"
ZK_CLIENT_HOSTS="$IP7 $IP8 $IP9"
# Must use IP addresses for CASS_HOSTS, not DNS names.
CASS_HOSTS="$IP7:2,1 $IP8:2,1 $IP9:2,1 $IP1:1,1 $IP2:1,1 $IP3:1,1"
SKIP_SMTP=n
SMTPHOST=smtp.example.com
SMTPUSER=smtp@example.com 
SMTPPASSWORD=smtppwd   
SMTPSSL=n
SMTPPORT=25
SMTPMAILFROM="My Company <myco@company.com>"

添加新数据中心

请按照以下步骤安装新数据中心。

在此过程中,数据中心的名称如下:

  • dc-1:现有数据中心
  • dc-2:新数据中心

如需添加新数据中心,请执行以下操作:

  1. dc-1 上,使用包含 dc-2 中 Cassandra 节点的新 dc-1 配置文件,对原始 Cassandra 节点重新运行 setup.sh:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile1
  2. dc-2 上,在所有节点上安装 apigee-setup。如需了解详情,请参阅安装 Edge apigee-setup 实用程序
  3. dc-2 上,在适当的节点上安装 Cassandra 和 ZooKeeper:
    /opt/apigee/apigee-setup/bin/setup.sh -p ds -f configFile2
  4. dc-1 上,对管理服务器节点重新运行 setup.sh:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile1

    如果适用,请重新运行创收设置:

    /opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1
  5. dc-2 上,对所有 Cassandra 节点运行 rebuild 命令,并指定 dc-1 的区域 名称:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassIP rebuild dc-1

    如果您为 Cassandra 启用了 JMX 身份验证,则只需传递您的用户名和密码。

  6. 在 dc-2 上 ,在适当的节点上安装管理服务器:
    /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configFile2
  7. 在 dc-2 中的管理服务器节点上,安装 apigee-provision, 它会安装 apigee-adminapi.sh 实用程序:
    /opt/apigee/apigee-service/bin/apigee-service apigee-provision install
  8. 在 dc-2 上,在适当的节点上安装路由和消息处理器:
    /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f configFile2
  9. 在 dc-2 上,在适当的节点上安装 Qpid:
    /opt/apigee/apigee-setup/bin/setup.sh -p qs -f configFile2
  10. 在 dc-2 上,在适当的节点上安装 Postgres:
    /opt/apigee/apigee-setup/bin/setup.sh -p ps -f configFile2
  11. 为 Postgres 节点设置 Postgres 主备模式。dc-1 中的 Postgres 节点是 主节点,而 dc-2 中的 Postgres 节点是备用服务器。
    1. dc-1 中的主节点上,修改配置文件以设置:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    2. 在新主节点上启用复制:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
    3. dc-2 中的备用节点上,修改配置文件以设置:
      PG_MASTER=IPorDNSofDC1Master
      PG_STANDBY=IPorDNSofDC2Standby
    4. dc-2 中的备用节点上,停止服务器,然后删除所有现有 Postgres 数据:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
      rm -rf /opt/apigee/data/apigee-postgresql/

      如有必要,您可以在删除此数据之前对其进行备份。

    5. 配置 dc-2 中的备用节点:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
  12. 在 dc-1 上,更新分析配置并配置组织。
    1. 在 dc-1 的管理服务器节点上,获取 Postgres 节点的 UUID:
      apigee-adminapi.sh servers list -r dc-1 -p analytics -t postgres-server \
        --admin adminEmail --pwd adminPword --host localhost

      UUID 显示在返回数据的末尾。保存该值。

    2. 在 dc-2 的管理服务器节点上,获取 Postgres 节点的 UUID,如上一步所示。保存该值。
    3. 在 dc-1 的管理服务器节点上,确定 分析组和消费者群组的名称。以下许多命令都需要此信息。

      默认情况下,分析组的名称为“axgroup-001”,消费者 群组的名称为“consumer-group-001”。在区域的静默配置文件中,您可以使用 AXGROUP 属性设置分析组的名称 。

      如果您不确定分析组和消费者群组的名称,请使用以下 命令显示它们:

      apigee-adminapi.sh analytics groups list \
        --admin adminEmail --pwd adminPword --host localhost

      此命令会在 name 字段中返回分析组名称,并在 consumer-groups 字段中返回消费者群组名称 。

    4. dc-1 的管理服务器节点上 ,从分析组中移除现有 Postgres 服务器:
      1. 从消费者群组中移除 Postgres 节点:
        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u UUID \
          -Y --admin adminEmail --pwd adminPword --host localhost

        如果 dc-1 配置为具有两个以 主备模式运行的 Postgres 节点,请移除这两个节点:

        apigee-adminapi.sh analytics groups consumer_groups datastores remove \
          -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" \
          -Y --admin adminEmail --pwd adminPword --host localhost
      2. 从分析组中移除 Postgres 节点:
        apigee-adminapi.sh analytics groups postgres_server remove \
          -g axgroup-001 -u UUID -Y --admin adminEmail \
          --pwd adminPword --host localhost

        如果 dc-1 配置为具有两个以主备模式运行的 Postgres 节点, 请移除这两个节点:

        apigee-adminapi.sh analytics groups postgres_server \
          remove -g axgroup-001 -u UUID1,UUID2 -Y --admin adminEmail \
          --pwd adminPword --host localhost
    5. 在 dc-1 的管理服务器节点上,将新的主备 Postgres 服务器添加到分析组:
      1. 将两个 Postgres 服务器都添加到分析组:
        apigee-adminapi.sh analytics groups postgres_server \
          add -g axgroup-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost

        其中,UUID_1 对应于 dc-1 中的主 Postgres 节点,UUID_2 对应于 dc-2 中的备用 Postgres 节点。

      2. 以主备模式将 PG 服务器添加到消费者群组:
        apigee-adminapi.sh analytics groups consumer_groups datastores \
          add -g axgroup-001 -c consumer-group-001 -u "UUID_1,UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
    6. dc-2 中的 Qpid 服务器添加到分析组:
      1. 在 dc-1 的管理服务器节点上,获取 Qpid 在 dc-2 中的节点 UUID:
        apigee-adminapi.sh servers list -r dc-2 -p central -t qpid-server \
          --admin adminEmail --pwd adminPword --host localhost

        UUID 显示在返回数据的末尾。保存这些值。

      2. 在 dc-1 的管理服务器节点上,将 Qpid 节点添加到 分析组(运行这两个命令):
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_1" --admin adminEmail \
          --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups qpid_server \
          add -g axgroup-001 -u "UUID_2" --admin adminEmail \
          --pwd adminPword --host localhost
      3. 在 dc-1 的管理服务器节点上,将 Qpid 节点添加到 消费者群组(运行这两个命令):
        apigee-adminapi.sh analytics groups consumer_groups consumers \
        add -g axgroup-001 -c consumer-group-001 -u "UUID_1" \
        --admin adminEmail --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups consumer_groups consumers \
        add -g axgroup-001 -c consumer-group-001 -u "UUID_2" \
        --admin adminEmail --pwd adminPword --host localhost

        如果您使用的是创收,请在 dc-1 的管理服务器节点上将 Qpid 节点添加到 MINT 组:

        apigee-adminapi.sh analytics groups qpid_server \
        add -g mxgroup001 -u UUID_1 --admin adminEmail \
        --pwd adminPword --host localhost
        
        apigee-adminapi.sh analytics groups qpid_server \
        add -g mxgroup001 -u UUID_2 --admin adminEmail \
        --pwd adminPword --host localhost
    7. 取消注册并删除 dc-1 中的旧 Postgres 备用服务器:
      1. 取消注册现有 dc-1 Postgres 备用服务器:
        apigee-adminapi.sh servers deregister -u UUID -r dc-1 \
        -p analytics -t postgres-server -Y --admin adminEmail \
        --pwd adminPword --host localhost

        其中,UUID 是 dc-1 中的旧备用 Postgres 节点。

      2. 删除现有 dc-1 Postgres 备用服务器:
        apigee-adminapi.sh servers delete -u UUID \
        --admin adminEmail --pwd adminPword --host localhost
  13. 使用两个数据中心的正确复制因子更新 Cassandra 键空间。您 只需在任一数据中心内的任何 Cassandra 服务器上运行此步骤一次:
    1. 启动 Cassandra cqlsh 实用程序:
      /opt/apigee/apigee-cassandra/bin/cqlsh cassandraIP
    2. 在 "cqlsh>" 提示符下执行以下 CQL 命令,以设置 Cassandra 键空间的复制 级别:
      1. ALTER KEYSPACE "identityzone" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' }; 
      2. ALTER KEYSPACE "system_traces" WITH replication = { 'class': 'NetworkTopologyStrategy', 'dc-1': '3','dc-2': '3' };
      3. 使用以下命令查看键空间:
        SELECT * FROM system_schema.keyspaces;
      4. 退出 cqlsh
        exit
  14. 在 dc-1 中的所有 Cassandra 节点上运行以下 nodetool 命令,以释放 内存:
    /opt/apigee/apigee-cassandra/bin/nodetool [-u username -pw password] -h cassandraIP cleanup

    如果您 为 Cassandra 启用了 JMX 身份验证,则只需传递您的用户名和密码。

  15. 对于您想要在数据中心之间支持的每个组织和每个环境:
    1. 在 dc-1 的管理服务器节点上,将新的 MP_POD 添加到 组织:
      apigee-adminapi.sh orgs pods add -o orgName -r dc-2 -p gateway-2 \
        --admin adminEmail --pwd adminPword --host localhost

      其中,gateway-2 是网关 pod 的名称,由 dc-2 配置文件中的 MP_POD 属性定义。

    2. 将新的消息处理器添加到组织和环境:
      1. 在 dc-2 的管理服务器节点上,获取 dc-2 中 消息处理器节点的 UUID:
        apigee-adminapi.sh servers list -r dc-2 -p gateway-2 \
          -t message-processor --admin adminEmail --pwd adminPword --host localhost

        UUID 显示在返回数据的末尾。保存这些值。

      2. 在 dc-1 的管理服务器节点上,对于 dc-2 中的每个消息处理器 ,将消息处理器添加到组织的某个环境:
        apigee-adminapi.sh orgs envs servers add -o orgName -e envName \
          -u UUID --admin adminEmail --pwd adminPword --host localhost
    3. 在 dc-1 的管理服务器节点上,检查组织:
      apigee-adminapi.sh orgs apis deployments -o orgName -a apiProxyName \
        --admin adminEmail --pwd adminPword --host localhost

      其中,apiProxyName 是部署在组织中的 API 代理的名称。

  16. 如果您使用的是创收,请在 DC2 中安装创收节点。

    在 DC2 中的管理服务器和消息处理器节点中运行 MINT 设置命令:

    /opt/apigee/apigee-setup/bin/setup.sh -p mo -f mint_configFile1