停用数据中心

有时,您可能需要停用数据中心。例如,如果要升级操作系统,则需要在新数据中心中安装新的操作系统,然后停用旧数据中心。以下部分展示了一个数据中心停用示例,该数据中心在 12 节点集群安装上有两个数据中心:dc-1 和 dc-2:

  • dc-1 是将要停用的数据中心。
  • dc-2 是停用过程中使用的第二个数据中心。

如果您要升级操作系统,dc-2 可能是安装了新版本操作系统 (OS) 的数据中心。但是,停用数据中心并不需要安装新的操作系统。

停用数据中心前的注意事项

在停用数据中心时,请注意以下事项:

  • 阻止发送到停用的数据中心的所有运行时和管理流量,并将其重定向到其他数据中心。
  • 停用数据中心后,您的 Apigee 集群的容量将会减少。 为弥补差异,请考虑在停用后的数据中心增加剩余数据中心的容量或添加数据中心。
  • 在停用过程中,分析数据可能会丢失,具体取决于停用的数据中心中安装的分析组件。如需了解详情,请参阅添加或移除 Qpid 节点
  • 在停用数据中心之前,您应该了解所有数据中心的所有组件是如何配置的,尤其是 OpenLDAP、ZooKeeper、Cassandra 和 Postgres 服务器。您还应备份所有组件及其配置。

前期准备

  • 管理服务器:所有停用步骤在很大程度上都依赖于管理服务器。如果您只有一个可用的管理服务器,我们建议您在停用 dc-1 上的管理服务器之前,在 dc-1 以外的数据中心安装一个新的管理服务器组件,并确保其中一个管理服务器始终可用。
  • 路由器:在停用路由器之前,请通过屏蔽端口 15999 来停用路由器的可达性。确保没有将任何运行时流量定向到停用的路由器。
  • Cassandra 和 ZooKeeper:以下部分介绍了如何在两个数据中心的设置中停用 dc-1。如果您有两个以上的数据中心,请务必从其余所有数据中心的所有静默配置文件中移除对正在停用的节点(在本例中为 dc-1)的所有引用。 对于要停用的 Cassandra 节点,请从 CASS_HOSTS 中删除这些主机。其余的 Cassandra 节点应保持 CASS_HOSTS 的原始顺序。

  • Postgres:如果您停用 Postgres 主节点,请务必将任何一个可用的备用节点升级为新的 postgres 主节点。虽然 QPID 服务器在队列中保留了一个缓冲区,但如果 Postgres 主实例较长时间不可用,则可能会丢失分析数据。

前提条件

  • 在停用任何组件之前,我们建议您完整备份所有节点。请按照当前版本 Edge 的过程执行备份。如需详细了解备份,请参阅备份和恢复

    注意:如果您有多个 Cassandra 或 ZooKeeper 节点,请一次备份一个节点,因为备份过程会暂时关闭 ZooKeeper。

  • 使用以下命令,确保 Edge 在停用之前已启动并运行:
    /opt/apigee/apigee-service/bin/apigee-all status
  • 确保您正在停用的数据中心当前没有运行时流量。

停用组件的顺序

如果您在多个节点上安装适用于 Private Cloud 的 Edge,则应按以下顺序停用这些节点上的 Edge 组件:

  1. Edge 界面 (edge-ui)
  2. 管理服务器 (edge-management-server)
  3. OpenLDAP (apigee-openldap)
  4. 路由器(边缘路由器)
  5. 消息处理器 (edge-message-processor)
  6. Qpid 服务器和 Qpidd(edge-qpid-server 和 apigee-qpidd)
  7. Postgres 和 PostgreSQL 数据库(edge-postgres-server 和 apigee-postgresql)
  8. ZooKeeper (apigee-zookeeper)
  9. Cassandra (apigee-cassandra)

以下部分介绍了如何停用每个组件。

Edge 界面

如需停止并卸载 dc-1 的 Edge 界面组件,请输入以下命令:

/opt/apigee/apigee-service/bin/apigee-service edge-ui stop
/opt/apigee/apigee-service/bin/apigee-service edge-ui uninstall

管理服务器

