
Aiven と Google Cloud をピアリングしてデータベースにアクセスする
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ウィスキー、シガー、パイプをこよなく愛する大栗です。
最近 Database as a Service の Aiven を触っています。今日は Aiven を Google Cloud 上に作成して自分の VPC とピアリングします。
Aiven のネットワーク設定
Aiven は特に意識せずにサービスを作成すると各クラウドプラットフォームの上でインターネットから直接アクセスするためにパブリックIPが付与され、インターネットを経由してアクセスします。しかしインターネット経由では(アクセス元IPの設定が可能ですが)セキュリティに問題があったり、パブリッククラウドの各種サービスと連携を行いにくくなります。
そこで Aiven の VPC 機能を使用します。Aiven の VPC の中にサービスを作成して、クラウドプラットフォームの VPC と接続して DB にアクセスをして見ます。Google Cloud と接続する場合は以下のような形になります。

やってみる
以下の手順でサービスを構築します。
- Aiven の VPC を作成する
- Aiven 側のピアリングを作成する
- Google Cloud 側のピアリングを作成する
- Aiven サービスを作成する
- サービスにアクセスしてみる
1. Aiven の VPC を作成する
まずは Aiven 側の VPC を作成します。
メニューから VPC に入り、対象のクラウド(ここでは Google Cloud)と IP のレンジを決めます。ここでは東京リージョンに置くので Cloud で Google Cloud Platform の asia-northeast1 を選択します。IP range は 10.1.1.0/24 としました。使用している Google Cloud の VPC と衝突しない CIDR を設定しましょう。

このように Aiven の VPC が作成されます

2. Aiven 側のピアリングを作成する
作成した Aiven の VPC (ここでは google-asia-northeast1) を選択します。
GCP Project ID に Google Cloud のプロジェクト ID を入力して、 GCP VPC network name に VPC 名を入力します。そして Add peering connection をクリックします。

State 欄の Pending peer をクリックして情報を確認します。GCP project と VPC network name が2個ずつ表示されています。1個目が直前に入力した自分の Google Cloud のプロジェクト ID と VPC 名で、2個目が Aiven 側のプロジェクト名と VPC 名なのでメモしておきます。

3. Google Cloud 側のピアリングを作成する
Google Cloud の Cloud Console で [VPC ネットワーク]-[VPC ネットワーク ピアリング] を開きます。ピアリング接続の作成 をクリックします。

名前は任意に入力します。ピアリングした VPC ネットワーク で 別のプロジェクト を選択します。プロジェクト ID と VPC ネットワークの名前 は先程メモした Aiven の State の情報を入力します。

Google Cloud 側のピアリング設定ができました。必要に応じてルーティングやファイアウォールの設定を行いましょう。

4. Aiven サービスを作成する
ネットワーク設定が終わったので、いよいよ Aiven のサービスを作成します。
Aiven のコンソールで Service を開き、Create a new service をクリックします。

ここでは PostgreSQL を選択します。現時点のデフォルトのバージョンは 13 になっています。

クラウドプロバイダーで Google Cloud を選択します。リージョンを選択しますが注意してください。配置するリージョンを選択せずに VPC から 作成した VPC を選択してください。

サービスのプランを選択します。ここでは Startup で一番小さい Startup-4 を選択しました。本番用途など高い可用性が必要な場合は、Business や Premium のプランを選択しましょう。

ディスクは標準で 80 GB 設定されているため追加しません。必要に応じて増やしましょう。判別しやすいようにサービスの名前を設定しましょう。そして Create Service をクリックして、サービスを作成します。

しばらくすると Running になります。

5. サービスにアクセスしてみる
Compute Engine を起動して、Google Cloud から Aiven のサービスにアクセスしてみます。
Google Cloud の Cloud Console で [Compute Engine]-[VM インスタンス] を開きます。ここで インスタンスを作成 をクリックします。

普通に Compute Engine を作成していきます。OS は CentOS 7 にしました。ここではリージョンを台湾にしています。Google Cloud の VPC はグローバルリソースなので Aiven とは異なるリージョンからでも問題なく接続できます。

ネットワーク インターフェースの設定でピアリングしている VPC とサブネットを設定します。

設定が終わったら 作成 をクリックします。

GCE インスタンスが起動したら SSH で接続します。

まずは PostgreSQL クライアントをインストールします。
$ sudo yum install postgresql.x86_64 -y
Aiven のサービスの詳細を確認します。この情報を元に DB へアクセスします。

Aiven の PostgreSQL にアクセスします。
$ psql -h pg-gcp-1-xxxxxx.aivencloud.com -p 21374 -U avnadmin -d defaultdb
Password for user avnadmin: # Password の内容を入力
psql (9.2.24, server 13.5)
WARNING: psql version 9.2, server version 13.0.
Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.
defaultdb=>
クライアントの IP アドレスとサーバーの IP アドレスを確認してみます。プライベート IP でアクセスしています。
defaultdb=> select inet_client_addr(); inet_client_addr ------------------ 10.140.0.2 (1 row) defaultdb=> select inet_server_addr(); inet_server_addr ------------------ 10.1.1.2 (1 row) defaultdb=> \q
このように Google Cloud からピアリング経由で Aiven のデータベースにアクセスできました。
さいごに
Aiven はクラウドプラットフォームに依存せずにマネージドデータベースを構築できるサービスです。Google Cloud や他のメガクラウドでも利用できるため、マルチクラウドの環境を運用していてクラウド間のDB管理にお困りの場合はご利用してみてください。








