現在、Apigee と Apigee ハイブリッドのドキュメントを表示しています。
Apigee Edge ドキュメントを表示する。
症状
マルチリージョン展開中にデータを複製すると、CassandraDataReplication ステータスにエラー状態が表示され、データ レプリケーションが失敗する可能性があります。
エラー メッセージ
      kubectl を使用して再ビルド ステータスを表示するには:
  kubectl -n apigee get apigeeds \
  -o jsonpath="{.items[].status.cassandraDataReplication}{'\n'}"
1 つ以上の Cassandra Pod が、エラー状態と再ビルドに失敗したことを示すメッセージを表示します。次に例を示します。
{
  "rebuildDetails": {
    "apigee-cassandra-default-0": {
      "message": "failed to rebuild from us-west1: java.lang.IllegalStateException : Unable to find sufficient sources for streaming range (-8567285182390470134,-8567154549835592965] in keyspace system_distributed",
      "state": "error",
      "updated": 1641581899
    },
    …
  }
}考えられる原因
| 原因 | 説明 | トラブルシューティングの実施対象 | 
|---|---|---|
| ソース リージョンが正しくない | Cassandra データ レプリケーション YAML ファイルで source.regionに誤った値が指定されています。 | Apigee ハイブリッド | 
| ネットワーク接続に関する問題 | 異なるデータセンターにある Cassandra Pod 間でネットワーク接続の問題が発生している可能性があります。 | Apigee ハイブリッド | 
共通の診断手順
- データ レプリケーションのステータスを取得します。kubectl -n apigee get apigeeds \ 
 -o jsonpath="{.items[].status.cassandraDataReplication}{'\n'}"
- エラー メッセージで指定されたメッセージと同様のものを示すエラーが表示された場合、この問題に直面していることを示しています。
原因: ソース リージョンが正しくない
    データ レプリケーション YAML ファイルで、実際のソース datacenter と異なるソース リージョン(datacenter)を指定した場合、データ レプリケーションは失敗します。診断の手順でこのシナリオを分析し、解決策の手順で是正します。
診断
- ソース リージョンのすべての Cassandra Pod を一覧表示します。kubectl -n apigee get pods -l app=apigee-cassandra 
- ステップ 1 で返された Cassandra Pod のいずれか 1 つから実際の datacenter値を取得します。kubectl -n apigee exec -it apigee-cassandra-default-0 -- \ nodetool -u JMX_user -pw JMX_password status 
- マルチリージョン デプロイで作成した Cassandra データ レプリケーション カスタム リソース(YAML)ファイルの source.regionに使用する値を取得します。マルチリージョン デプロイのドキュメントにあるサンプル ファイル名を使用している場合、ファイルはdatareplication.yamlという名前にする必要があります。cat datareplication.yaml 結果の例: apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: apigee-hybrid-example-org force: false source: region: "us-west1" 
- nodetool status出力の結果を確認して、- datacenter値が- source.region値と一致するかどうかを確認します。- kubectl -n apigee exec -it apigee-cassandra-default-0 -- \ nodetool -u jmxuser -pw iloveapis123 status - 結果の例: - Datacenter: dc-1 ================ Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 10.104.13.2 491.84 KiB 256 100.0% 7254711c-fe0a-4b34-b50f-861109f97936 ra-1 UN 10.104.11.3 527.36 KiB 256 100.0% 5ec389f0-fd67-4de6-9f21-172d5899ff78 ra-1 UN 10.104.12.7 838.46 KiB 256 100.0% 7a88be82-1f81-4117-86e3-2cda434c0878 ra-1 
- datareplication.yamlファイルの- source.region(- us-west1)は、- nodetoolステータス出力の実際の- datacenter値(- dc-1)と一致しないことに注意してください。解決策の手順に沿って構成を修正します。
解決策
    データ レプリケーションを是正するには、データ レプリケーション ジョブを削除し、正しい datacenter 名で作成する必要があります。次の手順を実施します。
  