要在 dc-1 上停用管理服务器,请执行以下步骤:

  1. 停止 dc-1 上的管理服务器:
    apigee-service edge-management-server stop
  2. 查找在 dc-1 中注册的管理服务器的 UUID:
    curl -u <AdminEmailID>:'<AdminPassword>' \
    -X GET “http://{MS_IP}:8080/v1/servers?pod=central&region=dc-1&type=management-server”
  3. 取消注册服务器的类型:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \
    -d "type=management-server&region=dc-1&pod=central&uuid=UUID&action=remove"
  4. 删除服务器。注意:如果此服务器上还安装了其他组件,请先取消注册所有这些组件,然后再删除 UUID。
    curl -u <AdminEmailID>:'<AdminPassword> -X DELETE http://{MS_IP}:8080/v1/servers/{UUID}
  5. 在 dc-1 上卸载管理服务器组件:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server uninstall

Open LDAP

本部分介绍了如何在 dc-1 上停用 OpenLDAP。

注意:如果您有两个以上的数据中心,请参阅下面的具有两个以上数据中心的设置

要在 dc-1 上停用 OpenLDAP,请按以下步骤操作:

  1. 按照如何备份中的步骤备份 dc-1 OpenLDAP 节点。
  2. 通过在这两个数据中心中执行以下步骤,可中断两个数据中心(dc-1 和 dc-2)之间的数据复制。

    1. 检查当前状态:
      ldapsearch -H ldap://{HOST}:{PORT} -LLL -x -b "cn=config" -D "cn=admin,cn=config" -w {credentials} -o ldif-wrap=no 'olcSyncRepl' | grep olcSyncrepl

      输出应类似于以下内容:

      olcSyncrepl: {0}rid=001 provider=ldap://{HOST}:{PORT}/ binddn="cn=manager,dc=apigee,dc=com" bindmethod=simple credentials={credentials} searchbase="dc=apigee,dc=com" attrs="*,+" type=refreshAndPersist retry="60 1 300 12 7200 +" timeout=1

    2. 创建一个包含以下命令的文件 break_repl.ldif
      dn: olcDatabase={2}bdb,cn=config
      changetype: modify
      delete: olcSyncRepl
      
      dn: olcDatabase={2}bdb,cn=config
      changetype: modify
      delete: olcMirrorMode
    3. 运行 ldapmodify 命令:
      ldapmodify -x -w {credentials} -D "cn=admin,cn=config" -H "ldap://{HOST}:{PORT}/" -f path/to/file/break_repl.ldif

      输出应类似于以下内容:

      modifying entry "olcDatabase={2}bdb,cn=config"
      modifying entry "olcDatabase={2}bdb,cn=config"

  3. 您可以通过在 dc-2 LDAP 中创建一个条目,并确保它未显示在 dc-1 的 LDAP 中,来验证 dc-2 是否不再复制到 dc-1。

    (可选)您可以按照以下步骤在 dc-2 OpenLDAP 节点中创建一个只读用户,然后检查该用户是否已复制。用户随后会被删除。

    1. 在 dc-2 中创建一个包含以下内容的 readonly-user.ldif 文件:
      dn: uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com
      objectClass: organizationalPerson
      objectClass: person
      objectClass: inetOrgPerson
      objectClass: top
      cn: readonly-user
      sn: readonly-user
      userPassword: {testPassword}
    2. 在 dc-2 中使用“ldapadd”命令添加用户:
      ldapadd -H ldap://{HOST}:{PORT} -w {credentials} -D "cn=manager,dc=apigee,dc=com" -f path/to/file/readonly-user.ldif

      输出将类似于:

      adding new entry "uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com"

    3. 在 dc-1 中搜索用户,以确保未复制该用户。如果该用户不在 dc-1 中,则您会确定两个 LDAP 都不再复制:
      ldapsearch -H ldap://{HOST}:{PORT} -x -w {credentials} -D "cn=manager,dc=apigee,dc=com" -b uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com -LLL

      输出应类似如下所示:

      No such object (32)
      Matched DN: ou=users,ou=global,dc=apigee,dc=com
    4. 移除您之前添加的只读用户:
      ldapdelete -v -H ldap://{HOST}:{PORT} -w {credentials} -D "cn=manager,dc=apigee,dc=com" "uid=readonly-user,ou=users,ou=global,dc=apigee,dc=com"
  4. 在 dc-1 中停止 OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
  5. 在 dc-1 上卸载 OpenLDAP 组件:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap uninstall

