Pocket

今回社内で利用しているRedashサーバーをDockerに移行したので、軽く移行する際に気をつけることをまとめていきたいと思います。そもそもECS/Fargateに移行しようともろもろ調べた結果、簡単にはできなさそうな印象を受けたこともあり、早くv8の新機能であるカスタムアラート機能を試したい!ということから、Docker on EC2にしました。テスト含めて1週間くらいで移行完了した気がする。まずは構成から。

余談だけどv8からはDocker必須になっているので気をつけて!!


■構成

 

もともとRedash公式のAWS EC2 AMIから運用していました。ログインはGoogle OAuth SSOを利用しています。まずは新規でUbuntuのインスタンスを作って、その中にRedash公式シェルスクリプトを叩けば、まあなんてステキ。Dockerがインストールされて環境が簡単に出来上がります。(構築方法は以下)

[Ubuntu]Redash v8.0.0をDockerで構築してHTTPS化してみた

AWSの一般的な構成ということもあり、以下のブログではVPSということでSSL証明書も設定していますが、ALBなのでport 80redash_nginx_1コンテナが立ち上がればすぐにhttpsでアクセスすることができます。

アクセス制限もIP制限しているのでNginxの細かい設定は不必要。あとはRDSなのでターゲットグループから新インスタンスに向き先を変更するだけで移行完了となります。もちろんdocker-compose.ymlからPostgreSQLの部分を削除しています。

ちなみにRedisですが、旧Redashサーバーはローカルで動いているということもあり、新環境でもEC2内で動かすようにしましたが、ElastiCacheに移行すればよかったと思う。ここらへんはサクッと移行できるのでやっておこう。

新インスタンスへの切り替えはDB dump後、以下のように対応すると良き。デフォルトのenvはバックアップ取っておいて旧サーバーのenvをコピー後にDBマイグレーションをかけたらDockerを起動しましょう。先に起動してしまうとわけがわからんことになるので。


■気づいたこと

テスト用環境で本番のDBをdumpしてrestoreすればいつでも復元可能となるので、RDS化は必須ですね。また、テスト環境も本番と同じように作ることで、次のバージョンアップも検証できるので必ず構築しておきましょう。


■ハマったところ

  • docker-compose run –rm server manage db upgradeにエラー出る

v8から以下のようにenvファイルに "" (ダブルクォーテーション) をつけてしまうとエラーが出るので注意!消しちまおう!

  • Data Sourceがくるくる回って永遠と選択できない

redash_server_1に対してdocker logsをしてみると上記のエラーを発見しました。InvalidTokenと書いてあるのでenvファイルのどっかがおかしいと判断できます。

そこで REDASH_COOKIE_SECRET とはなんぞと調べたところ、DBのdata_sourcesテーブルにある暗号化フィールドの復号化に使われるので、これは旧Redashサーバーのenvから持ってくる必要があります。また、 REDASH_SECRET_KEY は旧RedashサーバーがDBの暗号キーとクッキーの暗号キーの値が同じということで、削除することで解決となりました。(新規構築の場合は自動で作られるのでOK)ちなみにこのキーの実態がよくわからなかったので、新規のキーをぶちこんだり、適当な値を入れたりしたのでこれはハマった…なので、このキーをなくしたら終わりですね… それでもだめな場合は REDASH_SECRET_KEY を旧サーバーからコピーして設定してみてください。

  • そもそもdocker-compose up -d でredashコンテナが立ち上がらない

 Redashのportは5000なのですが、datadog-agentと被っていたということで、以下のように変更することで解決。

[Datadog]datadog-agentのportを変更する

とりあえずここらへんを気をつけていれば、すんなりと移行できると思います。今後のバージョンアップ方法もwikiに書いておいたので参考に。

[Docker][Ubuntu]Redashバージョンアップ


■まとめ

とりあえず、バージョンアップにビビらず移行できたのは良かったけど、ECS/Fargateには移行したいところ!それにオートスケールもしていないので、クエリが詰まってCPUが100%になったらdocker-compose restart的な作業が発生すると思うので、それは後々考えよう。

Pocket

カテゴリー: AWSDockerRedash

adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください