如果您没有使组件配置文件中的 IP 地址保持同步,则将组件从一台机器移动到另一台机器可能会导致配置不匹配。
本部分介绍了如何诊断和修复配置不一致问题。
IP 地址与主机名
在组件配置文件中,您应当使用 IP 地址而非主机名。
虽然某些组件配置文件允许您使用主机名而不是 IP 地址,但使用主机名可能会使问题排查变得复杂。例如,主机名可能是与 DNS 服务器连接、查找失败和同步相关的问题的来源。
因此,Apigee 强烈建议所有组件配置都使用 IP 地址。在某些情况下(例如使用 Cassandra 时),您必须使用 IP 地址,而不能使用主机名。文档中的大多数示例都使用 IP 地址进行组件配置。
对于主机名和 IP 地址,在移动 Apigee 服务器时请考虑以下场景的影响:
场景 | 对移动服务器的影响 |
---|---|
IP 地址更改 | 更新引用原始 IP 地址的所有相关文件 |
更改主机名,而不更改 IP 地址 | 无影响 |
主机名随着 IP 地址的变化而更改 | 与 IP 地址更改相同 |
更改 Cassandra 节点的 IP 地址
如需更改 Cassandra 节点的 IP 地址,请执行以下步骤:
对于具有单个 Cassandra 节点的配置
- 在要修改的系统上修改
/opt/apigee/customer/application/cassandra.properties
。如果该文件不存在,请创建一个。 - 更改以下参数:
- 设置
conf_cassandra_seeds
和conf_cassandra_listen_address
参数以指定系统的新 IP 地址。 - 将
conf_cassandra_rpc_address
更改为使用新的 IP 地址或 0.0.0.0(允许 Cassandra Thrift 监听所有接口)。
- 设置
- 用编辑器中打开
/opt/apigee/apigee-cassandra/conf/cassandra-topology.properties
。您应该会看到旧 IP 地址和默认设置,形式如下:192.168.56.101=dc-1:ra-1 default=dc-1:ra-1
保存相应信息。
- 修改
/opt/apigee/customer/application/cassandra.properties
以将指定的旧 IP 地址更改为新 IP 地址:conf_cassandra-topology_topology=192.168.56.103=dc-1:ra-1\ndefault=dc-1:ra-1\n
确保在 IP 地址后插入“\n”,并指定您在上面第 3 步中找到的默认设置。
- 重启 Cassandra:
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 如有必要,还要修复 ZooKeeper(见下文),否则从 Management Server 开始重启每个 Apigee 平台组件。
适用于具有多个 Cassandra 节点(环)的配置
- 如果要更改的节点是种子节点,请修改环中每个系统上的
/opt/apigee/customer/application/cassandra.properties
文件,并更改conf_cassandra_seeds
参数以包含修改后的系统的新 IP。如果 cassandra.properties 文件不存在,请创建一个。 - 在要修改的系统上修改
/opt/apigee/customer/application/cassandra.properties
,并更改以下参数:- 将
conf_cassandra_listen_address
设置为使用新的 IP 地址。 - 将
conf_cassandra_rpc_address
设置为使用新的 IP 地址或“0.0.0.0”(允许 Cassandra Thrift 监听所有接口)。
- 将
- 用编辑器中打开
/opt/apigee/apigee-cassandra/conf/cassandra-topology.properties
。您应该会看到以下形式的所有 Cassandra IP 地址和默认设置:192.168.56.101=dc-1:ra-1 192.168.56.102=dc-1:ra-1 192.168.56.103=dc-1:ra-1 default=dc-1:ra-1
保存相应信息。
- 修改
/opt/apigee/customer/application/cassandra.properties
以将指定的旧 IP 地址更改为新 IP 地址:conf_cassandra-topology_topology=192.168.56.101=dc-1:ra-1\n192.168.56.102=dc-1:ra-1\n192.168.56.104=dc-1:ra-1\ndefault=dc-1:ra-1\n
请确保在每个 IP 地址后插入“\n”,并使用您在上面第 3 步中记录的相同默认设置。
- 在修改后的系统上重启 Cassandra。如果修改后的系统是种子节点,请也重启使用修改后的种子节点的每个系统。
/opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
- 在修改的节点上运行
nodetool ring
命令,以确保环已完成。您可以在以下位置找到该实用程序:/opt/apigee/apigee-cassandra/bin
。nodetool [-u username -pw password] -h localhost ring
只有在您为 Cassandra 启用了 JMX 身份验证的情况下,才需要传递用户名和密码。
- 在修改后的节点上运行
nodetool repair
。请注意,此过程可能需要一些时间,因此强烈建议不要在 API 流量高峰时段执行此操作。nodetool [-u username -pw password] -h localhost repair -pr
- 如有必要,请修复 ZooKeeper(见下文),然后从管理服务器开始重启每个 Apigee 平台组件。
更新数据存储区注册
- 使用以下命令查找指定旧 IP 地址的数据存储区注册的 UUID。记下“type”和“UUID”参数:
-
curl -u ADMINEMAIL:PW "http://$MSIP:$port/v1/servers?pod=central®ion=DC" | egrep -i '[type|internalip|uuid|region]'
-
curl -u ADMINEMAIL:PW "http://$MSIP:$port/v1/servers?pod=gateway®ion=DC" | egrep -i '[type|internalip|uuid|region]'
-
curl -u ADMINEMAIL:PW "http://$MSIP:$port/v1/servers?pod=analytics®ion=DC" | egrep -i '[type|internalip|uuid|region]'
其中,DC 是数据中心名称。在单个数据中心安装中,该值通常为“dc-1”。
-
- 使用以下某个命令注册新的 IP 地址。所需命令取决于已更改节点的类型。
- 对于 type="application-datastore":
curl -u ADMINEMAIL:PW "http://MSIP:port/v1/servers -d \ "Type=application-datastore&Type=audit-datastore&InternalIP=NEWIP®ion=REGION&pod=central" \ -H 'content-type: application/x-www-form-urlencoded' -X POST
- 对于 type="kms-datastore":
curl -u ADMINEMAIL:PW "http://MSIP:port/v1/servers -d \ "Type=kms-datastore&Type=dc-datastore&Type=keyvaluemap-datastore&Type=counter-datastore&Type=cache-datastore \ &InternalIP=NEWIP®ion=REGION&pod=GATEWAY_POD" -H 'content-type: \ application/x-www-form-urlencoded' -X POST
- 对于 type="reportcrud-datastore":
curl -u ADMINEMAIL:PW "http://MSIP:port/v1/servers" -d \ "Type=reportcrud-datastore&InternalIP=NEW_IP®ion=REGION&pod=analytics" \ -H 'content-type: application/x-www-form-urlencoded' -X POST
- 对于 type="application-datastore":
- 删除 IP 地址发生更改的系统的 UUID 的旧注册。对于以下每个 UUID 问题:
curl -u ADMINEMAIL:PW "http://MSIP:port/v1/servers/OLD_UUID" -X DELETE
更改 ZooKeeper 节点的 IP 地址
如需更改 ZooKeeper 节点的 IP 地址,请按以下步骤操作:
更改 IP 地址并重启 ZooKeeper 集成学习(仅适用于多节点集成配置)
- 在编辑器中打开
/opt/apigee/apigee-zookeeper/conf/zoo.cfg
。您应该会看到以下形式的所有 ZooKeeper IP 地址和默认设置:server.1=192.168.56.101:2888:3888 server.2=192.168.56.102:2888:3888 server.3=192.168.56.103:2888:3888
保存相应信息。
- 在每个 ZooKeeper 节点上,修改文件
/opt/apigee/customer/application/zookeeper.properties
文件以将conf_zoo_quorum
属性设置为正确的 IP 地址。如果该文件不存在,请创建一个。conf_zoo_quorum=server.1=192.168.56.101:2888:3888\nserver.2=192.168.56.102:2888:3888\nserver.3=192.168.56.104:2888:3888\n
请确保在每个 IP 地址后插入“\n”,并且相应条目在每个节点中的顺序相同。
- 使用以下命令查找 ZooKeeper 集成的领导者(将 node 替换为 ZooKeeper 机器的 IP 地址):
echo srvr | nc node 2181
输出中的 Mode 行应显示“leader”。
- 依次重启一个 ZooKeeper,从主要副本开始,以 IP 地址发生更改的节点结束。如果多个 zookeeper 节点更改了 IP 地址,则可能需要重启所有节点。
/opt/apigee/apigee-service/bin/apigee-service apigee-zookeeper restart
- 使用上述
echo
命令验证每个 ZooKeeper 节点。
将更改后的配置告知 Apigee 节点
- 在每个路由器节点上,按如下方式修改文件
/opt/apigee/customer/application/router.properties
。如果该文件不存在,请创建一个。- 更改
conf_zookeeper_connection.string
参数以包含新的 IP 地址 - 更改
conf_zookeeper_zk1.host
参数以包含新的 IP 地址
- 更改
- 在每个消息处理器节点上,按如下方式修改文件
/opt/apigee/customer/application/message-processor.properties
。如果该文件不存在,请创建一个。- 更改
conf_zookeeper_connection.string
参数以包含新的 IP 地址 - 更改
conf_zookeeper_zk1.host
参数以包含新的 IP 地址
- 更改
- 在管理服务器节点上,按如下方式修改文件
/opt/apigee/customer/application/management-server.properties
。如果该文件不存在,请创建一个。- 更改
conf_zookeeper_connection.string
参数以包含新的 IP 地址 - 更改
conf_zookeeper_zk1.host
参数以包含新的 IP 地址
- 更改
- 通过在每个节点上运行以下命令来重启所有 Apigee 平台组件:
/opt/apigee/apigee-service/bin/apigee-all restart
更改 LDAP 服务器的 IP 地址 (OpenLDAP)
如需更改 OpenLDAP 节点的 IP 地址,请执行以下操作:
- 在管理服务器节点上,修改
/opt/apigee/customer/application/management-server.properties
文件。如果该文件不存在,请创建一个。 - 在
management-server.properties
文件中,将conf_security_ldap.server.host
参数设置为新 IP 地址。 - 重启管理服务器:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
更改其他 Apigee 节点类型的 IP 地址
如需更改以下任一节点类型(路由器、消息处理器、Postgres Server(非 postgresql)和 Qpid Server(非 qpidd)的 IP 地址,请运行以下命令:
- 使用以下
curl
命令注册新的内部和外部 IP 地址:curl -u ADMINEMAIL:PW -X PUT \ http://MSIP:8080/v1/servers/uuid -d ExternalIP=ip
curl -u ADMINEMAIL:PW -X PUT \ http://$MSIP:8080/v1/servers/uuid -d InternalIP=ip
其中 uuid 是节点的 UUID。
如需了解如何获取组件的 UUID,请参阅获取 UUID。