ネットワーキング

このページでは、Memorystore for Redis のネットワーキングの概要について説明します。

Memorystore は VPC ピアリングを使用して、VPC ネットワークを内部の Google サービス ネットワークに接続します。Memorystore for Redis は、インスタンスの作成時に選択した接続モードに応じて、さまざまなピアリング アーキテクチャとネットワーク機能を提供します。

接続モードの選択オプションは、Memorystore の既存のピアリング アーキテクチャをサポートしながら、共有 VPC アーキテクチャなどの高度なネットワーキング オプションや適切な IP 管理をサポートするために導入されました。

Memorystore for Redis では DIRECT_PEERINGPRIVATE_SERVICE_ACCESS の 2 つの接続モードをサポートしています。

Memorystore for Redis では、接続モードに関係なく、常に内部 IP アドレスを使用して Redis インスタンスをプロビジョニングします。

接続モード

Memorystore for Redis には、さまざまな機能をサポートする 2 つの接続モードが用意されています。

  • ダイレクト ピアリング
  • プライベート サービス アクセス

既存インスタンスのネットワーク接続モードを表示するには、次のコマンドを実行します。variables は適切な値に置き換えてください。

gcloud redis instances describe instance-id --region=region
  • connectMode 値には DIRECT_PEERING または PRIVATE_SERVICE_ACCESS が表示されます。

インスタンス作成時に接続モードを選択する方法については、サービス プロジェクトで共有 VPC ネットワークを使用して Redis インスタンスを作成するまたは一元化された IP アドレス範囲を持つ Redis インスタンスを作成するをご覧ください。

ダイレクト ピアリング

ダイレクト ピアリング モードの使用時は、Memorystore はお客様の VPC ネットワークと Google マネージド プロジェクトの VPC ネットワークの間に VPC ピアリングを作成します。ピアリングはインスタンスの作成中に自動的に作成されます。ユーザーが追加の手順を行う必要はありません。ピアリングは他の Google Cloud サービスと共有されません。Memorystore for Redis は、プライベート サービス アクセス接続モードが利用可能になる前に、ダイレクト ピアリング接続モードを使用しました。

デフォルトでは、新しいインスタンスはダイレクト ピアリング接続モードを使用して作成されます。 接続モードが指定されていない既存のスクリプトでは、デフォルトでダイレクト ピアリング モードが使用されます。

プライベート サービス アクセス

プライベート サービス アクセスは、VPC ネットワークと Google サービス ネットワークの間にピアリングを作成するもう 1 つの方法です。

VPC ネットワークにプライベート サービス アクセス接続を確立すると、その VPC ネットワークと Google サービス ネットワークの間にピアリングが作成されます。接続が確立されたら、プライベート サービス アクセス接続モードを使用してインスタンスを作成できます。

プライベート サービス アクセスを使用すると、Redis インスタンスで次の機能を使用できます。

  • 共有 VPC を使用して、サービス プロジェクトの Memorystore for Redis インスタンスをプロビジョニングします。
  • 複数の Google サービスの IP アドレス範囲を一元管理できます。
  • VPN トンネル経由で外部ソースからユーザーの VPC ネットワークに接続します。あるいは、Cloud Interconnect をユーザーの VPC ネットワークに接続します。

現在、プライベート サービス アクセス接続モードでインスタンスを作成するには、gcloud コマンドライン ツールを使用する必要があります。

プライベート サービス アクセスのもう 1 つのメリットは、同じネットワーク ピアリングが複数の Google サービスで共有されるため、Google サービスによって作成されるピアリングの数が制限されることです。

接続モードの選択

次の表に、必要となるさまざまなユースケースと接続モードを示します。

事例 サポートされている接続モード
共有 VPC ネットワークを使用した Redis インスタンスのプロビジョニング プライベート サービス アクセスのみ
VPN を使用してオンプレミス ネットワークから Redis インスタンスにアクセスする プライベート サービス アクセスのみ
複数の Google サービスで一元化された IP 範囲の管理を使用する プライベート サービス アクセスのみ
専用の VPC ネットワークを使用して Redis インスタンスをプロビジョニングする プライベート サービス アクセス(推奨)またはダイレクト ピアリング

既存インスタンスの接続モードの切り替え

既存のインスタンスの接続モードを切り替えることはできません。接続モードを切り替えるには、新しい接続モードを使用してインスタンスを再作成する必要があります。これにより、インスタンスの IP アドレスが変更されます。

たとえば、プライベート サービス アクセス接続モードが使用可能になる前に作成された既存のインスタンスがある場合、そのインスタンスの接続モード プロパティはダイレクト ピアリングに設定されています。プライベート サービス アクセス接続モードを使用してインスタンスを再作成すると、インスタンスの IP アドレスが変更されます。

また、Memorystore for Redis では、同じプロジェクト内および同じネットワーク内で、プライベート サービス アクセスを使用する Redis インスタンスと、ダイレクト ピアリングを使用するインスタンスをサポートしています。

