このページでは、さまざまなエラーのシナリオと、それらのシナリオのエラーメッセージ、エラーを解決するためのトラブルシューティング手順について説明します。
ネットワーク エラーのシナリオ
割り当てられた IP 範囲を使い切った
Memorystore for Memcached では、プライベート サービス アクセス接続と、その接続に関連付けられた IP アドレス範囲を使用する必要があります。Memcached インスタンスや他の Google Cloud リソースで、その範囲で使用可能な IP アドレスを使い切ることがあります。
IP アドレスが不足している場合に、インスタンスを作成すると次のエラー メッセージが返されます。
ERROR: (gcloud.memcache.instances.create) {
"code": 9,
"message": "Unable to create instance. The allocated private IP address space
is exhausted. For information on expanding the allocation, see https://cloud.google.com/vpc/docs/configure-private-services-access#modify-ip-range"
}
この問題は、追加の IP アドレスを割り当てることで解決できます。この方法についての詳細は、IP アドレス範囲の枯渇をご覧ください。
ネットワークのプライベート サービス アクセス接続が確立されない
プロジェクトのネットワークのプライベート サービス アクセス接続が確立されていない状態で Memorystore for Memcached インスタンスを作成しようとすると、次のエラーが発生してインスタンスの作成は失敗します。
Google private service access is not enabled. Enable private service access and
try again
インスタンスを正常に作成するには、プライベート サービス アクセス接続の確立のプライベート サービス アクセスの設定手順を実施します。
プライベート サービス アクセス用のネットワーク ピアリングが削除される
プライベート サービス アクセス接続を確立すると、servicenetworking-googleapis-com
というネットワーク ピアリング接続が作成され、プロジェクトの [VPC ネットワーク ピアリング] ページに表示されます。
このネットワーク ピアリングを削除すると、次のエラーが発生する場合があります。
telnet: Unable to connect to remote host: Connection timed out
Unable to create instance. Enable private service access for the authorized network and try again. For information on enabling private service access, see https://cloud.google.com/service-infrastructure/docs/enabling-private-services-access
この問題を解決するには、プライベート サービス アクセス接続を確立するの gcloud の手順の最後のステップを行います。
ファイアウォール ルールによるインスタンス IP アドレスのブロック
プライベート サービス アクセス接続に関連付けられた割り当て IP 範囲からの IP アドレスをブロックするファイアウォール ルールを作成すると、接続の問題が発生する可能性があります。
Memcached インスタンスの IP 範囲をブロックするネットワーク ファイアウォール ルールを作成しないでください。
他の Google Cloud リソースから Memcached インスタンスに接続する際のエラー
App Engine スタンダード環境または Cloud Run functions からインスタンスへの接続エラー
App Engine スタンダード環境または Cloud Run functions を使用して Memcached インスタンスに接続できない場合は、環境にサーバーレス VPC アクセス コネクタが設定されていない可能性があります。
App Engine スタンダード環境でサーバーレス VPC アクセスを設定する方法については、VPC ネットワークへの接続をご覧ください。
Cloud Run functions のサーバーレス VPC アクセスを設定する手順については、VPC ネットワークへの接続をご覧ください。
Google Kubernetes Engine クラスタを使用したインスタンスへの接続時のエラー
クラスタ上で VPC ネイティブ / IP エイリアスが有効になっていない GKE クラスタからは、Memorystore for Memcached インスタンスに接続することはできません。GKE クラスタの作成中に VPC ネイティブ / IP エイリアスを有効にするのが、最も簡単です。クラスタを作成するときに、詳細オプションの [VPC ネイティブ] を選択します。詳細については、VPC ネイティブ クラスタの作成をご覧ください。
App Engine フレキシブル環境または Compute Engine VM を使用してインスタンスに接続する際のエラー
インスタンスで接続の問題が発生した場合は、次のトラブルシューティング手順に従います。
Memcached インスタンスが、アクセスしようとしているクライアントと同じリージョンとネットワークでプロビジョニングされていることを確認します。
プロジェクトに、Memcached インスタンスのノード IP をブロックするネットワーク ファイアウォール ルールがないことを確認します。
- ノードの IP アドレスを表示するには、Google Cloud コンソールで [Memcached インスタンスのノード] タブを表示します。
Memcached ノードの 1 つに telnet で接続し、簡単な Memcached
set
とget
コマンドを実行して、インスタンスが応答するかどうかを確認します。- ノードが応答しない場合は、ネットワーク エラー シナリオのトラブルシューティングの問題のいずれかが、ノードのネットワーク接続をブロックしていないか確認します。ブロックしていない場合は、Google Cloud サポートにお問い合わせください。
Identity and Access Management(IAM)エラーのシナリオ
削除されたサービス アカウントの復元
Memorystore for Memcached は、次のサービス アカウントを使用して Memcached インスタンスを管理します。
- service-project-number@service-networking.iam.gserviceaccount.com
- service-project-number@cloud-memcache-sa.iam.gserviceaccount.com
これらのサービス アカウントのポリシー バインディングを削除すると、新しいインスタンスを作成できなくなります。
このシナリオで gcloud を使用して Memcached インスタンスを作成しようとすると、次のエラー メッセージが表示されることがあります。
ERROR: (gcloud.memcache.instances.create) {
"code": 13,
"message": "an internal error has occurred"
}
これらのサービス アカウントのポリシー バインディングを再確立するには、次のいずれかのコマンドを実行します。variables は、適切な値に置き換えてください。削除されたサービス アカウントに関連付けられたコマンドを実行します。
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@service-networking.iam.gserviceaccount.com' --role='roles/servicenetworking.serviceAgent'
gcloud projects add-iam-policy-binding project-id --member='serviceAccount:service-project-number@cloud-memcache-sa.iam.gserviceaccount.com' --role='roles/memcache.serviceAgent'
オペレーション タイムアウト エラー
次のエラーのシナリオでは、応答しない Memcached インスタンスやインスタンス / ノードのオペレーションのタイムアウトについて説明します。
ネットワーク パーティション エラー
Google Cloud サーバーのネットワーク パーティション エラーが原因で、Google Cloud リソースがリージョン内のゾーン間で通信できなくなることがあります。このことが原因で、インスタンスの接続が失われ、タイムアウト エラーが発生することがあります。
Google Cloud で、インスタンスがプロビジョニングされているリージョンまたはゾーンのネットワーク パーティション エラーを解決すると、接続が正常に再開されます。
このシナリオでは、次のような接続エラー メッセージが表示されることがあります。
telnet: Unable to connect to remote host: Connection timed out
タイムアウト エラーの原因を特定できない場合は、Google Cloud サポートにお問い合わせください。
ノード IP への不適切なアプリケーション参照
クライアントがノードに接続しようとしてタイムアウトした場合は、接続しようとしているノードの適切な IP アドレスが、アプリケーションで指定されていない可能性があります。アプリケーションが、クラスタ内のノードの IP アドレスを指定していることを確認してください。
このシナリオでは、次のような接続エラー メッセージが表示されることがあります。
telnet: Unable to connect to remote host: Connection timed out
この問題を解決するには、ノードの IP アドレスを調べて、アプリケーションがノードのアドレスを正確に指定するようにしてください。
その他のエラーのシナリオ
Compute Engine の IP アドレス範囲がサポートされていない
Memorystore for Memcached には、172.17.0.0/16
の範囲内の IP アドレスを持つ Compute Engine VM からはアクセスできません。これは、この範囲のアドレスは内部コンポーネント用に予約されているためです。
リージョン内のゾーン間での不均等なノードの分散
Memcached インスタンスのプロビジョニング時に Google Cloud リージョンのゾーンが使用できない場合、使用可能なゾーンにノードが作成されます。この動作により、リージョン内の複数のゾーンに分散されたノードが不均等になることがあります。
これは、アプリケーションのパフォーマンスに大きな影響を与えることはないはずです。ただし、ゾーンの停止時にデータを保護するため、リージョン内のすべてのゾーンにわたってノードを分散させることが理想的です。
インスタンスの作成時にゾーン間でのノードの分散に不満がある場合は、そのゾーンがオンラインにもどるまで待つか、次の方法に従って、あとでゾーン間でノードを再分散します。
ゾーン内の使用可能なノード間で Memcached ノードを再分散するには、インスタンスをスケールアップして、それから目的のノード数にスケールダウンします。目的のゾーンがオンラインに戻ると、スケーリング プロセスは、使用可能なゾーン全体にノードを均等に再分散します。また、スケーリングを行うと、Memcached インスタンス内のデータがキャッシュ フラッシュされることに注意してください。