🏃
ECS に Redash を構築する
概要
ECS に Redash を構築する手順についてまとめる。
外観が分かるので、まずは https://redash.io/help/open-source/setup/ を眺めると良い。 AMI についての記述もあるため、EC2 に構築する場合にも役立つ。
インフラ
- RDS
- Redash が管理用に利用する DB (Data Source とは別物)
- Redis
- Redash が管理用に利用する DB (Data Source とは別物)
- ECS
- ALB
- ヘルスチェックには
/ping
を使う
- ヘルスチェックには
task definition
containerDefinitions
コンテナと command の一覧。QUEUES は環境変数
name | command | QUEUES | 用途 |
---|---|---|---|
server | server | なし | WebUI を提供する |
scheduler | scheduler | なし | Redis に job を入れる |
adhoc_worker | worker | queries | 都度実行されるクエリを処理する |
scheduled_worker | worker | scheduled_queries, schemas | スケジューリングされたクエリを処理する |
worker | worker | periodic emails default | その他の処理を実行する |
Image
全て同じイメージ
環境変数
全てのコンテナに適用する
- REDASH_COOKIE_SECRET [required]
- 暗号化するために使われる。
-
https://redash.io/help/open-source/admin-guide/secrets
It is used for various cryptographic features of the web server, such as authenticating users, signing cookies, and storing user session information.
- https://qiita.com/ririco/items/2c15727141aba89b0812#参照するsecretの値として下記3つを登録
- REDASH_SECRET_KEY
- 各種設定を暗号化するために使われる。設定されてなければ代わりに REDASH_COOKIE_SECRET が使われる。
- REDASH_DATABASE_URL [required]
- REDASH_REDIS_URL [required]
- REDASH_HOST
- QUEUES
https://engineer.crowdworks.jp/entry/2021/12/23/105821整ったドキュメントは今現在なさそうでしたが、QUEUESの主な用途としては以下のようになるかと思います。
- queries::クエリ実行のため必要
- periodic:入れておかないと定期実行処理が動かない
- schemas:入れておかないとスキーマ一覧読み込みが動かない
- default:入れておかないとdefault queueが溜まっていく
- scheduled_queries::スケジュールクエリ実行のため必要
- email:入れておかないとメールが送られない
- その他
https://redash.io/help/open-source/admin-guide/env-vars-settings
Setup
Redash を起動する前に RDS の migration を実行する。
- task definition を用意する
- task definition をベースに修正する
- containerDefinition は 1つで良い
- command を
create_db
に変更する
- タスクを実行する
Redash の起動
ECS Service (or Task) を実行する。
うまく設定できていれば、Redash の setup ページが表示される。
管理者用のアカウントを作成すれば Redash を利用できる。
その他
- containerDefinitions の command として設定できる値
https://github.com/getredash/redash/blob/master/bin/docker-entrypoint#L62-L73
Discussion