EB使ってますかEB?細かい特徴は公式見て下さい。
AWS Elastic Beanstalk
お気軽にEC2とロードバランサー(とRDS)がセットで起動できて、うまく使えば便利なんですが、細かい調整しようと思うとハマりポイントもあるヤツです。
ということで、今回はEB環境内にRDSを立てた時に困った件です。
これはEB環境内にRDSを追加する際の設定画面です。
普通にRDSを立てる場合には識別子を設定できるのに、EB環境内に建てようとすると識別子を設定することができません。
識別子がどうなるかと言うと、「aabb123kjda35」みたいな名前が勝手に付けられます。
こんな名前で複数のRDSができたら、RDSのコンソールを見た時に「このDBはどこのDBやったっけ?」ってなるので、EB環境内にRDSを立ててはいけない
(EB環境にRDSを追加してもRDSのコンソールに並びます)
みたいなケースでも、EB環境を終了させるとRDSも一緒に死にます。
RDSが死ぬのを回避しようと思うと、
なお、AWSの開発者ガイドにもきっちり以下のような記載があります。
で、RDSのコンソールから停止できるので停止してみたわけですよ。
EB環境内に立てたRDSを停止すると何が起きるか
EB環境の設定画面を開こうとすると「RDSが見つからない」みたいなエラーが発生して設定が触れなくなりました
で、仕方ないのでEB環境もろとも終了させようと思ったところ、EB環境の終了処理が途中で異常終了して(完全には)消せない状態に陥りました。(EBが終了できないのはRDSの停止が原因かどうかは不明ですが)
とりあえず、料金の発生するようなリソースは全部消えてるみたいですがEB環境内にRDSを立ててはいけない、EB環境内に立てたRDSは停止させてはいけない
岡山の現場からは以上です。
AWS Elastic Beanstalk
お気軽にEC2とロードバランサー(とRDS)がセットで起動できて、うまく使えば便利なんですが、細かい調整しようと思うとハマりポイントもあるヤツです。
ということで、今回はEB環境内にRDSを立てた時に困った件です。
その1 RDSの識別子がランダム
まずはこちらの画像をご覧ください。これはEB環境内にRDSを追加する際の設定画面です。
普通にRDSを立てる場合には識別子を設定できるのに、EB環境内に建てようとすると識別子を設定することができません。
識別子がどうなるかと言うと、「aabb123kjda35」みたいな名前が勝手に付けられます。
こんな名前で複数のRDSができたら、RDSのコンソールを見た時に「このDBはどこのDBやったっけ?」ってなるので、EB環境内にRDSを立ててはいけない
(EB環境にRDSを追加してもRDSのコンソールに並びます)
その2 EB環境を終了したらRDSも道連れになる
例えば、検証用のEB環境にRDSを立てたとして、検証が終わったのでEB環境を終了させたい、でもRDSはまだもう少し使いたい。みたいなケースでも、EB環境を終了させるとRDSも一緒に死にます。
RDSが死ぬのを回避しようと思うと、
- RDSの役目が終了するまでEB環境を残しておく(当然、EC2とかロードバランサーとかの料金はかかります。EC2をt2.nanoとかにして料金を抑えることはできますが、完全に無駄金です)
- EB環境を終了する際に、RDSのスナップショットを取ってそこから新しいRDSを立て直す
- 新しいRDSを立ててDMSとか人力マイグレーションとかで頑張ってデータを移行する
なお、AWSの開発者ガイドにもきっちり以下のような記載があります。
環境の一部であるデータベースインスタンスは、環境のライフサイクルに固定されており、追加されると環境から削除することはできません。環境を終了すると、データベースインスタンスも終了します。
その3 RDSを休止したらにっちもさっちもいかなくなる
最近(2017/6/1?)RDSの停止オプションがリリースされました。で、RDSのコンソールから停止できるので停止してみたわけですよ。
EB環境内に立てたRDSを停止すると何が起きるか
EB環境の設定画面を開こうとすると「RDSが見つからない」みたいなエラーが発生して設定が触れなくなりました
で、仕方ないのでEB環境もろとも終了させようと思ったところ、EB環境の終了処理が途中で異常終了して(完全には)消せない状態に陥りました。(EBが終了できないのはRDSの停止が原因かどうかは不明ですが)
とりあえず、料金の発生するようなリソースは全部消えてるみたいですがEB環境内にRDSを立ててはいけない、EB環境内に立てたRDSは停止させてはいけない
岡山の現場からは以上です。
コメント
コメント一覧 (1)