停用数据中心

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

  • dc-1 是要停用的数据中心。
  • dc-2 是第二个数据中心,用于停用程序。

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

在停用数据中心之前需要考虑的事项

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

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

前期准备

  • 管理服务器: 所有退役步骤都高度依赖于管理服务器。如果您只有一个可用的管理服务器,建议您在停用 dc-1 上的管理服务器之前,在 dc-1 以外的数据中心安装新的管理服务器组件,并确保始终有一个管理服务器可用。
  • 路由器: 在停用路由器之前,请通过屏蔽端口 15999 来停用路由器的可达性。确保没有运行时流量被定向到正在停用的路由器。
  • Cassandra 和 ZooKeeper: 以下部分介绍了如何在双数据中心设置中停用 dc-1。

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

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

前提条件

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

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

停用组件的顺序

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

  1. Edge 界面 (edge-ui)
  2. 管理服务器 (edge-management-server)
  3. Symas LDAP (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

Symas LDAP

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

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

如需在 dc-1 上停用 SymasLDAP,请执行以下步骤:

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

    1. 检查当前状态:
            /opt/symas/bin/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}mdb,cn=config
      changetype: modify
      delete: olcSyncRepl
      
      dn: olcDatabase={2}mdb,cn=config
      changetype: modify
      delete: olcMirrorMode
    3. 运行 ldapmodify 命令:
            /opt/symas/bin/ldapmodify -x -w {credentials} -D "cn=admin,cn=config" -H "ldap://{HOST}:{PORT}/" -f path/to/file/break_repl.ldif

      输出应类似如下所示:

      modifying entry "olcDatabase={2}mdb,cn=config"
      modifying entry "olcDatabase={2}mdb,cn=config"
  3. 您可以通过在 dc-2 LDAP 中创建一个条目并确保该条目未显示在 dc-1 的 LDAP 中,来验证 dc-2 是否不再复制到 dc-1。

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

    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` 命令添加用户:
      /opt/symas/bin/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 都不再复制:
      /opt/symas/bin/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. 移除之前添加的只读用户:
      /opt/symas/bin/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 中停止 SymasLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
  5. 在 dc-1 上卸载 SymasLDAP 组件:
    /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&region=dc-1&pod=gateway-1&uuid=UUID&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&region=dc-1&pod=gateway-1&uuid=UUID&action=remove"
  4. 将环境与消息处理器取消关联。
    curl -H "Content-Type:application/x-www-form-urlencoded" <AdminEmailID>:'<AdminPassword>’  \
    -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 服务器 (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. 获取分析组和消费群组的列表:
    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. 从 Edge 安装中取消注册 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. 从 Edge 安装中移除 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 节点。 您停用了现有主节点,并将剩余的某个 PostgreSQL 备用节点提升为主节点。按照以下步骤配置其余的备用节点:

    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 master 是否已正确设置:
      /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®ion=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 主服务器了。卸载 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 中的说明获取 PostgreSQL 服务器的 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 主服务器了。卸载 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 服务器。

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

    关于 ZooKeeper 的注意事项:在修改配置文件中的 ZK_HOST 属性时,您必须保持投票节点达到法定人数,以确保 ZooKeeper 集群保持正常运行。 您的配置中必须有奇数个投票节点。如需了解详情,请参阅 Apache ZooKeeper 维护任务

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

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

      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。

      示例:假设您在 dc-1 中有 IP $IP1 $IP2 $IP3,在 dc-2 中有 IP $IP4 $IP5 $IP6,并且您要停用 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 配置文件:
      • 如果 Edge 路由器和消息处理器配置在同一节点上,请输入:
        /opt/apigee/apigee-setup/bin/setup.sh -p rmp -f updated_config_file
      • 如果 Edge 路由器和消息处理器配置在不同的节点上,请输入以下内容:

        对于路由器:

        /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. 列出组织下的所有可用播客:
        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

    至此,您已完成 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

    验证

    您可以使用以下命令验证退役。

    管理服务器

    1. 在所有区域中,从管理服务器运行以下命令。
      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
    2. 在所有组件上运行以下命令,以检查所有管理端口的端口要求。
      curl -v http://MS_IP:8080/v1/servers/self
    3. 检查分析组。
      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
    4. Cassandra/ZooKeeper 节点

      1. 在所有 Cassandra 节点上,输入:
        /opt/apigee/apigee-cassandra/bin/nodetool -h <host> statusthrift

        这会返回相应特定节点的 runningnot running 状态。

      2. 在一个节点上,输入:
        /opt/apigee/apigee-cassandra/bin/nodetool -h <host> ring
        /opt/apigee/apigee-cassandra/bin/nodetool -h <host> status

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

      3. 在 ZooKeeper 节点上,首先输入:
        echo ruok | nc <host> 2181
        

        此命令会返回 imok

        接下来,输入:

        echo stat | nc <host> 2181 | grep Mode
        

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

      4. 在一个 ZooKeeper 节点中,运行以下命令:
        /opt/apigee/apigee-zookeeper/contrib/zk-tree.sh >> /tmp/zk-tree.out.txt
      5. 在 Postgres 主节点上,运行以下命令:
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master

        验证响应是否表明相应节点是主节点。

      6. 在备用节点上,运行以下命令:
        /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-standby

        确保响应确认节点处于待机状态。

      7. 使用以下命令登录 PostgreSQL 数据库:
        psql -h localhost -d apigee -U postgres

        出现提示时,输入 postgres 用户的密码(默认密码:postgres)。

        然后,执行以下查询以检查最大 client_received_start_timestamp

        SELECT max(client_received_start_timestamp) FROM "analytics"."$org.$env.fact" LIMIT 1;

      日志

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