110216 jawsug lt by t_tanaka_wap
DESCRIPTION
第7回JAWS-UG のLTでの発表資料。「クラウド管理ツールWc3をBeanstalkで動かしてみた」TRANSCRIPT
1
クラウド管理ツール WC3 をBEANSTALK で動かしてみた
株式会社ワークスアプリケーションズAT & E 本部 技術基盤開発 Gr クラウドラボ田中 孝佳 (@t_tanaka_wap)
2011/02/16
第 7 回 AWS USER GROUP - JAPAN 勉強会 LT
2
自己紹介 ERP パッケージの会社
AWS Solution Providers です 研究部門のクラウドラボに所属
プログラミングは Java 、 C# メイン Silverlight とか WP7 とかにも興味あり
第 5 回で社内製のクラウド管理ツールWc3 について LT しました
2011/02/16ATE 本部 技術基盤グループ
3
Wc3 とは?社内のクラウド管理ツール
• インスタンス・ボリューム単位ではなくAP サーバー・ DB サーバーといった単位での管理
• スケジュールにより平日日中のみ稼働させる
EC2 上で 300 台強のインスタンスを稼働
• これら社内利用のほとんどを Wc3 で管理
2011/02/16ATE 本部 技術基盤グループ
4
EC2
EC2 上のインスタンスで稼働
2011/02/16ATE 本部 技術基盤グループ
社内
クライアント
AWS endpoint
AP サーバー(micro)
DB サーバー(small)JSON
over HTTP(S)
AWS query(SDK for Java)
JDBC
5
メンテナンスが大変・・・DB のお手入れ
• 定期的なバックアップ• 領域監視
VerUp が大変
• 一時停止の連絡• 作業前にバックアップ• war の入れ換え
2011/02/16ATE 本部 技術基盤グループ
6
こんなお知らせが
2011/02/16ATE 本部 技術基盤グループ
7
DB サーバー RDS,AP サーバー Beanstalk へ RDS
MySQL ベースの RDB サービス Oracle11g にも対応してくれるらしいので
エンタープライズアプリ開発としては嬉しい RDBMS 方言は JPA で吸収できる
Beanstalk war さえ作れば運用してくれる
2011/02/16ATE 本部 技術基盤グループ
社内サービスの運用コストを削減できるはず
82011/02/16ATE 本部 技術基盤グループ
その前に Beanstalk って?
9
Beanstalk のすごいところEC2 、 S3 、 CloudWatch などがベース
• より便利に!• なのにプログラマブル!!
デフォルトでスケールアウトしてくれる
• スケーリング方法の参考書としても使える• でも今回の LT では触れません・・・
2011/02/16ATE 本部 技術基盤グループ
10
Beanstalk のライバルは? Java の PaaS
GAE/J 、 VMForce Google, Spring, VMWare の連携
(Spring Roo + GWT) SteamCannon(Red Hat)
2011/02/16ATE 本部 技術基盤グループ
この辺はまだまだ動きがありそう
Beanstalk は IaaS ベースかつプログラマブル= 自由度が高い
11
Beanstalk における自由(1)開発ツールを問わない
• Eclipse ならそのままデプロイ可能• 他 IDE でも war さえビルドできれば OK
既存システムから/への移行も容易
• オンプレミスでも同等の環境を用意できる• 基本的には Linux(CentOS ベース )+Tomcat
2011/02/16ATE 本部 技術基盤グループ
12
Beanstalk における自由(2)JVM の制約がほぼない
• デフォルトは OpenJDK 、カスタム AMI で SunJDK も• 非同期 API 、ファイルアクセス等も OK• 従って参照ライブラリも自由に使える
他言語実行環境としての Java が使える
• JRuby とか JVM 上で動く LL も OK
2011/02/16ATE 本部 技術基盤グループ
14
Beanstalk が起動したインスタンスにも入れます KeyPair をあらかじめ設定 起動するとインスタンス ID が分かるので
ログイン root 系コマンドは sudo で
大抵何でもできます
2011/02/16ATE 本部 技術基盤グループ
じゃあ Shutdown してみよう!
15
shutdown すると FailOverインスタンスの終了
LB が異常終了とみなす
新規インスタンス起動
war デプロイなど初期化処理
2011/02/16ATE 本部 技術基盤グループ
16
デプロイに時間がかかる場合は手出しができません なぜかデプロイが終わらないことがある デプロイ中は一切の操作ができない インスタンスを shutdown しても
別インスタンスでデプロイされる 私の経験では数時間が最大 どうにも終わらなければサポート行き?
2011/02/16ATE 本部 技術基盤グループ
172011/02/16ATE 本部 技術基盤グループ
じゃあ移行しよう!
18
いくつか山がありました
2011/02/16ATE 本部 技術基盤グループ
19
RDS への移行 MySQL Migration Toolkit がサポート切れ Workbench でサポートする予定
つまりまだ対応していない デフォルトでマルチバイト文字が使えな
かったり これは MySQL の仕様
タイムゾーンが設定できなかったり
2011/02/16ATE 本部 技術基盤グループ
20
RDS への移行は先人の知恵を借りましょう JAWSUG の方の Blog などにあります
文字コードの設定 タイムゾーンの設定
テーブル&データの移行は結局手作業・・・ テーブルの数が 10程度だったし 移行元で DDL+ Insert 文出力 正規表現で変換 RDS に適用
2011/02/16ATE 本部 技術基盤グループ
212011/02/16ATE 本部 技術基盤グループ
いよいよアプリの移行
22
Context要素はどこに記述?DataSourceやら Realm を使いたい!
• 今までは$CATALINA_HOME/conf/server.xml に記述してた
Beanstalk では編集できない
• カスタム AMI 使えばできるけど・・・• war ごとに AMI 作るのはできればやめたい
2011/02/16ATE 本部 技術基盤グループ
23
META-INF/context.xmlを使いましょう warモジュール内に記述できます
2011/02/16ATE 本部 技術基盤グループ
24
DB接続でこけます・・・
2011/02/16ATE 本部 技術基盤グループ
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactoryがないんだって・・・
ログイン(DB接続する処理)に失敗するので、エラーログを確認する
org.apache.catalina.core.NamingContextListener addResourceWARNING: Failed to register in JMX: javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.ClassNotFoundException: org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory]
25
tomcat-dbcp.jar が$CATALINA_HOME/lib にない
2011/02/16ATE 本部 技術基盤グループ
SSH から ls してみると、確かにありませんね・・・これです
26
追加しましょう。
2011/02/16ATE 本部 技術基盤グループ
あとはこのインスタンスからカスタム AMI を作成
今回は、 sudo で権限を追加してから、FTP でアップロードしました。
ついでに JDBC Driver も
27
RDS の Security Group も忘れずに
2011/02/16ATE 本部 技術基盤グループ
28
これで動きました!
2011/02/16ATE 本部 技術基盤グループ
DB 移行も含めて半日ほどでできました!!
29
まとめ Context要素は META-INF/context.xml に DataSource 使用時は tomcat-dbcp.jar を追加
JDBC Driver も忘れずに RDS側の SecurityGroup の設定
2011/02/16ATE 本部 技術基盤グループ
302011/02/16ATE 本部 技術基盤グループ
ご清聴ありがとうございました