Aiven と Google Cloud をピアリングしてデータベースにアクセスする
ウィスキー、シガー、パイプをこよなく愛する大栗です。
最近 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管理にお困りの場合はご利用してみてください。