有时,您可能需要停用数据中心。例如,如果您要升级操作系统,则需要在新数据中心内安装新的操作系统,然后停用旧数据中心。以下部分介绍了停用数据中心的示例,该数据中心采用 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
- 确保要停用的数据中心目前没有运行时流量到达。
停用组件的顺序
如果您在多个节点上安装适用于私有云的 Edge,则应按以下顺序停用这些节点上的 Edge 组件:
- Edge 界面 (edge-ui)
- 管理服务器 (edge-management-server)
- OpenLDAP (apigee-openldap)
- 路由器 (edge-router)
- 消息处理器 (edge-message-processor)
- Qpid Server 和 Qpidd(edge-qpid-server 和 apigee-qpidd)
- Postgres 和 PostgreSQL 数据库(edge-postgres-server 和 apigee-postgresql)
- ZooKeeper (apigee-zookeeper)
- 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 上停用管理服务器,请执行以下步骤:
- 在 dc-1 上停止管理服务器:
apigee-service edge-management-server stop
- 找到在 dc-1 中注册的管理服务器的 UUID:
curl -u <AdminEmailID>:'<AdminPassword>' \ -X GET “http://{MS_IP}:8080/v1/servers?pod=central®ion=dc-1&type=management-server”
- 取消注册服务器的类型:
curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \ -d "type=management-server®ion=dc-1&pod=central&uuid=UUID&action=remove"
- 删除服务器。注意:如果此服务器上还安装了其他组件,请先取消注册所有组件,然后再删除 UUID。
curl -u <AdminEmailID>:'<AdminPassword> -X DELETE http://{MS_IP}:8080/v1/servers/{UUID}
- 卸载 dc-1 上的管理服务器组件:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server uninstall
Open LDAP
本部分介绍如何在 dc-1 上停用 OpenLDAP。
注意:如果您有两个以上的数据中心,请参阅下文中的具有两个以上数据中心的设置。
要在 dc-1 上停用 OpenLDAP,请按以下步骤操作:
- 按照如何备份中的步骤备份 dc-1 OpenLDAP 节点。
通过在两个数据中心(dc-1 和 dc-2)中执行以下步骤来中断这两个数据中心之间的数据复制。
- 检查当前状态:
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
- 创建包含以下命令的文件
break_repl.ldif
:dn: olcDatabase={2}bdb,cn=config changetype: modify delete: olcSyncRepl dn: olcDatabase={2}bdb,cn=config changetype: modify delete: olcMirrorMode
- 运行
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"
- 检查当前状态:
您可以通过在 dc-2 LDAP 中创建条目并确保它不会显示在 dc-1 的 LDAP 中,来验证 dc-2 是否不再复制到 dc-1。
(可选)您可以按照以下步骤在 dc-2 OpenLDAP 节点中创建只读用户,然后检查用户是否被复制。该用户随后会被删除。
- 在 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}
- 在 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"
- 在 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
- 移除您之前添加的只读用户:
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"
- 在 dc-2 中创建一个包含以下内容的
- 停止 dc-1 中的 OpenLDAP:
/opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
- 卸载 dc-1 上的 OpenLDAP 组件:
/opt/apigee/apigee-service/bin/apigee-service apigee-openldap uninstall
路由器
本部分介绍了如何停用路由器。如需详细了解如何移除路由器,请参阅 移除服务器。
通过以下步骤可将路由器从 dc-1 停用。 如果 dc-1 中配置了多个路由器节点,请一次在所有路由器节点中执行这些步骤。
注意:在这里,假设您的负载平衡器中配置了路由器的健康检查端口 15999,并且屏蔽端口 15999 将会导致路由器无法访问。您可能需要 root 权限才能屏蔽该端口。
如需停用路由器,请执行以下步骤:
通过屏蔽端口 15999(健康检查端口)来停用路由器的可达性。确保阻止此数据中心的运行时流量:
iptables -A INPUT -i eth0 -p tcp --dport 15999 -j REJECT
验证路由器是否可访问:
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
- 按照获取 UUID 中的说明获取路由器的 UUID。
- 停止路由器:
/opt/apigee/apigee-service/bin/apigee-service edge-router stop
- 使用以下命令列出组织中的可用网关 pod:
curl -u <AdminEmailID>:<AdminPassword> -X GET "http://{MS_IP}:8080/v1/organizations/{ORG}/pods"
请参阅 关于 Pod。
- 取消注册服务器的类型:
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"
- 删除服务器:
curl -u <AdminEmailID>:'<AdminPassword>’ -X DELETE http://{MS_IP}:8080/v1/servers/UUID
- 卸载
edge-router
:/opt/apigee/apigee-service/bin/apigee-service edge-router uninstall
请参阅 移除服务器。 - 刷新
iptables
规则以启用被屏蔽的端口 15999:iptables -F
消息处理器
本部分介绍如何从 dc-1 停用消息处理器。如需详细了解如何移除消息处理器,请参阅 移除服务器。
由于我们假定 dc-1 具有 12 节点集群安装,因此在 dc-1 中配置了两个消息处理器节点。在这两个节点中运行以下命令。
- 按照获取 UUID 中的说明获取消息处理器的 UUID。
- 停止消息处理器:
apigee-service edge-message-processor stop
- 取消注册服务器的类型:
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"/pre>
- 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" - 取消注册服务器的类型:
curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://MS_IP:8080/v1/servers -d "type=message-processor®ion=dc-1&pod=gateway-1&uuid=UUID&action=remove"
- 卸载消息处理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor uninstall
- 取消注册服务器:
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 节点,因此您必须对这两个节点执行以下步骤:
- 按照获取 UUID 中的说明获取 Qpidd 的 UUID。
- 停止
edge-qpid-server
和apigee-qpidd
:/opt/apigee/apigee-service/bin/apigee-service edge-qpid-server stop
/opt/apigee/apigee-service/bin/apigee-service apigee-qpidd stop
- 获取 Google Analytics(分析)和消费者群组列表:
curl -u <AdminEmailID>:'<AdminPassword>' -X GET http://{MS_IP}:8080/v1/analytics/groups/ax
- 从使用方群组中移除 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}"
- 从分析组中移除 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"
- 从 Edge 安装中取消注册 Qpid 服务器:
curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://{MS_IP}:8080/v1/servers \ -d "type=qpid-server®ion=dc-1&pod=central&uuid={QPID_UUID}&action=remove"
- 从 Edge 安装中移除 Qpid 服务器:
curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
- 在所有节点上重启所有 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
- 卸载 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 主实例,请执行以下操作:
- 按照以下链接中的说明备份 dc-1 Postgres 主节点:
- 按照获取 UUID 中的说明获取 Postgres 服务器的 UUID。
- 在 dc-1 上,停止当前主实例上的
edge-postgres-server
和apigee-postgresql
:/opt/apigee/apigee-service/bin/apigee-service edge-postgres-server stop
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql stop
- 在 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 备用节点提升为主实例。按照以下步骤配置其余备用节点:
- 在新主实例上,修改配置文件以进行以下设置:
PG_MASTER=IP_or_DNS_of_new_PG_MASTER PG_STANDBY=IP_or_DNS_of_PG_STANDBY
- 在新主实例上启用复制:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-master -f configFIle
如果剩余多个备用节点
- 在
/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
- 确保 apigee 用户拥有文件 /opt/apigee/customer/application/postgresql.properties:
chown apigee:apigee /opt/apigee/customer/application/postgresql.properties
- 重启
apigee-postgresql
:apigee-service apigee-postgresql restart
- 修改配置文件
/opt/silent.conf
,并使用新的 Postgres 主实例的 IP 地址更新PG_MASTER
字段。 - 使用以下命令移除所有旧 Postgres 数据:
rm -rf /opt/apigee/data/apigee-postgresql/
- 在备用节点上设置复制:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup-replication-on-standby -f configFile
- 在 dc-2 中输入以下命令,验证 Postgres 主实例是否已正确设置:
/opt/apigee/apigee-service/bin/apigee-service apigee-postgresql postgres-check-master
- 从分析组和使用方组中移除和添加 Postgresql 服务器。
- 按照 从分析组中移除 Postgres 服务器中的说明,从分析组中移除旧的 Postgres 服务器。
- 按照 将现有 Postgres 服务器添加到分析组中的说明,将新的 Postgres 服务器添加到分析组。
- 从 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"<
- 从 dc-1 删除旧的 postgres 服务器:
curl -u >AdminEmailID>:'>AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
- 旧的 Postgres 主实例现在可以安全停用。卸载
edge-postgres-server
和apigee-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 备用实例,请执行以下步骤:
- 按照获取 UUID 中的说明获取 Postgres 服务器的 UUID。
- 在 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
- 从分析组和使用方组中移除和添加 Postgresql 服务器。
- 按照 从分析组中移除 Postgres 服务器中的说明,从分析组中移除旧的 Postgres 服务器。
- 按照 将现有 Postgres 服务器添加到分析组中的说明,将新的 Postgres 服务器添加到分析组。
- 从 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"<
- 从 dc-1 删除旧的 postgres 服务器:
curl -u >AdminEmailID>:'>AdminPassword>' -X DELETE http://{MS_IP}:8080/v1/servers/UUID
- 旧的 Postgres 主实例现在可以安全停用。卸载
edge-postgres-server
和apigee-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 服务器,请执行以下操作:
- 按照以下链接中的说明备份 dc-1 Cassandra 和 ZooKeeper 节点:
列出 Cassandra 节点即将停用的数据中心内 ZooKeeper 和 Cassandra 服务器的 UUID。
apigee-adminapi.sh servers list -r dc-1 -p central -t application-datastore --admin <AdminEmailID> --pwd '<AdminPassword>' --host localhost
- 取消注册服务器的类型:
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®ion=dc-1&pod=central&uuid=UUID&action=remove"
- 取消注册服务器:
curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MS_IP:8080/v1/servers/UUID
- 使用从
ZK_HOSTS
和CASS_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"
- 现有配置文件条目:
- 使用已移除的停用节点的 IP 更新静默配置文件(已在步骤 e 中修改),并在托管管理服务器的所有节点上运行管理服务器配置文件:
/opt/apigee/apigee-setup/bin/setup.sh -p ms -f updated_config_file
- 使用已移除的停用节点的 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
- 如果在同一节点上配置了边缘路由器和消息处理器,请输入:
- 重新配置所有 Qpid 节点,并从响应文件中移除已停用节点的 IP:
/opt/apigee/apigee-setup/bin/setup.sh -p qs -f updated_config_file
- 重新配置所有 Postgres 节点,并从响应文件中移除已停用节点的 IP:
/opt/apigee/apigee-setup/bin/setup.sh -p ps -f updated_config_file
- 更改
system_auth
键空间。如果您在现有 Cassandra 节点上启用了 Cassandra 身份验证,请运行以下命令,更新system_auth
键空间的复制因子:ALTER KEYSPACE system_auth WITH replication = {'class': 'NetworkTopologyStrategy', 'dc-2': '3'};
此命令将复制因子设置为
'3'
,表示集群中有三个 Cassandra 节点。根据需要修改此值。完成此步骤后,Cassandra 拓扑的任何键空间都不应包含
dc-1
。 - 逐个停用 dc-1 上的 Cassandra 节点。
如需停用 Cassandra 节点,请输入以下命令:
/opt/apigee/apigee-cassandra/bin/nodetool -h cassIP -u cassandra -pw '<AdminPassword>' decommission
- 使用以下任一命令检查 dc-1 中的 Cassandra 节点的连接:
/opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra -p '<AdminPassword>'
或者在已停用节点上运行的辅助验证命令:
/opt/apigee/apigee-cassandra/bin/nodetool netstats
上述命令应返回:
Mode: DECOMMISSIONED
- 为 dc-2 中的所有 Cassandra 和 ZooKeeper 节点运行 DS 配置文件:
/opt/apigee/apigee-setup/bin/setup.sh -p ds -f updated_config_file
- 停止 dc-1 中的
apigee-cassandra
和apigee-zookeeper
:apigee-service apigee-cassandra stop
apigee-service apigee-zookeeper stop
- 卸载 dc-1 中的
apigee-cassandra
和apigee-zookeeper
:apigee-service apigee-cassandra uninstall
apigee-service apigee-zookeeper uninstall
删除 dc-1 中的绑定
要从 dc-1 中删除绑定,请执行以下步骤:
- 删除 dc-1 中的绑定。
- 列出组织下的所有可用 Pod:
curl -v -u <AdminEmailID>:<AdminPassword> -X GET "http://MS_IP:8080/v1/o/ORG/pods"
- 如需检查是否已移除所有绑定,请获取与 Pod 关联的服务器的 UUID:
curl -v -u <AdminEmailID>:<AdminPassword> \ -X GET "http://MS_IP:8080/v1/regions/dc-1/pods/gateway-1/servers"
如果此命令未返回任何 UUID,则表明前面的步骤已移除所有绑定,您可以跳过下一步。否则,请执行下一步。
- 移除在上一步中获取的 UUID 的所有服务器绑定:
curl -u <AdminEmailID>:'<AdminPassword>' -X DELETE http://MS_IP:8080/v1/servers/UUID
- 解除组织与 Pod 的关联:
curl -v -u <AdminEmailID>:<AdminPassword> "http://MS_IP:8080/v1/o/ORG/pods" -d "action=remove®ion=dc-1&pod=gateway-1" -H "Content-Type: application/x-www-form-urlencoded" -X POST
- 列出组织下的所有可用 Pod:
- 删除 Pod:
curl -v -u <AdminEmailID>:<AdminPassword> "http://MS_IP:8080/v1/regions/dc-1/pods/gateway-1" -X DELETE
- 删除该区域。
curl -v -u <AdminEmailID>:<AdminPassword> "http://MS_IP:8080/v1/regions/dc-1" -X DELETE
注意:如果您未执行删除服务器的某个步骤,上述步骤将返回一条错误消息,指出 Pod 中的特定服务器仍然存在。因此,请按照以下问题排查步骤删除它们,同时自定义
curl
命令中的类型。至此,您已完成 dc-1 的停用。
附录
问题排查
如果在执行上述步骤后,某些 Pod 中仍有服务器,请按照以下步骤取消注册并删除服务器。 注意:请根据需要更改类型和 Pod。
- 使用以下命令获取 UUID:
apigee-adminapi.sh servers list -r dc-1 -p POD -t --admin <AdminEmailID> --pwd '<AdminPassword>’ --host localhost
- 取消注册服务器的类型:
curl -u <AdminEmailID>:'<AdminPassword>' -X POST http://MP_IP:8080/v1/servers -d "type=TYPE=REGION=dc-1&pod=POD&uuid=UUID&action=remove"
- 逐个删除服务器:
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®ion=dc-1 curl -v -u <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=gateway®ion=dc-1 curl -v -u <AdminEmailID>:'<AdminPassword>' http://MS_IP:8080/v1/servers?pod=analytics®ion=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
这将为该特定节点返回
running
或not 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
值将是以下值之一:observer
、leader
或follower
。在一个 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
;日志
检查组件上的日志,确保没有错误。
- 在新主实例上,修改配置文件以进行以下设置: