Google Cloud から クロスクラウド接続で OCI のデータベースに接続してみた

# はじめに

2024/6に Google と Oracle が提携し、Google CloudとOracle Cloud Infrastructure(以下 OCI)をクロスクラウド接続で直接接続できるようになりました。

- [クロスクラウド ネットワークの拡張: Google Cloud と Oracle Cloud Infrastructure のパートナーシップ](https://cloud.google.com/blog/ja/products/networking/cross-cloud-network-enables-an-oracle-multicloud)

東京リージョンでも接続が可能となっており、ちょうど OCI 上でBaseDBが稼働していたので接続させてみよう、という事になりました。

なお、Google CloudとOCIをクロスクラウド接続する箇所については以下を参考に実施しています。幾つか特徴が記載されてますが、**データ転送に費用はかかりません**。
~~また、ネットワークは多少遅延等が発生するので、設定した直後に繋がらない～、となっても焦らずコーヒーでも飲みましょう…~~

- [OCI 向け Partner Cross-Cloud Interconnect の概要](https://cloud.google.com/network-connectivity/docs/interconnect/concepts/partner-cci-for-oci-overview?hl=ja)

# Partner Cross-Cloud Interconnect を構成してみる

今回の構成は次図のシンプルな構成です。
クロスクラウド接続は冗長化を行わず、OCI上のOracle DatabaseはBaseDB(いわゆるPaaS)になります。
※基本的な事ですが、Google CloudのVPCとOCIのVCNの CIDR は別にしておく必要があります

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/3f030403-7444-1374-0070-665a04343731.png)


接続の流れは次のようになります。

1. (Google Cloud)Cloud Routerの作成
1. (Google Cloud)相互接続の作成
1. (OCI)Dynamic Routing Gateway(以下DRG)の作成
1. (OCI)FastConnectの作成
1. (Google Cloud)相互接続を有効化
1. (OCI)FastConnect接続確認

では、それぞれの作業を確認していきます。

#### 1. (Google Cloud)Cloud Routerの作成

「ネットワーク接続」の「Cloud Router」から、testnat という名前の Cloud Router を test-vpc へ作成します。Cloud Routerの作成は次のガイドを参考にしています。

- [VPC ネットワークをピア ネットワークに接続する Cloud Router を作成する](https://cloud.google.com/network-connectivity/docs/router/how-to/create-router-vpc-network?hl=ja)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/06893bcd-f82b-e414-69e9-4d025668cf58.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/978dab35-01b7-489e-6013-61180916be43.png)

#### 2. (Google Cloud)相互接続の作成

同じく「ネットワーク接続」から「相互接続」を選択し、「VLANアタッチメントの作成」を選択します。VLANアタッチメントの作成は次のガイドを参考にしています。

- [VLAN アタッチメントを作成する](https://cloud.google.com/network-connectivity/docs/interconnect/how-to/partner/creating-vlan-attachments?hl=ja)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/bde452f6-223d-04f2-d16c-8e2b3d5dbd82.png)

相互接続のタイプは「Partner Interconnect接続」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/212f5ede-b159-032a-a34b-262966916fa0.png)

今回は「暗号化なし」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/c1b99379-84d8-f505-14d7-835709da65b1.png)

「すでにサービスプロバイダを利用しています」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/93bec2a1-19fe-f7ea-f675-c58d6b51dc83.png)


「VLANアタッチメントの追加」の画面に映りますので、次のように設定します。
MTUはVPCのMTUと同じ値にする必要があります。また、OCI側のVCNのMTU(今回は 1500)とも合わせる必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/83b87c30-e447-4600-b96e-56e6d6428a9c.png)

ここで「単一のVLANを作成する（冗長性なし）」を選択すると次のような注意画面が出てきます。
![01-05-GCPVLAN-onlyone.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/0fb97326-9581-31fb-c7fe-ccfc1551166d.png)

最後に「VPCネットワークへの接続」が表示されますので、ペアリングキーを控えて作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/8df8d459-9182-4450-0992-e48f1d05750f.png)

次のように「VLANアタッチメント」が作成され、「有効化が必要です」というステータスになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/f500c760-4898-6078-7a78-9b83b9e6ab8c.png)

#### 3. (OCI)DRG作成

