如果您沒有讓元件設定檔中的 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 位址變更為新的 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 (請見下方說明),則請重新啟動每個 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 位址變更為新的 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
輸出中的模式行應顯示「leader」。
- 由領導者開始,並以變更 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 伺服器 (OpenLDAP) 的 IP 位址
如要變更 OpenLDAP 節點的 IP 位址,請按照下列步驟操作:
- 在 Management Server 節點上,編輯
/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 伺服器 (而非 postgresql) 與 Qpid 伺服器) 的 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。