OCI_無料のLBを2つのリージョンで使いまわしたいのでVCNつなぐ

何をやりたいかというと

OCIはLB(L7ロードバランサー)が1インスタンス無料らしい。さらに、そこにアタッチするWAFポリシーも1インスタンス無料らしい。この無料WAFを使って2つのリージョンにあるComputeに処理を流したい。ただ、LBはリージョナルオブジェクトなので各リージョン内に存在していて通常は自リージョン内にしか処理をさばけない。そこでリージョン間をネットワーク接続して処理を無理やり流す。
処理効率的にこれをやる意味はないのだけど、WAFのIPブロック機能を使いたいのでやってみる。

https://www.oracle.com/cloud/price-list/
image-197.png

Dynamic Routing Gatway(DRG)を各Region毎に作成し、それぞれのVCNをアタッチ

  • Tokyo側
    Networking > Customer connectivity > Dynamic routing gateways > Create dynamic routing gateway

    • NAME: DRG_NW_Blogs
    • Compartment: Blogs

    (NAME: DRG_NW_Blogs) > Attachments タブ > Create VCN attachment

    • NAME: VCN_attachment_NW_Blogs
    • VCN: NW_Blogs
    • DRG route table(VCN→DRG) : Autogenerated Drg Route Table for VCN attachments
      ※トランジットルーティングのハブ構成を作りたいとかじゃなければ↑のデフォルトで良いっぽい。
    • VCN route table(DRG→VCN): None
      ※トランジットルーティング(ハブ&スポーク)構成で、DRG から VCN 内のどのサブネットへ転送させるか細かく制御する用途。通常モードならNoneでVCNのDefaultのRute表が使われる。
    • VCN route type: Subnet CIDR blocks

今回はCIDRもかぶってない2つのリージョンをつなぐだけなのでルーティングとか気にしないシンプルな構成で。

参考:トランジットルーティング(ハブ&スポーク)
image-96.png

  • Ashburn側
    Networking > Customer connectivity > Dynamic routing gateways > Create dynamic routing gateway

    • NAME: DRG_NW_Blogs_Ash
    • Compartment: Blogs

    (NAME: DRG_NW_Blogs_Ash) > Attachments タブ > Create VCN attachment

    • NAME: VCN_attachment_NW_Blogs_Ash
    • VNC: NW_Blogs_Ash
    • DRG route table(VCN→DRG) : Autogenerated Drg Route Table for VCN attachments
      • トランジットルーティングのハブ構成を作りたいとかじゃなければ↑のデフォルトで良いっぽい。
    • VCN route table(DRG→VCN): None
      • トランジットルーティング(ハブ&スポーク)構成で、DRG から VCN 内のどのサブネットへ転送させるか細かく制御する用途。通常モードならNoneでVCNのDefaultのRute表が使われる。
    • VCN route type: Subnet CIDR blocks

Remote Peering connectionを作成して接続

どっちから先でもいい。それぞれ作成して、どちらか一方から他方に接続を確立させる。

  • Ashburn側
    (DRG_NW_Blogs_Ash) > Attachments タブ > Remote peering connection attachments > Create remote peering connection

    • NAME: RPC_NW_Blogs_Ash
    • Compartment: Blogs

    →DRG Attachment for RPC: RPC_NW_Blogs_Ashというのが勝手にできて、Remote Peering conneciton「RPC_NW_Blogs_Ash」がアタッチされてる。
    →(RPC_NW_Blogs) の詳細画面に入り、OCIDをコピーしておく。

  • Tokyo側
    (DRG_NW_Blogs) > Attachments タブ > Remote peering connection attachments > Create remote peering connection

    • NAME: RPC_NW_Blogs
    • Compartment: Blogs

    (RPC_NW_Blogs) >Establish connection

    • us-ashburn-1
    • Ashburn側のRPCのociを張り付ける

Peer staus がPeeredになったらOKっぽい。
image-97.png

今回やらないけどTenanyまたがりとかできるらしい
image-98.png

Network Visualizerでも表示された
image-99.png

各VCNのルーティングテーブルの設定がいる

このままじゃ、まだつながらない。なぜなら各VCNのルート表に対向IPセグのルーティングがないから。対向IPセグのCIDRアドレスをそれぞれのDRGに向けなきゃいけない。

  • Tokyo側
    Networking> Virtual Cloud Networks > (NW_Blogs) > Routing タブ > (default route table for NW_Blogs) > Route Rules > Add Route Rules
    • Target Type: Dynamic Routing Gateway
    • Destination Type: CIDR Block
    • Destination CIDR Block: 10.201.0.0/24 (AshburnのPablic Subnet Segment)
    • Target Dynamic Routing Gateway: DGR_NW_Blogs

※Target TypeがPrivate Ipの時のみVNICのSkip Source/Destination Checkを有効化しろという警告が出る(Target に指定されたIPを持つインスタンスがそのパケットを自分宛じゃないという理由で破棄してしまうため)。ここでは関係ない。

image-100.png

  • Ashburn側
    Networking> Virtual Cloud Networks > (NW_Blogs_Ash) > Routing タブ > (default route table for NW_Blogs_Ash) > Route Rules > Add Route Rules
    • Target Type: Dynamic Routing Gateway
    • Destination Type: CIDR Block
    • Destination CIDR Block: 10.200.0.0/24 (TokyoのPablic Subnet Segment)
    • Target Dynamic Routing Gateway: DGR_NW_Blogs_Ash

取りえずこれでつながった

  • 鍵無いのでエラーになったが一応ネットワーク的疎通はできている。
ubuntu@instance-blogs-ash:~$ ssh 10.200.0.232
The authenticity of host '10.200.0.232 (10.200.0.232)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.200.0.232' (ED25519) to the list of known hosts.
ubuntu@10.200.0.232: Permission denied (publickey).
ubuntu@instance-blogs-ash:~$

総括

やってみて何となくわかった。
DRGが各Regionのエッジルーター的な役割ね。
→ローカルのVCNを直接アタッチする
→RPC(外部ネットワークの接続口)を作成してDRGにアタッチする
→各リージョンのRPCをピアリングさせる。
って流れ

たしか昔はもっとルーターオブジェクトいくつかあってそれ毎に出来ること違ったんだけど、機能統合されてシンプルになったって感じよね。たしか。今Local Peering Gatewayってあんのかな?