オンプレミス アクセスとプライベート サービス アクセス

オンプレミス ネットワークが Memorystore for Redis インスタンスが接続されている VPC ネットワークに接続されていれば、オンプレミス ネットワーク内のクライアントから接続できます。オンプレミス ネットワークからの接続を許可するには、次の操作を行います。

  1. 次のいずれかのオプションを使用して、共有 VPC ネットワークがオンプレミス ネットワークに接続されていることを確認します。
  2. プライベート サービス接続によって生成されるピアリングを特定します。Memorystore for Redis が使用するピアリングの名前は servicenetworking-googleapis-com です。
  3. --import-custom-routes--export-custom-routes の両方のフラグを設定して、ピアリング接続を更新しカスタムルートを交換します。
  4. プライベート サービス接続に使用される割り振り範囲を特定します。
  5. Cloud VPN トンネルまたは Cloud Interconnect アタッチメント(VLAN)の BGP セッションを管理する Cloud Router の割り振り範囲用に Cloud Router のカスタムルート アドバタイズを作成します。

カスタム IP 範囲の設定

Memorystore for Redis でカスタム IP 範囲を指定するには、2 つの方法があります。

  • プライベート サービス アクセス方法

    • Redis インスタンスが PRIVATE_SERVICE_ACCESS 接続モードを使用している場合に、この方法を使用します。
  • ダイレクト ピアリング方法

    • Redis インスタンスが DIRECT_PEERING 接続モードを使用している場合に、この方法を使用します。

IP アドレス範囲は、CIDR 表記を使用して表現されます。

プライベート サービス アクセス接続モードによるカスタム IP 範囲

Cloud Console と gcloud ツールの両方を使用して、カスタム範囲を指定できます。範囲を割り当てる手順については、割り当て済みの IP アドレス範囲の作成をご覧ください。

ダイレクト ピアリングによるカスタム IP 範囲

インスタンスが DIRECT_PEERING 接続モードを使用している場合は、Memorystore for Redis のカスタム IP アドレス範囲を指定するには、gcloud redis instances create コマンドで --reserved-ip-range gcloud パラメータを使用する必要があります。インスタンスの作成後に予約された範囲を変更することも、既存の Redis インスタンスに予約済みの範囲を追加することもできません。

このパラメータに指定できる値の例を次に示します。

--reserved-ip-range=10.0.0.0/29

ネットワーキングの要件を伝える

通常、組織のネットワーキング チームやネットワーク管理者がプライベート サービス アクセス接続の設定を担当します。これにより、ネットワーキング チームでは、他の Google Cloud リソースに使用されている IP アドレスや範囲との重複が避けられます。重複すると接続上の問題が発生する可能性があります。

特に設定プロセス中にエラーが発生した場合は、組織のネットワーク / セキュリティ チームに連絡してプライベート サービス接続を設定することをおすすめします。ネットワーキング チームに連絡する際は、次の情報を送信します。

The Memorystore for Redis instance cannot be created due to the following
error:

"Google private services access is not enabled. Enable privates service access
and try again."

Before an instance can be created, a private service access connection needs to
be established for network <project name: network>. Please refer to the
following Memorystore documentation links for more information on how to create
this connection:

* Networking.
* Establishing a private services access connection.
* Verifying a private services access connection.

プライベート サービス アクセス接続を確立するために必要な権限

プライベート サービス アクセス接続を管理するには、次の IAM ロールが必要です。必要な権限がない場合は、権限不足のエラーになる可能性があります。一般的なネットワーキング エラーの一覧については、ネットワーキング エラーのシナリオをご覧ください。

UI の権限

UI でローカル ネットワークとホスト プロジェクトのネットワークを一覧表示するために必要な権限:
  • compute.networks.list
    • ローカル プロジェクトとホスト プロジェクトの両方で必要です。
UI でプライベート サービス アクセス接続を確認するために必要な権限:
  • compute.networks.list
    • ローカル プロジェクトとホスト プロジェクトの両方で必要です。
UI でプライベート サービス アクセス接続を作成するために必要な権限:
  • serviceusage.services.enable
    • Service Networking API を有効にするのに必要です。
  • compute.addresses.create
  • compute.addresses.list
  • servicenetworking.services.addPeering

gcloud の権限

プライベート サービス アクセス接続を確認するために必要な gcloud 権限
  • compute.networks.list
    • ローカル プロジェクトとホスト プロジェクトの両方で必要です。
プライベート サービス アクセス接続を作成するために必要な gcloud 権限
  • serviceusage.services.enable
    • Service Networking API を有効にするのに必要です。
  • compute.addresses.create
  • compute.addresses.list
  • servicenetworking.services.addPeering

サポートされているネットワークとクライアント IP 範囲

RFC 1918 の IP アドレスを持つ次のネットワークまたはインスタンスがサポートされています。