Posted at

RedashをAMIから起動してみた

More than 1 year has passed since last update.


公式AMIからインスタンスの起動

https://redash.io/help-onpremise/setup/setting-up-redash-instance.html

から AMI を選択します。Region ap-northeast-1 の AMI リンクをクリックするとインスタンスタイプを選択する画面に遷移するので、適当なインスタンスタイプを選択します。

1年間の無料枠を使っているので無料で使える t2.micro にしました。

キーペアを設定して起動します。


アクセス設定

マネジメントコンソールからインスタンスのセキュリティーグループのインバウンドで HTTP アクセスを適切に許可します。

これでブラウザからインスタンスのIPにアクセスすればページが表示されます。

Internal Server Error(500エラー)ですね。サービス側に問題がありそうなので確認します。


サーバ側設定

起動したインスタンスに SSH ログインします。

とりあえずサービスを再起動してみます。

$ sudo supervisorctl restart all

redash_server: stopped
redash_celery_scheduled: stopped
redash_celery: stopped
redash_celery: started
redash_server: started
redash_celery_scheduled: started

再度ブラウザをリロードしてみますが、Internal Server Error に変化はありません。

supervisord のログを確認します。

$ less /var/log/supervisor/supervisord.log

が、怪しそうなログは出ていません。Redash が使っているサービスの起動状態をひとつひとつ確認します。

PostgreSQL のプロセスを確認します。

$ ps aux | grep -i postgres

ubuntu 21547 0.0 0.0 12948 932 pts/0 S+ 13:47 0:00 grep --color=auto -i postgres

見つからないので、PostgreSQL が起動していない事が原因のようです。ログを確認します。

$ less /var/log/postgresql/postgresql-9.5-main.log

2017-10-16 13:32:30 UTC [1352-1] LOG: database system was shut down at 2017-08-13 12:39:56 UTC
2017-10-16 13:32:30 UTC [1352-2] LOG: MultiXact member wraparound protections are now enabled
2017-10-16 13:32:30 UTC [1351-1] LOG: database system is ready to accept connections
2017-10-16 13:32:30 UTC [1356-1] LOG: autovacuum launcher started
2017-10-16 13:32:31 UTC [1361-1] [unknown]@[unknown] LOG: incomplete startup packet
2017-10-16 13:34:33 UTC [1351-2] LOG: received fast shutdown request
2017-10-16 13:34:33 UTC [1351-3] LOG: aborting any active transactions
2017-10-16 13:34:33 UTC [1705-1] redash@redash FATAL: terminating connection due to administrator command
2017-10-16 13:34:33 UTC [1704-1] redash@redash FATAL: terminating connection due to administrator command
2017-10-16 13:34:33 UTC [1356-2] LOG: autovacuum launcher shutting down
2017-10-16 13:34:34 UTC [1353-1] LOG: shutting down
2017-10-16 13:34:34 UTC [1353-2] LOG: database system is shut down
2017-10-16 13:34:53 UTC [19851-1] FATAL: could not map anonymous shared memory: Cannot allocate memory
2017-10-16 13:34:53 UTC [19851-2] HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pages. To reduce the request size (currently 148488192 bytes), reduce PostgreSQL's shared memory usage, perhaps by reducing shared_buffers or max_connections.

FATAL エラーが出てますね。その前にログの時刻が見づらいので、タイムゾーンを日本時間に変更します。

$ sudo timedatectl set-timezone Asia/Tokyo

$ date
Mon Oct 16 22:53:17 JST 2017

JST に変わりました。

先ほどの PostgreSQL のエラーは割り当てられたメモリサイズが大きいというもののようです。

$ sudo vi /etc/postgresql/9.5/main/postgresql.conf

#max_connections = 100
max_connections = 50

#shared_buffers = 128MB
shared_buffers = 32MB

少ないですね。再起動します。

$ sudo /etc/init.d/postgresql restart

Restarting postgresql (via systemctl): postgresql.service.

プロセスを確認します。

$ ps aux | grep -i postgres

postgres 21785 0.0 1.5 186840 15880 ? S 23:02 0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf
postgres 21787 0.0 0.3 186840 3832 ? Ss 23:02 0:00 postgres: checkpointer process
postgres 21788 0.0 0.3 186840 3832 ? Ss 23:02 0:00 postgres: writer process
postgres 21789 0.0 0.3 186840 3832 ? Ss 23:02 0:00 postgres: wal writer process
postgres 21790 0.0 0.6 187244 6104 ? Ss 23:02 0:00 postgres: autovacuum launcher process
postgres 21791 0.0 0.3 148544 3128 ? Ss 23:02 0:00 postgres: stats collector process
ubuntu 21808 0.0 0.1 12948 1092 pts/0 S+ 23:02 0:00 grep --color=auto -i postgres

起動した!

ブラウザからアクセスすると。

表示された!

Admin ユーザを登録すればとりあえず使えるようになります。

このままだとメール設定などが出来ていなので、必要であればヘルプ

https://redash.io/help/

などを参考にします。


ちなみに

最初に試した時は、次のような en_US.UTF-8 ロケールが無いというエラーが出ていました。

2017-10-09 08:38:28 UTC [2801-1] redash@redash FATAL:  database locale is incompatible with operating system

2017-10-09 08:38:28 UTC [2801-2] redash@redash DETAIL: The database was initialized with LC_COLLATE "en_US.UTF-8", which is not recognized by setlocale().
2017-10-09 08:38:28 UTC [2801-3] redash@redash HINT: Recreate the database with another locale or install the missing locale.

確認すると確かに無い。

$ locale -a

C
C.UTF-8 # en_US.utf8 がない
POSIX

そのため、次のようにして en_US.UTF-8 をインストールして起動しました。

$ sudo locale-gen en_US.UTF-8

$ locale -a
C
C.UTF-8
en_US.utf8
POSIX

この記事を書くために最初から通して試してみたら en_US.utf8 ローカルが入っていて、再現しませんでした。

Issue を立てたのですが、勘違いだった可能性が高いのでそっと閉じました。