4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AirflowのmetadataStoreDBをGCPのCloudSQLで使う話

4
Posted at

はじめに

Airflowを使ってバッチ処理だったり、CI/CDとかって何かうまいことできないのかなと、
試行錯誤しているこの頃です。
可用性の高い構成を考えた時、一番安くて簡単なのがGCPのCloudSQLに任せてしまうという方法があります。
この時に必要なノウハウについてまとめました。
まぁ、CloudComposer使いなよ。って話なんですが、少しでも安く済ませたいので、
実験してわかったことをまとめたいと思います。

まずはGCP-CloudSQLにDBインスタンスを作成する

GCPの左側の欄からSQLを選択し、インスタンスを立ち上げます。
SQL選択画面

ここでPostgreSQLを選択し、順番にしたがって行けばインスタンスが立ち上がります。

SQL画面

ユーザを登録&DB作成

Airflowから接続するためにはAirflowの専用DBを作成する必要があります。
ユーザ>ユーザを作成でpostgreSQLのユーザを作成することができます。
ユーザ名でairflowと入力し、passwordにとりあえずrootと入力しておきましょう。
(外からアクセスされることはありませんので大丈夫です。)
ユーザを登録

またDBも同様に設定しましょう。
データベース>データベースを作成から作成できます。
名前をairflowとしましょう。

外からのアクセスを許可する

Airflowを立ち上げる管理用のMasterNode(VMインスタンス)に静的アドレスを付与して
CloudSQLに接続できるIPをそれだけに設定します。

静的アドレスを設定するには、
VPCネットワーク>外部IPアドレス>静的アドレスを予約
でできます。あとはMasterNodeを指定するだけでOKです。
(静的アドレスは使用先を指定さえしていれば無料で使用可能です)

そのあと、SQL側で当該のIPを許可します。

SQL>接続>パブリックIP>ネットワークを追加で、許可するネットワークを追加できます。
名前と予約できた静的アドレスを入力し、許可します。
これでMasterNodeからPostgreSQLを読むことができます。
(CeleryでWorkerNodeを立てる場合でも同様の手順を踏んで許可してあげてください)

airflow.cfgをいじる

ひとまずSQLiteでairflow initdbまでできた状況を想定してます

airflow.cfgをいじって接続先DBをSQLiteからPostgreSQLに変更します。

[core]設定のsql_alchemy_connを以下のように書き換えます。

sql_alchemy_conn = postgresql://airflow:[password]@[DBインスタンスIP]/airflow

このあとairflow initdbを再度行い、成功すれば大丈夫です。
あとは勝手にairflowデータベースにmetadataを貯めていってくれます。

さいごに

実はこの方法でなくても接続する方法はあったりするかもしれません。
まぁでもわかりやすいのはこちらだと思うので、こちらを選択しました。

これからもAirflow関連記事をメモ書きとしてQiitaに投稿していきます。
よろしくお願いいたします。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?