路由器

本部分介绍如何停用路由器。如需详细了解如何移除路由器,请参阅 移除服务器

以下步骤会从 dc-1 中停用路由器。 如果在 dc-1 中配置了多个路由器节点,请逐一执行所有路由器节点中的步骤

注意:此处假设负载平衡器中配置了路由器的健康检查端口 15999,并且屏蔽端口 15999 会导致路由器无法访问。您可能需要拥有 root 访问权限才能屏蔽端口。

如需停用路由器,请执行以下步骤:

  1. 通过屏蔽健康检查端口 15999 来停用路由器的可达性。 确保禁止此数据中心的运行时流量:

    iptables -A INPUT -i eth0 -p tcp --dport 15999 -j REJECT
  2. 验证路由器是否可以访问:

    curl -vvv -X GET http://{ROUTER_IP}:15999/v1/servers/self/reachable

    输出应类似于以下内容:

    About to connect() to 10.126.0.160 port 15999 (#0)
    Trying 10.126.0.160...
    Connection refused
    Failed connect to 10.126.0.160:15999; Connection refused
    Closing connection 0
    curl: (7) Failed connect to 10.126.0.160:15999; Connection refused

  3. 按照获取 UUID 中所述获取路由器的 UUID。
  4. 停止路由器:
    /opt/apigee/apigee-service/bin/apigee-service edge-router stop
  5. 使用以下命令列出组织中的可用网关 Pod:
    curl -u  <AdminEmailID>:<AdminPassword> -X GET "http://{MS_IP}:8080/v1/organizations/{ORG}/pods"

    请参阅 关于 Pod

  6. 取消注册服务器的类型:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \
    -d "type=router&amp;region=dc-1&amp;pod=gateway-1&amp;uuid=UUID&amp;action=remove"
  7. 取消注册服务器:
    curl -u <AdminEmailID>:'<AdminPassword>’ -X DELETE http://{MS_IP}:8080/v1/servers/UUID
  8. 卸载edge-router
    /opt/apigee/apigee-service/bin/apigee-service edge-router uninstall
    请参阅 移除服务器
  9. 刷新 iptables 规则以启用被屏蔽的端口 15999:
    iptables -F

消息处理器

本部分介绍了如何从 dc-1 中停用消息处理器。如需详细了解如何移除消息处理器,请参阅 移除服务器

由于我们假设 dc-1 具有 12 节点集群安装,因此 dc-1 中配置了两个消息处理器节点。在这两个节点中运行以下命令。

  1. 获取消息处理器的 UUID,如获取 UUID 中所述。
  2. 停止消息处理器:
    apigee-service edge-message-processor stop
  3. 取消注册服务器的类型:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers  \
    -d "type=message-processor&amp;region=dc-1&amp;pod=gateway-1&amp;uuid=UUID&amp;action=remove"/pre>
  4. Disassociate an environment from the Message Processor.

    Note: You need to remove the bindings on each org/env that associates the Message Processor UUID.

    curl -H "Content-Type:application/x-www-form-urlencoded" -u <AdminEmailID>:''  \
    -X POST http://{MS_IP}:8080/v1/organizations/{ORG}/environments/{ENV}/servers \
    -d "action=remove&uuid=UUID"
  5. 取消注册服务器的类型:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://MS_IP:8080/v1/servers -d "type=message-processor&region=dc-1&pod=gateway-1&uuid=UUID&action=remove"
  6. 卸载消息处理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor uninstall
  7. 取消注册服务器:
    curl -u <AdminEmailID>:'<AdminPassword> -X DELETE http://{MS_IP}:8080/v1/servers/UUID

Qpid 服务器和 Qpidd

本部分介绍了如何停用 Qpid Server (edge-qpid-server) 和 Qpidd (apigee-qpidd)。dc-1 中配置了两个 Qpid 节点,因此您必须对这两个节点执行以下步骤:

  1. 获取 Qpidd 的 UUID(如获取 UUID 中所述)。
  2. 停止 edge-qpid-serverapigee-qpidd
    /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
    /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop
  3. 获取 Google Analytics(分析)和消费者群组的列表:
    curl -u <AdminEmailID>:'<AdminPassword>' -X GET http://{MS_IP}:8080/v1/analytics/groups/ax
  4. 从使用方群组中移除 Qpid:
    curl -u <AdminEmailID>:'<AdminPassword>' -H "Content-Type: application/json"  -X DELETE \ "http://{MS_IP}:8080/v1/analytics/groups/ax/{ax_group}/consumer-groups/{consumer_group}/consumers/{QPID_UUID}"
  5. 从分析组中移除 Qpid:
    curl -v -u <AdminEmailID>:'<AdminPassword>' \
    -X DELETE "http://{MS_IP}:8080/v1/analytics/groups/ax/{ax_group}/servers?uuid={QPID_UUID}&type=qpid-server"
  6. 在边缘安装中取消注册 Qpid 服务器:
    curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \
    -d "type=qpid-server&region=dc-1&pod=central&uuid={QPID_UUID}&action=remove"
  7. 从边缘安装中移除 Qpid 服务器:
    curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
  8. 重启所有节点上的所有 Edge-qpid-server 组件,确保这些组件能提取更改:
    $ /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server restart
    $ /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server wait_for_ready
  9. 卸载 Edge-qpid-server 和 apigee-qpidd:
    $ /opt/apigee/apigee-service/bin/apigee-service edge-qpid-server uninstall
    $ /opt/apigee/apigee-service/bin/apigee-service apigee-qpidd uninstall

Postgres 和 Postgresql

您要停用的数据中心可以有一个 Postgres 主实例或一个 Postgres 备用数据库。以下部分介绍了如何停用它们:

停用 Postgres 主实例

注意:如果您停用 Postgres 主节点,请务必将任何一个可用的备用节点升级为新的 postgres 主节点。虽然 QPID 会对缓冲区数据进行排队,但如果 Postgres 主实例长时间不可用,则可能会丢失分析数据。

如需停用 Postgres 主实例,请执行以下操作:

  1. 按照以下链接中的说明备份 dc-1 Postgres 主节点:
  2. 获取 Postgres 服务器的 UUID,如获取 UUID 中所述。
  3. 在 dc-1 上,停止当前主实例上的 edge-postgres-serverapigee-postgresql
    /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
  4. 在 dc-2 上的备用节点上输入以下命令,使其成为主节点:
    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql promote-standby-to-master <IP of OLD Progress master>

    注意:如果您有多个备用 Postgres 节点,则必须在新主节点上添加主机条目,并更新所有可用 postgres 备用节点的复制设置。

    如需将主机条目添加到新的 Postgres 主实例,请按照下文相应部分中的步骤操作:

    如果只剩一个备用节点

    例如,假设在停用之前,配置了三个 Postgres 节点。您已停用现有的主节点,并将剩余的一个 postgres 备用节点提升为主节点。按照以下步骤配置剩余备用节点:

    1. 在新主实例上,修改配置文件以进行设置:
      PG_MASTER=IP_or_DNS_of_new_PG_MASTER
      PG_STANDBY=IP_or_DNS_of_PG_STANDBY
    2. 在新主实例上启用复制功能:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle

    如果剩余多个备用节点

    1. /opt/apigee/customer/application/postgresql.properties 中添加以下配置:
      conf_pg_hba_replication.connection=host replication apigee standby_1_ip/32 trust \n host replication apigee standby_2_ip/32 trust
    2. 确保文件 /opt/apigee/customer/application/postgresql.properties 归 apigee 用户所有:
            chown apigee:apigee /opt/apigee/customer/application/postgresql.properties
    3. 重启 apigee-postgresql
      apigee-service apigee-postgresql restart
    4. 如需更新备用节点上的复制设置,请执行以下操作:

      1. 修改配置文件 /opt/silent.conf,并使用新 Postgres 主实例的 IP 地址更新 PG_MASTER 字段。
      2. 使用以下命令移除所有旧的 Postgres 数据:
        rm -rf /opt/apigee/data/apigee-postgresql/
      3. 在备用节点上设置复制:
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
    5. 通过在 dc-2 中输入以下命令,验证 Postgres 主实例是否已正确设置:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
    6. 从分析群组和使用方群组中移除和添加 Postgresql 服务器。
      1. 按照 从分析群组中移除 Postgres 服务器中的说明,从分析群组中移除旧的 Postgres 服务器。
      2. 按照 将现有 Postgres 服务器添加到分析群组中的说明将新的 postgres 服务器添加到分析群组。
    7. 从 dc-1 取消注册旧的 postgres 服务器:
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \
      -d "type=postgres-server&region=dc-1&pod=analytics&uuid=UUID&action=remove"<
    8. 从 dc-1 中删除旧的 postgres 服务器:
      curl -u >AdminEmailID>:'>AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
    9. 旧版 Postgres master 现在可以安全停用。卸载 edge-postgres-serverapigee-postgresql
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server uninstall
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql uninstall

    停用 Postgres 备用资源

    注意12 节点集群安装文档将 dc-1 postgresql 节点显示为主节点,但为方便起见,在本部分中,我们假设 dc-1 postgresql 节点处于备用状态,而 dc-2 postgresql 节点为主节点。

    如需停用 Postgres 待机模式,请执行以下步骤:

    1. 按照获取 UUID 中的说明获取 Postgres 服务器的 UUID。
    2. 停止 dc-1 中当前备用节点上的 apigee-postgresql
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
    3. 从分析群组和使用方群组中移除和添加 Postgresql 服务器。
      1. 按照 从分析群组中移除 Postgres 服务器中的说明,从分析群组中移除旧的 Postgres 服务器。
      2. 按照 将现有 Postgres 服务器添加到分析群组中的说明将新的 postgres 服务器添加到分析群组。
    4. 从 dc-1 取消注册旧的 postgres 服务器:
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \
      -d "type=postgres-server&region=dc-1&pod=analytics&uuid=UUID&action=remove"<
    5. 从 dc-1 中删除旧的 postgres 服务器:
      curl -u >AdminEmailID>:'>AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
    6. 旧版 Postgres master 现在可以安全停用。卸载 edge-postgres-serverapigee-postgresql
      /opt/apigee/apigee-service/bin/apigee-service edge-postgres-server uninstall
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql uninstall

    ZooKeeper 和 Cassandra

    本部分介绍如何在两个数据中心设置中停用 ZooKeeper 和 Cassandra 服务器。

    如果您有两个以上的数据中心,请务必从其余所有数据中心的所有静默配置文件中移除对正在停用的节点(在本例中为 dc-1)的所有引用。 对于要停用的 Cassandra 节点,请从 CASS_HOSTS 中删除这些主机。其余的 Cassandra 节点应保持 CASS_HOSTS 的原始顺序。

    关于 ZooKeeper 的注意事项:在修改配置文件中的 ZK_HOST 属性时,您必须保持一定数量的选民节点,以确保 ZooKeeper 集成学习保持正常运行。您的配置中必须包含奇数个选民节点。如需了解详情,请参阅 Apache ZooKeeper 维护任务

    如需停用 ZooKeeper 和 Cassandra 服务器,请执行以下操作:

    1. 按照以下链接中的说明备份 dc-1 Cassandra 和 ZooKeeper 节点:
    2. 在即将停用 Cassandra 节点的数据中心内,列出 ZooKeeper 和 Cassandra 服务器的 UUID

      apigee-adminapi.sh servers list -r dc-1 -p central -t application-datastore --admin <AdminEmailID> --pwd '<AdminPassword>' --host localhost
    3. 取消注册服务器的类型:
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://MS_IP:8080/v1/servers -d "type=cache-datastore&type=user-settings-datastore&type=scheduler-datastore&type=audit-datastore&type=apimodel-datastore&type=application-datastore&type=edgenotification-datastore&type=identityzone-datastore&type=user-settings-datastore&type=auth-datastore&region=dc-1&pod=central&uuid=UUID&action=remove"
    4. 取消注册服务器:
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MS_IP:8080/v1/servers/UUID
    5. 使用从 ZK_HOSTSCASS_HOSTS 中移除的已停用节点的 IP 来更新配置文件。

      示例:假设您的 IP 地址为 $IP1 $IP2 $IP3(在 dc-1 中)和 $IP4 $IP5 $IP6(在 dc-2 中),并且您要停用 dc-1。然后,您应从配置文件中移除 IP $IP1 $IP2 $IP3

      • 现有配置文件条目:
        ZK_HOSTS="$IP1 $IP2 $IP3 $IP4 $IP5 $IP6"
        CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1, $IP4:2,1 $IP5:2,1 $IP6:2,1”
      • 新的配置文件条目:
        ZK_HOSTS="$IP4 $IP5 $IP6"
        CASS_HOSTS="$IP4:2,1 $IP5:2,1 $IP6:2,1"
    6. 使用已移除的已停用节点的 IP 更新静默配置文件(在步骤 e 中修改),并在托管管理服务器的所有节点上运行管理服务器配置文件:
      /opt/apigee/apigee-setup/bin/setup.sh -p ms -f updated_config_file
    7. 使用已移除的已停用节点的 IP 更新配置文件,并在所有路由器和消息处理器节点上运行 MP/RMP 配置文件:
      • 如果在同一节点上配置了边缘路由器和消息处理器,请输入:
        /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f updated_config_file
      • 如果边缘路由器和消息处理器是在单独的节点上配置的,请输入以下内容:

        对于路由器:

        /opt/apigee/apigee-setup/bin/setup.sh -p r -f updated_config_file

        对于消息处理器:

        /opt/apigee/apigee-setup/bin/setup.sh -p mp -f updated_config_file
    8. 重新配置所有 Qpid 节点,从响应文件中移除已停用节点的 IP 地址:
      /opt/apigee/apigee-setup/bin/setup.sh -p qs -f updated_config_file
    9. 重新配置所有 Postgres 节点,从响应文件中移除已停用节点的 IP:
      /opt/apigee/apigee-setup/bin/setup.sh -p ps -f updated_config_file
    10. 更改 system_auth 键空间。如果您在现有 Cassandra 节点上启用了 Cassandra 身份验证,请运行以下命令来更新 system_auth 密钥空间的复制因子:
      ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'dc-2': '3'};

      此命令将复制因子设置为 '3',指示集群中的三个 Cassandra 节点。请根据需要修改此值。

      完成此步骤后,Cassandra 拓扑的任何键空间中都不应包含 dc-1

    11. 逐个停用 dc-1 上的 Cassandra 节点。

      如需停用 Cassandra 节点,请输入以下命令:

      /opt/apigee/apigee-cassandra/bin/nodetool -h cassIP -u cassandra -pw '<AdminPassword>' decommission

    12. 使用以下命令之一检查 dc-1 中 Cassandra 节点的连接情况:
      /opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra -p '<AdminPassword>'

      或者,要在已停用的节点上运行辅助验证命令:

      /opt/apigee/apigee-cassandra/bin/nodetool netstats

      上述命令应返回:

      Mode: DECOMMISSIONED

    13. 为 dc-2 中的所有 Cassandra 和 ZooKeeper 节点运行 DS 配置文件:
      /opt/apigee/apigee-setup/bin/setup.sh -p ds -f updated_config_file
    14. 停止 dc-1 中的 apigee-cassandraapigee-zookeeper
      apigee-service apigee-cassandra stop
      apigee-service apigee-zookeeper stop
    15. 在 dc-1 中卸载 apigee-cassandraapigee-zookeeper
      apigee-service apigee-cassandra uninstall
      apigee-service apigee-zookeeper uninstall

    删除 dc-1 中的绑定

    如需从 dc-1 中删除绑定,请按以下步骤操作:

    1. 删除 dc-1 中的绑定。
      1. 列出组织下所有可用的 pod:
        curl -v -u  <AdminEmailID>:<AdminPassword> -X GET "http://MS_IP:8080/v1/o/ORG/pods"
      2. 如需检查是否所有绑定都已被移除,请获取与这些 Pod 关联的服务器的 UUID
        curl -v -u  <AdminEmailID>:<AdminPassword> \
        -X GET "http://MS_IP:8080/v1/regions/dc-1/pods/gateway-1/servers"

        如果此命令未返回任何 UUID,则表示前面的步骤已移除所有绑定,您可以跳过下一步。否则,请执行下一步。

      3. 移除上一步中获取的 UUID 的所有服务器绑定:
        curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MS_IP:8080/v1/servers/UUID
      4. 解除组织与 Pod 的关联:
        curl -v -u  <AdminEmailID>:<AdminPassword>  "http://MS_IP:8080/v1/o/ORG/pods" -d "action=remove&region=dc-1&pod=gateway-1" -H "Content-Type: application/x-www-form-urlencoded" -X POST
    2. 删除 Pod:
      curl -v -u <AdminEmailID>:<AdminPassword> "http://MS_IP:8080/v1/regions/dc-1/pods/gateway-1" -X DELETE
    3. 删除该区域。
      curl -v -u <AdminEmailID>:<AdminPassword>  "http://MS_IP:8080/v1/regions/dc-1" -X DELETE

    注意:如果您错过删除服务器的某个步骤,则上述步骤将返回一条错误消息,指出 Pod 中的特定服务器仍存在。因此,请执行以下问题排查步骤,同时在 curl 命令中自定义类型时将其删除。

    至此,您已完成 dc-1 的停用。

    附录

    问题排查

    如果在执行上述步骤后,某些 Pod 中仍有服务器,请按照以下步骤取消注册并删除服务器。 注意:请根据需要更改类型和 Pod。

    1. 使用以下命令获取 UUID
      apigee-adminapi.sh servers list -r dc-1 -p POD -t  --admin <AdminEmailID> --pwd  '<AdminPassword>’ --host localhost
    2. 取消注册服务器的类型:
      curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://MP_IP:8080/v1/servers -d "type=TYPE=REGION=dc-1&pod=POD&uuid=UUID&action=remove"
    3. 逐个删除服务器:
      curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MP_IP:8080/v1/servers/UUID

    验证

    您可以使用以下命令验证停用情况。

    管理服务器

    从所有区域上的管理服务器运行以下命令。

    curl -v  -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=central&region=dc-1
    curl -v  -u  <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=gateway&region=dc-1
    curl -v -u  <AdminEmailID>:'<AdminPassword>'  http://MS_IP:8080/v1/servers?pod=analytics&region=dc-1

    在所有组件上运行以下命令,以检查所有管理端口的端口要求。

    curl -v http://MS_IP:8080/v1/servers/self

    查看分析群组。

    curl  -v  -u  <AdminEmailID>:'<AdminPassword>' "http://MS_IP:8080}/v1/o/ORG/e/ENV/provisioning/axstatus"
    curl -v  -u  <AdminEmailID>:'<AdminPassword>'  http://MS_IP:8080/v1/analytics/groups/ax

    Cassandra/ZooKeeper 节点

    在所有 Cassandra 节点上输入:

    /opt/apigee/apigee-cassandra/bin/nodetool -h <host> statusthrift

    这将为该特定节点返回 runningnot running 状态。

    在一个节点上输入:

    /opt/apigee/apigee-cassandra/bin/nodetool -h <host> ring
    /opt/apigee/apigee-cassandra/bin/nodetool -h <host> status

    上述命令将返回有效的数据中心信息。

    在 ZooKeeper 节点上,首先输入:

    echo ruok | nc <host> 2181

    此命令将返回 imok

    然后输入以下命令:

    echo stat | nc <host> 2181 | grep Mode

    上述命令返回的 Mode 值将是下列值之一:observerleaderfollower

    在一个 ZooKeeper 节点中:

    /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh >> /tmp/zk-tree.out.txt

    在 Postgres 主节点上,运行以下命令:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

    验证响应是否指明该节点是主节点。

    在备用节点上:

    /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

    验证响应是否说节点是备用节点。

    使用以下命令登录 PostgreSQL 数据库

    psql -h localhost -d apigee -U postgres

    出现提示时,输入“postgres”用户密码作为 'postgres'。从数据分析中选择“max(client_received_start_timestamp)”。

    ”$org.$env.fact” limit 1

    日志

    检查组件的日志,确保没有错误。