デフォルトでは、Virtual Private Cloud (VPC) は相互に分離されています。CIDR ブロックが重複しない 2 つの VPC を接続するには、VPC ピアリング接続を作成し、両方の VPC のルートを設定します。これにより、2 つの VPC 内のリソースは、あたかも同じネットワーク内にいるかのように相互にアクセスできます。VPC ピアリング接続は、同一アカウントまたは異なるアカウント、同一リージョンまたは異なるリージョンの VPC 間で作成できます。
仕組み
VPC ピアリング接続のプロセスには、リクエスト元 VPC とリクエスト先 VPC が関与し、以下のステップで構成されます。
リクエスト元 VPC の所有者が VPC ピアリング接続を作成します。
リクエスト先 VPC が同一アカウント内にある場合、システムは自動的に接続リクエストを承諾し、接続を有効化します。
リクエスト先 VPC が別のアカウント内にある場合、その所有者はリクエストを承諾する必要があります。
各 VPC の所有者は、ピア VPC とも呼ばれる、もう一方の VPC の CIDR ブロックを指すルートを手動で追加します。
高帯域幅を低コストで必要とする複数の VPC を接続するには、VPC ピアリング接続と Cloud Enterprise Network (CEN) を組み合わせることができます。両者の違いについては、「VPC の接続」をご参照ください。
VPC ピアリング接続の作成
コンソール
前提条件:
2 つの VPC の CIDR ブロックが重複していないこと。重複している場合は、サービスを重複しない CIDR ブロックを持つ VPC に移行してください。
初めて VPC ピアリング接続を使用する場合、両方の VPC で Cloud Data Transfer (CDT) が有効になっていることを確認してください。
VPC ピアリング接続の作成:
VPC - VPC ピアリング接続ページに移動します。トップナビゲーションバーで、VPC があるリージョンを選択し、[VPC ピアリング接続の作成] をクリックします。
リクエスト先のアカウントタイプとリージョンタイプを選択します。
リクエスト先アカウントタイプ:
[同一アカウント]:リクエストを自動的に承諾し、接続を有効化します。[ピア VPC CIDR へのルートを追加] をクリックすると、システムがピア VPC を指すルートを設定します。
[クロスアカウント]:リクエスト先アカウントの所有者は、VPC コンソール - VPC ピアリング接続ページに移動する必要があります。トップナビゲーションバーで、リクエスト先 VPC があるリージョンを選択します。ピアリング接続を見つけ、[アクション] 列の [承諾] をクリックします。
リクエスト先は、接続リクエストを [拒否] または [削除] することもできます。プロセスの詳細については、「VPC ピアリング接続のライフサイクル」をご参照ください。
[リージョン間] 接続の場合、[リンクタイプ] と [リクエスト先リージョン] を設定する必要があります。
Platinum と Gold は、異なるレベルのデータ転送品質を提供し、課金価格も異なります。
Platinum (99.995% のサービス可用性):証券取引、オンライン音声通話、ビデオ会議、リアルタイムゲームなど、ジッターや遅延に敏感で高い接続品質を必要とするサービスに推奨されます。
Gold (99.95% のサービス可用性):データ同期やファイル転送など、接続品質に敏感でないサービスに推奨されます。
ルートの設定:
IPv6 での通信を有効にするには、ピア VPC の IPv6 CIDR ブロックを指すルートも設定する必要があります。
リクエスト元 VPC から:[リクエスト元 VPC] 列で、[ルートを設定] をクリックします。vSwitch に関連付けられているリクエスト元ルートテーブルを選択し、[宛先 CIDR ブロック] をリクエスト先 VPC の CIDR ブロックに設定します。
リクエスト先 VPC から:[リクエスト先] 列で、[ルートを設定] をクリックします。vSwitch に関連付けられている [リクエスト元ルートテーブル] を選択します。[宛先 CIDR ブロック] をリクエスト元 VPC の CIDR に設定します。
接続性の検証:
到達可能性アナライザー:実際のデータパケットは送信されず、サービスに影響はありません。
ピアリング接続の [診断] 列で、 を選択します。または、ピアリング接続のインスタンス ID をクリックして [到達可能性アナライザー] タブに移動することもできます。
送信元と宛先を設定します。ビジネスシナリオをシミュレートするためにプロトコルとポートを指定し、接続性を確認します。
システムはルート、セキュリティグループ、ネットワーク ACL の設定をチェックし、診断結果を提供します。
片方向のパスが到達可能な場合、[逆方向パス解析] をクリックして逆方向の接続性を確認します。
手動検証:リクエスト元 VPC 内の ECS インスタンスで、
ping <private IP of the peer ECS instance>コマンドを実行します。
リージョン間ピアリング接続を作成した後、インスタンス ID をクリックし、[編集] をクリックして、[帯域幅 (Mbit/s)] と [リンクタイプ] を変更します。
リクエスト元とリクエスト先の両方の VPC がピアリング接続を削除できます。接続が削除されると、プライベートアクセスは中断されます。この操作は元に戻せません。削除によってサービスが中断されないことを確認してください。
API
ピアリング接続の作成
CreateVpcPeerConnection を呼び出して、VPC ピアリング接続を作成します。
2 つの VPC が異なるアカウントに属している場合、リクエスト先アカウントの所有者は AcceptVpcPeerConnection を呼び出して VPC ピアリング接続を承諾する必要があります。
リクエスト先は RejectVpcPeerConnection を呼び出して VPC ピアリング接続を拒否できます。
両方の VPC の所有者は GetVpcPeerConnectionAttribute を呼び出して、2 つの VPC の CIDR ブロックをクエリする必要があります。
両方の VPC の所有者は CreateRouteEntry を呼び出して、ピアリング接続を指すルートを作成する必要があります。
リージョン間ピアリング接続の変更
ModifyVpcPeerConnection を呼び出して、リージョン間 VPC ピアリング接続の帯域幅またはリンクタイプを変更します。
ピアリング接続の削除
DeleteRouteEntry を呼び出して、ピアリング接続を指すルートを削除します。
DeleteVpcPeerConnection を呼び出して、VPC ピアリング接続を削除します。
パス解析
パス解析を使用して接続性を確認するには、以下の API 操作を順番に呼び出します。
Terraform
同一アカウントのピアリング接続
リソース:alicloud_vpc_peer_connection、alicloud_route_entry
データソース:alicloud_account
# VPC が属するアカウント
data "alicloud_account" "default" {}
provider "alicloud" {
alias = "local"
region = "cn-hangzhou" # リクエスト元 VPC があるリージョン
}
provider "alicloud" {
alias = "accepting"
region = "cn-beijing" # リクエスト先 VPC のリージョン。リクエスト元 VPC のリージョンと同じでもかまいません。リクエスト先 VPC のリージョンに基づいてこのパラメーターを設定します。
}
# リクエスト元 VPC ID
variable "local_vpc_id" {
default = "vpc-bp1c******"
}
# リクエスト先 VPC ID
variable "accepting_vpc_id" {
default = "vpc-2zev******"
}
# VPC ピアリング接続の作成
resource "alicloud_vpc_peer_connection" "example_peer_connection" {
provider = alicloud.local
peer_connection_name = "example_peer_connection_name"
vpc_id = var.local_vpc_id # リクエスト元 VPC ID
accepting_ali_uid = data.alicloud_account.default.id # リクエスト先アカウント ID
accepting_region_id = "cn-beijing" # リクエスト先 VPC があるリージョン
accepting_vpc_id = var.accepting_vpc_id # リクエスト先 VPC ID
bandwidth = 1024 # 帯域幅 (Mbit/s)。リクエスト元リージョンとリクエスト先リージョンが異なる場合にのみ設定できます。
link_type = "Gold" # リンクタイプ。リクエスト元リージョンとリクエスト先リージョンが異なる場合にのみ設定できます。
}
# リクエスト元 VPC のルートを設定
resource "alicloud_route_entry" "example_local_route" {
provider = alicloud.local
route_table_id = "vtb-bp1a******" # リクエスト元インスタンスがある vSwitch にバインドされたルートテーブル
destination_cidrblock = "172.16.0.0/12" # リクエスト先 VPC の CIDR ブロック
nexthop_type = "VpcPeer" # ネクストホップは VPC ピアリング接続
nexthop_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
# リクエスト先 VPC のルートを設定
resource "alicloud_route_entry" "example_acceptor_route" {
provider = alicloud.accepting
route_table_id = "vtb-2ze1******" # リクエスト先インスタンスがある vSwitch にバインドされたルートテーブル
destination_cidrblock = "10.0.0.0/8" # リクエスト元 VPC の CIDR ブロック
nexthop_type = "VpcPeer" # ネクストホップは VPC ピアリング接続
nexthop_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
クロスアカウントのピアリング接続
リソース:alicloud_vpc_peer_connection、alicloud_vpc_peer_connection_accepter、alicloud_route_entry
provider "alicloud" {
alias = "local"
region = "cn-hangzhou" # リクエスト元 VPC のリージョン
}
# リクエスト先 VPC のリージョン。リクエスト元 VPC のリージョンと同じでもかまいません。リクエスト先 VPC のリージョンに基づいて設定する必要があります。
variable "accepting_region" {
default = "cn-beijing"
}
# リクエスト先アカウント
variable "accepting_uid" {
default = "1234******"
}
# リクエスト先アカウントの AccessKey ID
variable "access_key_id" {
description = "インフラストラクチャを操作するための AccessKey ID"
}
# リクエスト先アカウントの AccessKey Secret
variable "access_key_secret" {
description = "インフラストラクチャを操作するための AccessKey Secret"
}
provider "alicloud" {
alias = "acceptor"
region = var.accepting_region
access_key = var.access_key_id
secret_key = var.access_key_secret
}
# リクエスト元 VPC ID
variable "local_vpc_id" {
default = "vpc-2ze0******"
}
# リクエスト先 VPC ID
variable "accepting_vpc_id" {
default = "vpc-wz9e******"
}
# VPC ピアリング接続の作成
resource "alicloud_vpc_peer_connection" "example_peer_connection" {
provider = alicloud.local
peer_connection_name = "example_peer_connection_name"
vpc_id = var.local_vpc_id # リクエスト元 VPC ID
accepting_ali_uid = var.accepting_uid # リクエスト先アカウント ID
accepting_region_id = var.accepting_region # リクエスト先リージョン
accepting_vpc_id = var.accepting_vpc_id # リクエスト先 VPC ID
bandwidth = 1024 # 帯域幅 (Mbit/s)。リクエスト元リージョンとリクエスト先リージョンが異なる場合にのみ設定できます。
link_type = "Gold" # リンクタイプ。リクエスト元リージョンとリクエスト先リージョンが異なる場合にのみ設定できます。
}
# リクエスト先がピアリング接続リクエストを承諾
resource "alicloud_vpc_peer_connection_accepter" "example_peer_connection_accepter" {
provider = alicloud.acceptor
instance_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
# リクエスト元 VPC のルートを設定
resource "alicloud_route_entry" "example_local_route" {
provider = alicloud.local
route_table_id = "vtb-2zel******" # リクエスト元インスタンスがある vSwitch にバインドされたルートテーブル
destination_cidrblock = "192.168.0.0/24" # リクエスト先 VPC の CIDR ブロック
nexthop_type = "VpcPeer" # ネクストホップは VPC ピアリング接続
nexthop_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
# リクエスト先 VPC のルートを設定
resource "alicloud_route_entry" "example_acceptor_route" {
provider = alicloud.acceptor
route_table_id = "vtb-wz95******" # リクエスト先インスタンスがある vSwitch にバインドされたルートテーブル
destination_cidrblock = "172.16.0.0/12" # リクエスト元 VPC の CIDR ブロック
nexthop_type = "VpcPeer" # ネクストホップは VPC ピアリング接続
nexthop_id = alicloud_vpc_peer_connection.example_peer_connection.id
}
トラブルシューティング
まず、パス解析を利用してネットワーク接続を確認してください。
チェック項目 | チェック内容 | 解決策 |
接続ステータス | ピアリング接続の[ステータス]は[有効化済み]です。 | ステータスが [承諾待ち] の場合、リクエスト先アカウントの所有者が接続リクエストを承諾する必要があります。 |
CIDR ブロック | リクエスト元とリクエスト先の CIDR ブロックを確認します:
|
|
ルート | ピアリング接続詳細ページの [ルートエントリリスト] を確認します:
| ルート設定を変更します。 |
アクセスルール |
| セキュリティグループ、ネットワーク ACL、および RDS インスタンスが、ピア IP アドレスからのすべてのトラフィックをホワイトリストに登録していることを確認してください。 |
使用例
3 つの VPC の接続
VPC ピアリング接続のルートを設定する場合:
すべてのインスタンスが相互にアクセスできるように、宛先 CIDR をピア VPC の CIDR に設定します。
セキュリティを強化するために、より具体的なルートを設定し、宛先 CIDR をピア VPC 内の vSwitch CIDR または特定のインスタンスの IP アドレスに設定します。ただし、新しいインスタンスが通信を必要とする場合は、ルートテーブルを手動で更新する必要があります。
例えば、VPC1 には VPC2 の vSwitch 3 の CIDR と VPC3 の ECS04 を指すルートが設定されています。VPC1 内のリソースは、プライベート IP アドレスを介して vSwitch 3 と ECS04 内のリソースとのみ通信できます。VPC2 と VPC3 には、ピア VPC の CIDR を指すルートが設定されており、リソース間の完全な通信が可能です。
複数の VPC を中央 VPC に接続
ブランチ VPC は中央 VPC のサービスにアクセスできますが、ブランチ VPC 同士は接続されません。ユースケースには以下が含まれます:
部門の分離:相互に分離された部門 VPC が中央 VPC にアクセスする必要があります。
ユーザーの分離:中央 VPC のサービスはユーザー VPC からアクセスされます。各ユーザー VPC は中央 VPC と通信しますが、相互に分離されています。
モニタリングと O&M
帯域幅やパケット損失率などのモニタリングデータは、リージョン間ピアリング接続で利用できます。CloudMonitor を使用してしきい値ベースのアラートルールを作成し、接続状態をリアルタイムで監視します。ネットワークの輻輳やエラーを迅速に検出し、解決します。
同一リージョン内のピアリング接続のメトリックは表示できません。
コンソール
ピアリング接続のモニタリング
VPC - VPC ピアリング接続ページに移動します。トップナビゲーションバーで、VPC があるリージョンを選択します。
対象のリージョン間 VPC ピアリング接続の [モニタリング] 列にある
アイコンをクリックして、帯域幅やパケット損失などのメトリックを表示します。
CloudMonitor アラート
CloudMonitor - アラートルールページに移動し、+ アラートルールの作成 をクリックします。
各アラートレベルのしきい値を設定します。メトリックがしきい値に達すると、指定された [アラートグループ] にアラート通知が送信されます。アラートルールの [アクション] 列の [アラート履歴] をクリックして、アラートのタイムラインを表示します。
アラートルールの [アクション] 列で、ルールを [変更]、[無効化]、または [削除] できます。
API
PutResourceMetricRules を呼び出して、VPC ピアリング接続の指定されたメトリックに対して複数のしきい値ベースのアラートルールを設定します。詳細については、「ピアリング接続の CloudMonitor メトリック」をご参照ください。
EnableMetricRules を呼び出して、1 つ以上のアラートルールを有効にします。
DisableMetricRules を呼び出して、アラートルールを無効にします。
DeleteMetricRules を呼び出して、1 つ以上のアラートルールを削除します。
Terraform
しきい値ベースのアラートルールを設定します。詳細については、「ピアリング接続の CloudMonitor メトリック」をご参照ください。
リソース:alicloud_cms_alarm_contact、alicloud_cms_alarm_contact_group、alicloud_cms_alarm
# モニタリング対象のピアリング接続インスタンスの ID
variable "vpc_peer_id" {
default = "pcc-28cv******"
}
# アラート連絡先の作成
resource "alicloud_cms_alarm_contact" "example_cms_alarm_contact" {
alarm_contact_name = "example_cms_alarm_contact_name"
describe = "example_vpc_peer_alarm"
channels_mail = "xxx@xxx.com" # ご利用のメールアドレスに変更してください。
lifecycle {
ignore_changes = [channels_mail]
}
}
# アラートグループの作成
resource "alicloud_cms_alarm_contact_group" "example_cms_alarm_contact_group" {
alarm_contact_group_name = "example_cms_alarm_contact_group"
contacts = [alicloud_cms_alarm_contact.example_cms_alarm_contact.id] # アラート連絡先
}
# アラートルールの作成
resource "alicloud_cms_alarm" "example_cms_alarm" {
name = "example_cms_alarm_name"
project = "acs_vpcpeer" # クラウドサービスの名前空間
metric = "IntranetRX" # メトリック名
period = 60 # 統計期間
contact_groups = [alicloud_cms_alarm_contact_group.example_cms_alarm_contact_group.alarm_contact_group_name]
effective_interval = "06:00-20:00" # 有効期間
metric_dimensions = <<EOF
[
{
"instanceId": "${var.vpc_peer_id}"
}
]
EOF
escalations_critical { # 重大レベルのアラート
statistics = "Sum" # アラートの統計メソッド
comparison_operator = ">=" # しきい値の比較演算子
threshold = 104857600 # しきい値
times = 2 # アラートのリトライ回数
}
}よくある質問
クロスボーダーピアリング接続はサポートされていますか?
はい。VPC ピアリング接続は、以下のシナリオをサポートしています:
非クロスボーダー:中国本土内の 2 つのリージョン、または中国本土以外の 2 つのリージョンを接続します。
クロスボーダー:中国本土のリージョンと中国本土以外のリージョンを接続します。ご利用のアカウントが事業者本人確認を完了していることを確認してください。
ピアリング接続を作成する際に、リクエスト先 VPC を選択できないのはなぜですか?
正しいリージョンとアカウントを選択していることを確認してください。
ページ上部に表示されるリージョンはリクエスト元リージョンであり、ログインしているアカウントはリクエスト元アカウントです。ピアリング接続を作成する際に、正しいリクエスト先アカウントとリージョンを選択していることを確認してください。
Docker がインストールされた ECS インスタンスが、ピアリング接続を設定した後に失敗するのはなぜですか?
ルートとセキュリティグループルールが正しく設定されている場合、問題は通常、Docker ネットワークインターフェースカードのアドレスと宛先 CIDR の競合によって引き起こされます。ip addr コマンドを実行して競合を確認してください。
競合がある場合は、Docker の CIDR を変更して、宛先 CIDR と競合しないようにします。以下の手順に従ってください:
Docker の停止または CIDR の変更はサービスを中断させます。これらの操作はオフピーク時に実行してください。
Docker の CIDR を変更する際は、既存のすべてのコンテナーとアプリケーションのネットワーク設定と互換性があることを確認してください。
sudo systemctl stop dockerを実行して Docker サービスを停止します。sudo vim /etc/docker/daemon.jsonを実行して Docker 設定ファイルを編集し、保存します。ファイルの内容は次のとおりです:Docker 設定ファイルは通常
/etc/docker/daemon.jsonまたは/etc/docker/daemon.confです。具体的なファイル名は異なる場合があります。{ "bip":"新しい Docker CIDR ブロック" }sudo systemctl start dockerを実行して Docker サービスを開始し、変更を確認します。
詳細情報
制限事項
一方の VPC が Alibaba Cloud 中国サイト (www.aliyun.com) のアカウントに属し、もう一方が Alibaba Cloud 国際サイト (www.alibabacloud.com) に属している場合、VPC ピアリング接続は作成できません。
VPC ピアリング接続はルート伝播をサポートしていません。
例えば、VPC 2 と VPC 3 が両方ともピアリング接続を使用して VPC 1 に接続されている場合、VPC 2 と VPC 3 は直接接続されません。
共有 VPC では、リソース所有者はピアリング接続を作成、変更、または削除できますが、プリンシパルにはこれらの権限はありません。
課金
同一リージョン内の VPC ピアリング接続は、2 つの VPC が同一アカウントに属しているか異なるアカウントに属しているかに関わらず、料金は発生しません。
リージョン間の VPC ピアリング接続の場合、Cloud Data Transfer (CDT) はアウトバウンドトラフィックに対してデータ転送料金を請求します。
単価はリージョンとリンクタイプによって異なります。
課金サイクルは 1 時間ごとです。1 サイクル内でリンクタイプを切り替えた場合、その 1 時間全体に対して上位のサービスティアのレートで課金されます。
VPC1 と VPC2 の間に、異なるリージョンの異なるアカウントに属する VPC ピアリング接続が作成されます。VPC1 からのアウトバウンドトラフィックが 200 GB、VPC2 からが 100 GB と仮定します。リンクタイプは Gold です。中国 (フフホト) から 中国 (広州) へのリージョン間データ転送料金は 0.072 USD/GB です。2 つのアカウントの料金は次のとおりです:
アカウント A:0.072 USD/GB × 200 GB = 14.4 USD
アカウント B:0.072 USD/GB × 100 GB = 7.2 USD
VPC ピアリング接続のライフサイクル
接続リクエストが送信された後、VPC ピアリング接続は以下の段階を経ます:
同一アカウントの接続の場合、システムは自動的にリクエストを開始・承諾し、接続を有効化します。
ステータスの説明
サポートされているリージョン
エリア | リージョン |
アジア太平洋 - 中国 | 中国 (杭州)、 中国 (上海)、 中国 (南京-ローカルリージョン、提供終了)、 中国 (青島)、 中国 (北京)、 中国 (張家口)、 中国 (フフホト)、 中国 (ウランチャブ)、 中国 (深セン)、 中国 (河源)、 中国 (広州)、 中国 (成都)、 中国 (香港)、 中国 (武漢 - ローカルリージョン)、および 中国 (福州-ローカルリージョン、提供終了) |
アジア太平洋 - その他 | 日本 (東京)、 韓国 (ソウル)、 シンガポール、 マレーシア (クアラルンプール)、 インドネシア (ジャカルタ)、 フィリピン (マニラ)、および タイ (バンコク) |
ヨーロッパ & アメリカ | ドイツ (フランクフルト)、 イギリス (ロンドン)、 米国 (シリコンバレー)、および 米国 (バージニア) |
中東 | UAE (ドバイ) および サウジアラビア (リヤド - パートナー運営) |
クォータ
クォータ名 | 説明 | デフォルトクォータ | クォータの引き上げ |
vpc_quota_cross_region_peer_num_per_vpc | 単一の VPC が持つことができるリージョン間 VPC ピアリング接続の数。 | 20 | |
vpc_quota_intra_region_peer_num_per_vpc | 単一の VPC が持つことができる同一リージョン内 VPC ピアリング接続の数。 | 10 | |
vpc_quota_peer_num | 単一の Alibaba Cloud アカウントが 1 つのリージョンで作成できる VPC ピアリング接続の数。 | 20 | |
vpc_quota_peer_cross_border_bandwidth | 最大のクロスボーダー帯域幅。 | 1,024 Mbps | |
vpc_quota_peer_cross_region_bandwidth | 最大のリージョン間帯域幅。 | 1,024 Mbps |