LoginSignup
3
0

More than 1 year has passed since last update.

ECS Fargate環境のredashをv8からv10にした話

Last updated at Posted at 2021-11-17

はじめに

当社ではBIツールredashを活用しておりますが、そのバージョンは長らくv8のままでした。v9betaが出ていたのは認知していたのですが、一向に正式版にならないままであった為、なかなかアップデートに踏み切れずにいました。そのような中で2021年10月頭になんとv10が登場しました。意気揚々とrelease notesを読みアップデートを行うも、発行したクエリが返ってこないという症状が発生、原因不明・解決不能のまま泣く泣く切り戻しを行いました。

image.png
*クエリが返ってこず、Queuedだけがどんどん増えていく。

その後調査を続ける中でRedash SaaSサービスから自前ホストへの移行した話(株式会社ミラティブ様のブログ)に行き着き、内容を参照させて頂くことで問題が解決しました。ありがとうございます。今回はこちらのブログを参照しつつ、redash on ECS Fargate環境にてv8からv10へのアップデートを行った際の設定を紹介します。

*v10からECS Fargate環境を新規作成する場合もDBマイグレーションのコマンドを変更するだけで完成するのでそちらも併せてご確認下さい。

バージョンアップ手順

  • 1. ECSタスク定義の変更
  • 2. DBマイグレーション

0. 環境

image.png

上図は当社のredash v10環境を簡単に表した図です。redashはFargateでホスティングし、redash_service内では5つのコンテナが稼働しています。その他メタデータを管理するPostgreSQLはRDS、キューイングを管理するRedisはElastiCacheといったマネージドサービスに乗せています。図では割愛しておりますが、ALBのターゲットグループにコンテナを指定して利用しています。

1. ECSタスク定義の変更

1.1 コンテナ一覧

Redash SaaSサービスから自前ホストへの移行した話(株式会社ミラティブ様のブログ)にて、docker-compose.ymlの中身を参考にしつつ以下を作成しました。

  • server
  • scheduler
  • scheduled_worker
  • adhoc_worker
  • worker

image.png

当社環境においては、postgresはRDS、redisはElastiCahceに置き換えているため割愛。nginxについては不要な為割愛。

1.2 タスク定義詳細

コンテナ毎の詳細なタスク定義を紹介します。一部Pythonを利用するための環境変数が含まれていますが、それ以外は一般的なものですので適宜読み替えて下さい。

1.2.1 server

image.png

1.2.2 scheduler

image.png

  • server、schedulerは共に一般的な内容です。
  • REDASH_DATABASE_URLはメタデータ用のPostgreSQLのホスト名を記入下さい。
    • 書式はpostgresql://[user]:[password]@[hostname]:[ポート番号]/[database名]です。
      • 例:postgresql://testuser:testpswd@xxx.ap-northeast-1.rds.amazonaws.com:5432/redash
      • [database名]のデフォルトはredashです。
  • REDASH_REDIS_URLも同様にRedisのホスト名です。
    • 書式はredis://[hostname]:[ポート番号]/0です。
      • 例:redis://xxx.apne1.cache.amazonaws.com:6379/0

1.2.3 scheduled_worker

QUEUESの値がscheduled_queries,schemasなのが特徴です。
image.png

1.2.4 adhoc_worker

QUEUESの値はqueriesです。
image.png

1.2.5 worker

QUEUESの値はperiodic emails defaultです。
image.png

補足

schedulerコンテナ、scheduled_workerコンテナ、workerコンテナのコマンドはworkerで統一されており、QUEUESの値で分けています。例えばこれを以下のように一つのコンテナにしても稼働します。

image.png
QUEUESの値はscheduled_queries,schemas,queries,periodic emails defaultです。
*periodic emails defaultの間のみ半角スペース区切り

タスク定義が完成したらECSにて当該クラスターに適用すれば完了です。

2. DBマイグレーション

既にデータ(クエリやダッシュボード)が存在し、それらごとアップデートしたい場合はDBマイグレーションを行う必要があります。
v10環境を新規作成する場合は補足をご確認下さい。

2.1 マイグレーション用タスク定義

image.png

コンテナ設定は基本的には1.2.xのものと同様ですが、コマンドはmanage,db,upgradeです。以下のように、タスク定義のコンテナ編集画面から環境内のコマンド欄に記入します。

image.png

補足

環境を新規作成する場合は、PostgreSQLとRedisの接続情報を記入したうえで、コマンド欄をcreate_dbとします。
image.png

2.2 タスクの実行

用意したタスクをECSから実行する。

2.2.1 新しいタスクの実行

image.png

image.png

適切な設定を行い実行する。

成功すると次のようなログが流れる。
*CloudWatchにログを出している場合
image.png

問題なく設定できた場合、redashを稼働させているタスクのパブリックIP:5000でアクセスすることができます。当然パブリックIPを発行せず、ALB等を経由してアクセスするのでも問題ありません。
image.png

まとめ

redash on ECS Fargate環境にてv8からv10にアップデートする方法についてまとめました。一度は挫折したものの、Mirrativ Tech Blogに行き着いたことでヒントを得、無事解決することができました。深く感謝申し上げます。

redash v10についてはUI変更、CSV/Excelが利用可能になるなど大幅な更新がありました。
可視化の方法も増えたようですし、活用の幅が広がれば良いなと思います。

参考

Redash SaaSサービスから自前ホストへの移行した話 (ミラティブ様の記事)
getredash / redash

3
0
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
3
0