Aiven と AWS をピアリングしてデータベースにアクセスする

マルチクラウドの DBaaS の Aiven を AWS とピアリング接続して利用してみます

ウィスキー、シガー、パイプをこよなく愛する大栗です。

最近マルチクラウドな DBaaS の Aiven を触っています。今日は Aiven を AWS 上にデプロイして自分の VPC とピアリングします。

ちなみに Aiven と Google Cloud とピアリングするには昨日書いた以下の記事を参照してください。

ネットワークの構成

Aiven と AWS をピアリングするれば、インターネットを経由せずに直接通信することができます。Aiven の VPC を AWS に作成して、自分の VPC とピアリングします。

Peering Aiven and AWS

やってみる

以下の手順でサービスを構築します。

  1. Aiven の VPC を作成する
  2. Aiven 側のピアリングを作成する
  3. AWS 側のピアリングを作成する
  4. Aiven サービスを作成する
  5. サービスにアクセスしてみる

1. Aiven の VPC を作成する

まずは Aiven 側の VPC を作成します。

メニューから VPC に入り、対象のクラウド(ここでは AWS)と IP のレンジを決めます。ここでは東京リージョンに置くので CloudAmazon Web Servicesap-northeast-1 を選択します。Aiven 側で使用する IP range は 10.0.1.0/24 としました。使用している AWS の VPC と衝突しない CIDR を設定しましょう。

Aiven VPC for AWS

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

Aiven VPC

2. Aiven 側のピアリングを作成する

作成した Aiven の VPC (ここでは aws-ap-northeast-1) を選択します。

AWS Account ID に AWS のアカウント ID を入力して、 AWS VPC ID に VPC ID を入力します。そして 対象の VPC のリージョンも設定しましょう。そして、Add peering connection をクリックします。ちなみに Transit Gateway とつなげることも可能です。

VPC peering connections

少しするとピアリングの State が Pending peer になります。カーソルを当てると、ピアリングのリクエストの受け入れ要求とルーティングの設定について記載されています。ピアリングの要求元のアカウント ID と VPC ID を覚えておいてください。

Pending peer

3. AWS 側のピアリングを作成する

次に AWS 側のピアリングの設定を行います。

AWS のマネージメントコンソールで、VPC の ピアリング接続 を開きます。Aiven とのピアリングをアカウント ID と VPC ID で確認します。ピアリングを選択して アクション から リクエストの承諾 をクリックします。

Peering Request

リクエスタとアクセプタの内容を確認して リクエストを許諾 をクリックします。

Accept Request

ピアリングがアクティブになります。

Peering Status

次に Aiven とのピアリングへのルーティングの設定を行います。左のメニューから ルートテーブル を選択します。ピアリングしている VPC のルートテーブルを選択して下のタブの ルート を選択して ルートを編集 をクリックします。

Route Table

まず ルートを追加 をクリックして行を増やします。Aiven 側の VPC の CIDR を 送信先 に入力して、ターゲット に先程のピアリングを設定して 変更を保存 をクリックします。

Edit Route

これでネットワーク関連の設定が終わりました。

4. Aiven サービスを作成する

ネットワーク設定が終わったので、いよいよ Aiven のサービスを作成します。

Aiven のコンソールで Service を開き、Create a new service をクリックします。

Aiven Create Service

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

PostgreSQL

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

Select Cloud

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

Service Plan

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

Current services

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

Current services

5. サービスにアクセスしてみる

EC2 から AWS から Aiven のサービスにアクセスしてみます。ピアリングしている VPC に EC2 を起動してログインしましょう。ここでは Amazon Linux 2 を想定します。

まずは PostgreSQL クライアントをインストールします。

$ sudo yum install postgresql -y

Aiven のサービスの詳細を確認します。この情報を元に DB へアクセスします。

Connection information

Aiven の PostgreSQL にアクセスします。

$ psql -h pg-xxxxxx-xxxxxx.aivencloud.com -p 21374 -U avnadmin -d defaultdb
Password for user avnadmin:
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.0.2.60
(1 row)

defaultdb=> select inet_server_addr();
 inet_server_addr
------------------
 10.0.1.22
(1 row)

defaultdb=> \q

このように AWS からピアリング経由で Aiven のデータベースにアクセスできました。

さいごに

Aiven はマルチクラウド環境で利用できる DBaaS です。前回は Google Cloud へデプロイしましたが、今回のように AWS へデプロイする場合も同じ手順で Aiven を利用できます。マルチクラウド環境や特定クラウドへの依存を減らしながらシステムを構築、運用する場合に利用を検討してみてはいかがでしょうか?