29
ククククククククク WC3 ク BEANSTALK ククククククク ククククククククククククククククク AT E クク クククククク Gr クククククク クク クク (@t_tanaka_wap) 2011/02/16 1 ク 7 ク AWS USER GROUP - JAPAN ククク LT

110216 jawsug lt by t_tanaka_wap

  • Upload
    -

  • View
    1.598

  • Download
    0

Embed Size (px)

DESCRIPTION

第7回JAWS-UG のLTでの発表資料。「クラウド管理ツールWc3をBeanstalkで動かしてみた」

Citation preview

Page 1: 110216 jawsug lt by t_tanaka_wap

1

クラウド管理ツール WC3 をBEANSTALK で動かしてみた

株式会社ワークスアプリケーションズAT & E 本部 技術基盤開発 Gr クラウドラボ田中 孝佳 (@t_tanaka_wap)

2011/02/16

第 7 回 AWS USER GROUP - JAPAN 勉強会 LT

Page 2: 110216 jawsug lt by t_tanaka_wap

2

自己紹介 ERP パッケージの会社

AWS Solution Providers です 研究部門のクラウドラボに所属

プログラミングは Java 、 C# メイン Silverlight とか WP7 とかにも興味あり

第 5 回で社内製のクラウド管理ツールWc3 について LT しました

2011/02/16ATE 本部 技術基盤グループ

Page 3: 110216 jawsug lt by t_tanaka_wap

3

Wc3 とは?社内のクラウド管理ツール

• インスタンス・ボリューム単位ではなくAP サーバー・ DB サーバーといった単位での管理

• スケジュールにより平日日中のみ稼働させる

EC2 上で 300 台強のインスタンスを稼働

• これら社内利用のほとんどを Wc3 で管理

2011/02/16ATE 本部 技術基盤グループ

Page 4: 110216 jawsug lt by t_tanaka_wap

4

EC2

EC2 上のインスタンスで稼働

2011/02/16ATE 本部 技術基盤グループ

社内

クライアント

AWS endpoint

AP サーバー(micro)

DB サーバー(small)JSON

over HTTP(S)

AWS query(SDK for Java)

JDBC

Page 5: 110216 jawsug lt by t_tanaka_wap

5

メンテナンスが大変・・・DB のお手入れ

• 定期的なバックアップ• 領域監視

VerUp が大変

• 一時停止の連絡• 作業前にバックアップ• war の入れ換え

2011/02/16ATE 本部 技術基盤グループ

Page 6: 110216 jawsug lt by t_tanaka_wap

6

こんなお知らせが

2011/02/16ATE 本部 技術基盤グループ

Page 7: 110216 jawsug lt by t_tanaka_wap

7

DB サーバー RDS,AP サーバー Beanstalk へ RDS

MySQL ベースの RDB サービス Oracle11g にも対応してくれるらしいので

エンタープライズアプリ開発としては嬉しい RDBMS 方言は JPA で吸収できる

Beanstalk war さえ作れば運用してくれる

2011/02/16ATE 本部 技術基盤グループ

社内サービスの運用コストを削減できるはず

Page 8: 110216 jawsug lt by t_tanaka_wap

82011/02/16ATE 本部 技術基盤グループ

その前に Beanstalk って?

Page 9: 110216 jawsug lt by t_tanaka_wap

9

Beanstalk のすごいところEC2 、 S3 、 CloudWatch などがベース

• より便利に!• なのにプログラマブル!!

デフォルトでスケールアウトしてくれる

• スケーリング方法の参考書としても使える• でも今回の LT では触れません・・・

2011/02/16ATE 本部 技術基盤グループ

Page 10: 110216 jawsug lt by t_tanaka_wap

10

Beanstalk のライバルは? Java の PaaS

GAE/J 、 VMForce Google, Spring, VMWare の連携

(Spring Roo + GWT) SteamCannon(Red Hat)

2011/02/16ATE 本部 技術基盤グループ

この辺はまだまだ動きがありそう

Beanstalk は IaaS ベースかつプログラマブル= 自由度が高い

Page 11: 110216 jawsug lt by t_tanaka_wap

11

Beanstalk における自由(1)開発ツールを問わない

• Eclipse ならそのままデプロイ可能• 他 IDE でも war さえビルドできれば OK

既存システムから/への移行も容易

• オンプレミスでも同等の環境を用意できる• 基本的には Linux(CentOS ベース )+Tomcat

2011/02/16ATE 本部 技術基盤グループ

Page 12: 110216 jawsug lt by t_tanaka_wap

12

Beanstalk における自由(2)JVM の制約がほぼない