- 現在のデータ レプリケーション プロセスを削除します。マルチリージョン デプロイのドキュメントにあるサンプル ファイル名を使用している場合、ファイルは datareplication.yamlという名前にする必要があります。kubectl delete -f datareplication.yaml 
- YAML ファイルのリージョン名を適切な datacenter値に(例:dc-1)更新します。apiVersion: apigee.cloud.google.com/v1alpha1 kind: CassandraDataReplication metadata: name: region-expansion namespace: apigee spec: organizationRef: apigee-hybrid-example-org force: false source: region: "dc-1" 
- 更新されたデータ レプリケーションを適用します。kubectl apply -f datareplication.yaml 
- 次のコマンドを使用して再ビルドのステータスを確認し、以前に報告されたエラー状態がもう表示されなくなったことを確認します。kubectl -n apigee get apigeeds \ -o jsonpath="{.items[].status.cassandraDataReplication}{'\n'}"
- 問題が解決しない場合は、原因: ネットワーク接続の問題に進みます。
原因: ネットワーク接続性の問題
データ レプリケーション エラーは、Cassandra ノード間の接続性の問題に起因する場合もあります。
診断
このシナリオを分析する手順は次のとおりです。
- すべての Cassandra Pod を一覧表示します。# list cassandra pods kubectl -n=apigee get pods -l app=apigee-cassandra 
- 次のコマンドを実行し、ポート 7001を使用して、最初のデータセンター(dc-1)にある最初の Cassandra Pod から、2 つ目のデータセンター(dc-2)にある最初の Cassandra Pod に telnet 接続します。k debug -it apigee-cassandra-default-0 -n apigee --image=nginx -- sh curl -v telnet://DC_2_APIGEE_CASSANDRA_DEFAULT_0_POD_IP:7001 
- telnet に成功すると、次のような出力が表示されます。* Rebuilt URL to: telnet://10.0.4.10:7001/ * Trying 10.0.4.10... * TCP_NODELAY set * Connected to 10.0.4.10 (10.0.4.10) port 7001 (#0) 
- そうでない場合は、次のようなエラーが表示されます。* Rebuilt URL to: telnet://10.0.4.10:7001/ * Trying 10.0.4.10... * TCP_NODELAY set * connect to 10.0.4.10 port 7001 failed: Connection refused * Failed to connect to 10.0.4.10 port 7001: Connection refused * Closing connection 0 curl: (7) Failed to connect to 10.0.4.10 port 7001: Connection refused あるデータセンターの Cassandra Pod から別のデータセンターの Cassandra Pod への接続に失敗した場合、ファイアウォール制限やネットワーク接続の問題があることを示しています。 
解決策
- この Apigee ハイブリッドのデプロイが GKE にある場合、あるデータセンターから別のデータセンターへのトラフィックをブロックするファイアウォール ルールが設定されているかどうかを確認し、VPC ファイアウォール ルールの概要を参照してネットワーク接続の問題を分析します。
- この Apigee ハイブリッド デプロイメントが GKE On-Prem 上にある場合は、関連するネットワーキング チームと連携して、ネットワーク接続性の問題を分析します。
問題が解決しない場合は、診断情報の収集が必要な場合をご覧ください。
診断情報の収集が必要な場合
前述の手順を踏んでも問題が解決しない場合は、次の診断情報を収集して Google Cloud カスタマーケアにご連絡ください。
- Google Cloud プロジェクト ID。
- Apigee ハイブリッド組織。
- ソースと新しいリージョンの両方の overrides.yamlファイル。機密情報をマスキングします。
- CassandraDataReplicationYAML ファイル。
- Cassandra nodetool statusの出力:kubectl -n apigee exec -it apigee-cassandra-default-0 -- \ nodetool -u JMX_user -pw JMX_password status 
- Cassandra nodetool describeclusterの出力:kubectl -n apigee exec -it apigee-cassandra-default-0 -- \ nodetool -u JMX_user -pw JMX_password describecluster