OCIの接続したいVCNから外部へのルーティングを行ってくれる動的ゲートウェイ(DRG)を作成します。
今回は testdrg という名前のDRGを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/d2c7d03b-3cb5-b437-391b-f24b8632cc3f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/27f1c8be-6488-82aa-664c-2864a2fb659f.png)

作成したDRG(testdrg)をVCN(testvpc)へアタッチします、アタッチメントの名称は testdrgatt としています。アタッチが完了すると次図のような状態になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/47ed32f0-5fb5-288c-2674-4009b08c6eae.png)

#### 4. (OCI)FastConnectの作成

DRGが作成できたら、FastConnectを作成します。
FastConnectはOCIから外部へ接続するための専用線になります。

「接続タイプ」は「FastConnectパートナ」を選択し、パートナは「Google Cloud:OCI Interconnect」を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/9c89dd4a-46e1-7d96-3a48-0101e0832a96.png)

「接続」は次図のように設定します。
パートナ・サービス・キーはGoogle Cloudの「ペアリングキー」になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/10e41411-90ca-1a6b-27ac-b956242a6301.png)

作成すると次図のようにFastConnectがプロビジョニングされます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/154c01c0-9770-5347-1b04-f472b3a43f75.png)


#### 5. (Google Cloud)相互接続を有効化

OCI側の接続設定も完了したため、Google Cloudの「相互接続」からパートナVLANアタッチメントを「有効化」します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/0a8317bc-4cb8-bc00-d8b8-384651b8062b.png)

しばらくするとステータスが「稼働中」になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/f3003491-1127-bfad-e77f-db5582a087f2.png)

ルートを確認すると、次図のようにOCI側が表示されていることが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/3327644c-63e7-0c82-9c9b-9c8f8f32f4a7.png)


#### 6. (OCI)接続確認

OCI側のFastConnectのBGP状態が「稼働中」となっていることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/0cbd3ad3-6c71-2448-42a3-438a48becfeb.png)

また、DRGのルート表の詳細から「すべてのルート・ルールの取得」を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/bfb7b9b0-d036-3a80-b399-8e8ff8a42663.png)

Google Cloud側のCIDRが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/1d455e6f-767b-2a0a-65b1-ef127914c28c.png)

# BaseDBへの接続

Google Cloud上のGCE(10.0.11.101)からOCI上のBaseDB(192.168.1.173)に接続してみます。次図のようなイメージです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2313926/1f0b80d8-28ac-be14-2dbb-ec61f184d9ad.png)

とりあえずSQL*PLUSでつないでみます。

```SQL
$ sqlplus sys/xxxxxxxx@192.168.1.173:1521/PDBTEST.testsub.testvpc.oraclevcn.com as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Wed Sep 11 11:29:00 2024
Version 19.20.0.0.0

Copyright (c) 1982, 2022, Oracle.  All rights reserved.


Connected to:
Oracle Database 23ai Standard Edition 2 Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.5.0.24.07

SQL> select banner_full from v$version;

BANNER_FULL
------------------------------------------------------------------------------------------------
Oracle Database 23ai Standard Edition 2 Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
Version 23.5.0.24.07
```
無事接続できました。

# まとめ

Google CloudとOCIのクロスクラウド接続は設定自体はとても簡単で30分程度で完了させることができます。Google Cloudから簡単にOracle Databaseなどを利用したいな、というときにもサクッと利用できるので、一つくらい設定しておくと良いかもしれません(ただしFastConnectはプロビジョニングしていると1Gbpsを月額フルで２～３万円くらいかかります)。

#### おまけ

Google CloudとOCIのクロスクラウド接続のレイテンシですが、pingで簡単に測ったレベルですと 20分のavgで **1.292msec** でした。AWSの東京リージョンにおけるAZ間のレイテンシも同じくらい[^1]ですので、パブクラ上のシステムとしては許容範囲といえるでしょう。

[^1]: [htAWSのAZ間レイテンシを測定してみた(2024年東京/大阪)](https://zenn.dev/tsumita7/articles/aws-mesuring-latency-among-az-2024)

```Shell
--- 192.168.1.173 ping statistics ---
1266 packets transmitted, 1266 received, 0% packet loss, time 1266838ms
rtt min/avg/max/mdev = 1.124/1.292/3.364/0.088 ms
```