• デフォルトは OpenJDK 、カスタム AMI で SunJDK も• 非同期 API 、ファイルアクセス等も OK• 従って参照ライブラリも自由に使える

他言語実行環境としての Java が使える

• JRuby とか JVM 上で動く LL も OK

2011/02/16ATE 本部 技術基盤グループ

Page 13: 110216 jawsug lt by t_tanaka_wap

14

Beanstalk が起動したインスタンスにも入れます KeyPair をあらかじめ設定 起動するとインスタンス ID が分かるので

ログイン root 系コマンドは sudo で

大抵何でもできます

2011/02/16ATE 本部 技術基盤グループ

じゃあ Shutdown してみよう!

Page 14: 110216 jawsug lt by t_tanaka_wap

15

shutdown すると FailOverインスタンスの終了

LB が異常終了とみなす

新規インスタンス起動

war デプロイなど初期化処理

2011/02/16ATE 本部 技術基盤グループ

Page 15: 110216 jawsug lt by t_tanaka_wap

16

デプロイに時間がかかる場合は手出しができません なぜかデプロイが終わらないことがある デプロイ中は一切の操作ができない インスタンスを shutdown しても

別インスタンスでデプロイされる 私の経験では数時間が最大 どうにも終わらなければサポート行き?

2011/02/16ATE 本部 技術基盤グループ

Page 16: 110216 jawsug lt by t_tanaka_wap

172011/02/16ATE 本部 技術基盤グループ

じゃあ移行しよう!

Page 17: 110216 jawsug lt by t_tanaka_wap

18

いくつか山がありました

2011/02/16ATE 本部 技術基盤グループ

Page 18: 110216 jawsug lt by t_tanaka_wap

19

RDS への移行 MySQL Migration Toolkit がサポート切れ Workbench でサポートする予定

つまりまだ対応していない デフォルトでマルチバイト文字が使えな

かったり これは MySQL の仕様

タイムゾーンが設定できなかったり

2011/02/16ATE 本部 技術基盤グループ

Page 19: 110216 jawsug lt by t_tanaka_wap

20

RDS への移行は先人の知恵を借りましょう JAWSUG の方の Blog などにあります

文字コードの設定 タイムゾーンの設定

テーブル&データの移行は結局手作業・・・ テーブルの数が 10程度だったし 移行元で DDL+ Insert 文出力 正規表現で変換 RDS に適用

2011/02/16ATE 本部 技術基盤グループ

Page 20: 110216 jawsug lt by t_tanaka_wap

212011/02/16ATE 本部 技術基盤グループ

いよいよアプリの移行

Page 21: 110216 jawsug lt by t_tanaka_wap

22

Context要素はどこに記述?DataSourceやら Realm を使いたい!

• 今までは$CATALINA_HOME/conf/server.xml に記述してた

Beanstalk では編集できない

• カスタム AMI 使えばできるけど・・・• war ごとに AMI 作るのはできればやめたい

2011/02/16ATE 本部 技術基盤グループ

Page 22: 110216 jawsug lt by t_tanaka_wap

23

META-INF/context.xmlを使いましょう warモジュール内に記述できます

2011/02/16ATE 本部 技術基盤グループ

Page 23: 110216 jawsug lt by t_tanaka_wap

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]

Page 24: 110216 jawsug lt by t_tanaka_wap

25

tomcat-dbcp.jar が$CATALINA_HOME/lib にない

2011/02/16ATE 本部 技術基盤グループ

SSH から ls してみると、確かにありませんね・・・これです

Page 25: 110216 jawsug lt by t_tanaka_wap

26

追加しましょう。

2011/02/16ATE 本部 技術基盤グループ

あとはこのインスタンスからカスタム AMI を作成

今回は、 sudo で権限を追加してから、FTP でアップロードしました。

ついでに JDBC Driver も

Page 26: 110216 jawsug lt by t_tanaka_wap

27

RDS の Security Group も忘れずに

2011/02/16ATE 本部 技術基盤グループ

Page 27: 110216 jawsug lt by t_tanaka_wap

28

これで動きました!

2011/02/16ATE 本部 技術基盤グループ

DB 移行も含めて半日ほどでできました!!

Page 28: 110216 jawsug lt by t_tanaka_wap

29

まとめ Context要素は META-INF/context.xml に DataSource 使用時は tomcat-dbcp.jar を追加

JDBC Driver も忘れずに RDS側の SecurityGroup の設定

2011/02/16ATE 本部 技術基盤グループ

Page 29: 110216 jawsug lt by t_tanaka_wap

302011/02/16ATE 本部 技術基盤グループ

ご清聴ありがとうございました