Comments
Transcript
2. ISE Webインフラストラクチャー部 近藤 仁 WebSphere sMash ハンズオン
WebSphere sMash ハンズオン 2.構成と基本操作 ISE Webインフラストラクチャー部 近藤 仁 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 目次 –WebSphere sMashと開発ツールの基本 –モジュラー・アーキテクチャと依存性解決 •ローカル・リポジトリの管理 •パッケージングと配布 –クラスター構成とセッション・アフィニティ –参考:セキュリティ概要 2 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン WebSphere sMashと開発ツールの基本 3 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン WebSphere sMashのタイプ パッケージ WebSphere sMash WebSphere sMash Reliable Transport Extensions (RTE) 4 説明 WebSphere sMashの製品版 専用インストーラーで導入 IBM JDK6を含む WebSphere sMashの拡張機能の製品版 メッセージング等,拡張通信機能の提供 専用インストーラーでsMash上に追加導入 WebSphere sMash Developer Edition (DE) 開発用途向けの無償版 JDK5以上が別途必要 www.projectzero.orgよりダウンロード Project Zero (Silverstone) 最新実装のコミュニティ版 JDK5以上が別途必要 www.projectzero.orgよりダウンロード © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 開発環境(開発ツール)比較 アプリケーション・ビルダー sMashアプリケーションによるWebベースIDE GUI による操作 言語対応のエディター ページ・エディター (Dojo対応) sMash DE, Silverstone CLI コマンド・ベースの運用管理 モジュール(アプリケーション)の作成・起動・停止 モジュールの管理 (依存性解決・更新、パッケージ化、・・・) モジュール・グループの管理 ・・・ GUI による操作 言語対応のエディター、HTMLエディター デバッガーによるデバッグ 他の Plug-in による機能拡張 Eclipse プラグインの提供 5 sMash,sMash DE, Silverstone デフォルト Silverstone © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン CLI の使用 zero コマンド: タスク compile create encode help info modulegroup package publish recycle repository resolve restdoc rollback runsql search start stats status stop switch update user version 6 > zero [main-opts] <task> [task-args] 説明 モジュールの /java ディレクトリーにあるすべての Java ソース・ファイルをコンパイルします。 現行ディレクトリーに新規モジュールを作成します。 パスワードなどのストリングを構成ファイル内で使用するためにエンコードします。 指定したコマンドに関する文書を出力します。 ベース URL などの、アプリケーションに関する基本情報を返します。 モジュール・グループを管理します。 モジュールを zip ファイルとしてパッケージ化します。 モジュールをローカル・リポジトリーに公開します。 アプリケーションを再利用します。 リポジトリーを管理します。 モジュールの依存関係を判別します。 →モジュールの依存関係を解決します。 This command runs the RESTdoc tool and generates HTML documentation for the application's REST APIs. 前回実行した resolve または update の結果を元に戻します。 データベースに対して SQL ファイルを実行します リポジトリー内の一致するすべてのモジュールを検出し、出力します。 アプリケーションを開始します。 アプリケーションについて収集された現在の統計情報を返します。 アプリケーションのステータスを返します。 青文字のタスクは、アプリケーション・ルー アプリケーションを停止します。 ト・ディレクトリーでのみ実行可能です。 モジュール・グループを切り替えます。 モジュールを最新の依存関係に解決します。 restdoc タスクは、zero.restdoc を追加する ユーザーを作成および編集します。 と表示されます。 バージョン情報を表示します。 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン CLI の使用例(1) アプリケーションの始動 > cd (アプリケーション・ルート・ディレクトリー) > zero start C:¥demo¥zero.sample.helloworld> zero satart アプリケーションが始動して、http://localhost:8080/ で要求を処理しています CWPZT0600I: コマンド start は正常に完了しました アプリケーションの停止 > cd (アプリケーション・ルート・ディレクトリー) > zero stop C:¥demo¥zero.sample.helloworld> zero stop アプリケーションの状況は、STOPPED です WPZT0600I: コマンド stop は正常に完了しました 7 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン モジュラー・アーキテクチャ リモート・リポジトリ -sMash<appRoot> …… + config 1.依存性解決 + Zero Resolve Library 2.ローカル・リポジトリ 5.参照 検索 Ivy Implementation 4.モジュールのコピー 3.リモート・リポジトリ検索 +ivy.xml zero. assemble.flow dojo zero.wbtools リモート・リポジトリ -Maven…… zero.data spring apache-ds commons-http commons-lang commons-io ローカル・リポジトリ 8 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン CLI の使用例(2) 新しいアプリケーションの作成 – sMash のローカル・リポジトリに取り込んだアプリケーション(モジュール)をコピー して、もしくは新規に実行可能なアプリケーション(モジュール)を作成 > cd (アプリケーション・ルート・ディレクトリーの親ディレクトリー) > zero create zero.sample.helloworld C:¥demo> zero create zero.sample.helloworld CWPZT0511I: zero:zero.application.template: を解決しています CWPZT0840I: モジュール zero.sample.helloworld が正常に作成されました C:¥demo> dir /b zero.sample.helloworld テンプレートから新規作成 C:¥demo> zero create zero.sample.helloworld from zero:employee.demo : CWPZT0840I: モジュール zero.sample.helloworld が正常に作成されました C:¥demo> dir /b zero.sample.helloworld 9 ローカル・リポジトリのモジュールをコピー © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン CLI の使用例(3) 依存性の追加 – 例:zero.resource へ の依存性を追加 • config/ivy.xml <?xml version="1.0" encoding="UTF-8"?> <ivy-module version="1.3"> ・・・ <dependencies> <dependency org="zero" name="zero.core" rev="[1.0.0.0, 2.0.0.0["/> <dependency name="zero.resource" org="zero" rev="[1.0.0.0, 2.0.0.0["/> </dependencies> </ivy-module> 依存性の解決 > cd (アプリケーション・ルート・ディレクトリー) > zero resolve C:¥demo> cd zero.sample.helloworld C:¥demo¥zero.sample.helloworld> zero resolve CWPZT0600I: コマンド resolve は正常に完了しました 10 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン アプリケーション(モジュール)のディレクトリー構造 アプリケーションのディレクトリ構造は重要なConvention の一つ app スクリプトやテンプレートを配置 app/errors カスタムのエラーページを配置 app/resources リソース・ハンドラー(後述)の配置 app/scripts 共通ロジックを含むスクリプトの配置 (他のスクリプトでインクルードされる) app/views レスポンス・レンダリングを行うスクリプトやテンプ レートの配置 config 設定ファイルの配置 ivy.xml アプリケーションの依存性情報 logging.properties アプリケーションのログ設定 zero.config アプリケーションの設定情報 public Webアクセス可能な静的コンテンツの配置 (HTML,イメージ,CSS,JS, .groovy, .php, .gt) 11 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 設定 zero.config #Listenするポート番号 /config/http/port = 8080 – アプリケーション起動時に読 み込み • グローバルコンテキストの /config ゾーン – キーと値で構成される「スタ ンザ」による設定 # リスト型データのセット /config/resources/defaultExtensions = [".groovy"] # リスト型データへのアペンド /config/bindings/.groovy += ["zero.core.groovysupport.bindings.DefaultBindings"] # マップ型データのセット /config/test/map = { "a" : "b", "c" : "d" } # マップ型データへのアペンド /config/test/mapappend += { "a" : "b", "c" : "d" } • Listenポート、セキュリティ設定、 # イベントハンドラーのセット データソース設定など /config/handlers += [{ • 値はJSONフォーマットで指定 "events" : "GET", "handler" : "custom.Handler.class" }] • First one Win • 別設定ファイルのインクルード # 別設定ファイルのインクルード @include "${/config/dependencies/zero.core}/config/security/form.config" { "formLoginPage" : "/login" } 12 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考:依存性解決に関連した設定項目 リモート・リポジトリの参照先 – CLI版: <zero.home>/config/bootstrap.properties で設定 – Eclipse版: Window > Preferences > WebSphere sMash から設定 ローカル・リポジトリの格納先 – CLI版: <zero.home>/config/local.properties で設定 デフォルトは <zero.home>/zero-repository – Eclipse版: Window > Preferences > WebSphere sMash デフォルトは <user.home>/zero-repository/experimental 13 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考:Silverstone (Eclipse版) をsMash DE向け開発に利用 sMash DE(CLI版)に対応するEclipseプラグインは提供されていない EclispeプラグインでsMash製品版をターゲットにした開発を行う場合、リポジトリ の参照先を変更する必要あり デフォルトではSilverstone(latest)を参照しているため – 設定方法 – – – Eclipseのメニューから、Window > Preferences WebSphere sMashを選択 「リモート・リポジトリ・チェーンを構成します」を修正 • • 以下を削除 zero – https://www.projectzero.org/zero/silverstone/latest/repo 以下を追加 zero – https://www.projectzero.org/sMash/1.0.x/repo/base/ zero – https://www.projectzero.org/sMash/1.0.x/repo/rte/ zero – https://www.projectzero.org/sMash/1.0.x/repo/samples/ 詳細は以下を参照: 「Project Zero ブログ - WebSphere sMash Developer Edition (DE) のEclipseプラグインを導入する」 http://www.projectzero.org/jblog/index.php/2008/07/07/websphere-smash-developer-edition-de%e3%81%aeeclipse%e3%83%97%e3%83%a9%e3%82%b0%e3%82%a4%e3%83%b3%e3%82%92%e5%b0%8e%e 5%85%a5%e3%81%99%e3%82%8b/ 14 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン ローカル・リポジトリの管理 15 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン モジュール・グループ sMash が提供するモジュールやユーザーが開発したアプリケーションは、モ ジュール・グループに所属 以下の2つのモジュール・グループが存在 – stable 安定したモジュール用 – experimental 実験的なモジュール用 製品とモジュール・グループの対応 製品名 モジュール・グループ sMash stable sMash DE experimental, stable(デフォルト) Project Zero experimental (Silverstone) 16 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン CLI を使用した管理操作での注意点 現行ディレクトリーによって処理内容が異なるタスクに注意!! – 特に、sMash DE を使用している場合 zero switch – アプリケーション・ルート・ディレクトリー外 • CLI の操作対象とするモジュール・グループの切り替え – アプリケーション・ルート・ディレクトリー • アプリケーションが所属するモジュール・グループの切り替えと update の実行 zero version – アプリケーション・ルート・ディレクトリー外 • CLI 依存関係 • CLI の操作対象になっているモジュール・グループの名前 • JDK のバージョン情報 – アプリケーション・ルート・ディレクトリー • アプリケーションの依存関係 • アプリケーションが所属するモジュール・グループの名前 • JDK のバージョン情報 17 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 実行例: zero version / zero switch C:¥WebSphere¥sMash> zero version CLI バージョン: 1.0.0.0.18726 20080527 1528 CLI 依存関係: modulegroup:stable zero:zero.cli.tasks:1.0.0.0.18722 zero:zero.kernel:1.0.0.0.17914 java version "1.6.0" ・・・・ C:¥WebSphere¥sMash> zero switch experimental CWPZT0600I: コマンド switch は正常に完了しました C:¥WebSphere¥sMash> zero version CLI バージョン: 1.0.0.0.18726 20080527 1528 CLI 依存関係: modulegroup:experimental zero:zero.cli.tasks:1.1.0.0.20645 zero:zero.kernel:1.1.0.0.20629 java version "1.6.0" ・・・・ CLI が操作対象とする モジュール・グループ C:¥WebSphere¥sMash¥appbuilder> zero version アプリケーション依存関係: modulegroup:experimental dojo:dojo:1.1.1.20346 org.apache.derby:derby:10.3.2.1 org.apache.xmlbeans:xmlbeans:2.2.0 zero:p8:1.1.0.0.19560 アプリケーション(モジュール)が zero:zero.abdera:1.1.0.0.20574 所属するモジュール・グループ zero:zero.appbuilder.floweditor:1.1.0.0.19940 zero:zero.appbuilder.pageeditor:1.1.0.0.20733 zero:zero.appbuilder.resources:1.1.0.0.20677 zero:zero.appbuilder:1.1.0.0.20734 ・・・・ java version "1.6.0" ・・・・ C:¥WebSphere¥sMash¥appbuilder> C:¥WebSphere¥sMash> 18 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン CLI:モジュール・グループ内のモジュールの検索 zero search zero search [<org:module:version>] [-remote] [-json] 指定された依存関係、現行モジュール・グループ内で <org:module:version> に一致するモジュールを見つけます。 依存関係が指定されなかった場合は、使用可能なすべてのモジュールがリストされます。 -remote オプションは、ローカル・リポジトリではなくリモート・リポジトリを検索します。 -json オプションは、レポートを JSON 文書としてフォーマット設定します。 ローカルまたはリモートのリポジトリの検索が可能 現行モジュール・グループが検索の対象 – アプリケーション・ルート・ディレクトリー外: CLI の操作対象のグループ – アプリケーション・ルート・ディレクトリー: アプリが所属するグループ – zero version で確認可能 19 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン CLI:モジュール・グループの管理 zero modulegroup <subcommand> zero modulegroup <subcommand> [options] [args] サブコマンド addurl create delete destroy help info list prune update 説明 モジュール・グループにリモート・リポジトリを追加します。 ローカル・リポジトリに新規モジュール・グループを作成します。 ローカル・リポジトリからモジュールを削除します。 指定されたモジュール・グループをローカル・リポジトリから除去します。 指定したサブコマンドに関する文書を出力します。 site.xml の内容を出力します。 すべてのモジュールを検索して出力します。 リポジトリから未使用のバージョンのモジュールを除去します。 モジュールを最新バージョンに更新します。 操作対象となるモジュール・グループ – アプリケーション・ルート・ディレクトリー外: CLI の操作対象のグループ – アプリケーション・ルート・ディレクトリー: アプリが所属するグループ – zero version で確認可能 20 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン CLI:モジュール・グループの更新 zero modulegroup update で更新(最新版を取得) zero modulegroup update <org:module:version> [-report] zero modulegroup update [-n=<n>] [-report] このコマンドは、最新バージョンをリモート・リポジトリからコピーすることにより、指定されたモジュールを更新します。 module を指定しなかった場合は、リモート・リポジトリにあるすべてのモジュールの最新バージョンが取得されます。 -n オプションは、取得するバージョンの数を制御します。デフォルトは 1 です。 -report は、操作を実行しますが、何も変更を加えません。変更のリストがコンソールへ送信されます。 21 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン CLI:アプリケーションへの更新内容の反映 zero update でアプリケーション(モジュール)に更新内容を反映 zero update [-report] モジュールをリポジトリ内で使用可能な最新の依存関係に解決します。 -report は、操作を実行しますが、何も変更を加えません。変更のリストがコンソールへ送信されます。 – アプリケーション・ルート・ディレクトリーにて実行 – zero resolve を再実行しても最新版が使用されないので要注意 • 以前の解決で決定されたバージョンが残っている限り、zero resolve を 実行しても最新版は使用されません 22 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン パッケージングと配布 23 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン アプリケーション(モジュール)のパッケージングと配布 開発環境 実行環境 sMash sMash Eclipse Eclipse ローカル・ リポジトリ モジュール モジュール sMash sMashDE DE パッケージ化 作成 (コピー) 公開 zip zip ファイル ファイル 24 配布 zip zip ファイル ファイル © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン パッケージングと配布の操作:パッケージ化 (1) CLI を使用したパッケージ化 – アプリケーション・ルート・ディレクトリーで zero package を実行 zero package [shared | standalone] [-includeSrc ][-excludes=PATTERNs...] モジュールを共用や再配布のために zip ファイルにパッケージ化します。 パッケージ化には共用とスタンドアロンの 2 つのタイプがあります。 タイプを指定しなかった場合は、共用パッケージが作成されます。 共用パッケージは、すべての依存関係をローカル・リポジトリへ解決します。 スタンドアロン・パッケージには、必要なモジュールをすべて格納するプライベート・リポジトリが含まれています リポジトリを介してパッケージを共用する場合は、このコマンドを publish コマンドと組み合わせて使用できます。 includeSrc オプションは、パッケージに java ディレクトリーを追加します。 exclude オプションは、指定したファイルおよびディレクトリーを zip ファイルから除外します。 正規表現の形式で指定する各 PATTERNsは、コンマで区切ります。 デフォルトでは、このコマンドはバージョン管理ファイルおよび .zero/private ディレ クトリーを除外します。-excludesオプションは、デフォルトの除外リストをオーバーライドします。 リポジトリを参照できない環境で稼動させるアプリケーションの場合は、 スタンドアロン・パッケージを選択 25 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン パッケージングと配布の操作:パッケージ化 (2) Eclipse を使用したパッケージ化 – プロジェクトを右クリック⇒Exportより、 WebSphere sMash Export Wizard でエクスポート • スタンドアロン・パッケージの作成も可能 • アプリケーション用ディレクトリー内の export ディレクトリー内に出力 26 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン パッケージングと配布の操作:公開 公開 – sMash のローカル・リポジトリに取り込む操作 CLI を使用して公開 – zero publish –f=<zipファイル名> zero publish [-f=<file>] [-overwrite] package コマンドで作成した zip ファイルをローカル・リポジトリに公開します。 zipファイルは、通常、モジュールのエクスポート・ディレクトリーに置かれています。 -f オプションは zip ファイルの代替ロケーションを指定します。 -overwrite オプションは、モジュールがリポジトリにすでに存在していても、publish を強制的に成功させます。 27 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン パッケージングと配布の操作:作成(コピー) 作成(コピー) – sMash のローカル・リポジトリに取り込んだアプリケーション(モジュール) をコピーして、実行可能なアプリケーション(モジュール)を作成 CLI を使用して公開 – zero create <アプリ名> from <org:module:version> – カレントディレクトリーの直下に、アプリケーション・ルート・ディレクトリーが 作成される 1. zero create <name> 2. zero create <name> linkto <org:module:version> 3. zero create <name> from <org:module:version> このコマンドは、現行作業ディレクトリーに新規モジュールを作成します。 linkto オプションは、モジュールを唯一の依存関係として設定します。 from オプションは、リポジトリからモジュールをコピーします。 28 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考:アプリケーション起動時のトラブルシューティング デフォルトでは8080ポートをリスンするが、ポートの衝突が発生するとアプリ ケーションの起動が失敗する ポートの衝突 – アプリケーションが利用するポート番号を zero.config で定義 /config/http/port = 8080 (デフォルト) – 衝突先のプロセス(アプリケーション)を停止 • アプリケーション・ルート・ディレクトリで zero stop を実行 以下のコマンドで実行中のsMashアプリケーションを確認できる – (Windows) zso.exe – (Unix系) ps -efa | grep zso • 最後の引数がアプリケーション・ルート・ディレクトリ zero.configでポート番号を修正し、アプリケーションを起動する 29 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考:アプリケーション起動時のトラブルシューティング(2) zero start 実行時に「startタスクがありません」というエラーが出る場合 – アプリケーションのivy.xmlで、zero.coreへの依存関係が定義されているか確認する – zero resolve でアプリケーションの依存関係を解決する アプリケーション起動時に、クラスが見つからない場合 – ivy.xmlで必要な依存関係が定義されているか確認する – 依存関係が解決されているか確認する(zero resolve) – アプリケーションの<approot>/.zero/private/resolved.properties を参照して、クラス パスを確認してもよい ネィティブライブラリーが見つからない場合 – ネィティブライブラリが、アプリケーションのlib ディレクトリの下のプラットフォームに対 応するディレクトリ存在することを確認 – ネィティブライブラリのプロパティが<approot>/.zero/private/resolved.properties で指 定されたディレクトリに存在することを確認 30 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン クラスター構成とセッション・アフィニティ 31 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン Apache HTTP serverによるプロキシー/クラスタリング構成 Apache HTTP Serverによるリバース・プロキシー構成 – Apacheがスプレーヤーおよびロード・バランサーとして稼動 • DMZ上への配置 – HTTPリクエストをバックエンドの複数sMashアプリケーションにルーティング Apache HTTP Serverによるクラスター構成 – 垂直クラスター、水平クラスターともにサポート • 水平クラスター : sMashアプリケーションを別筐体に配置 – ノード障害対応、リソース割り当ての増強 • 垂直クラスター : sMashアプリケーションを同一筐体に別ポートで構成 – プロセス(アプリケーション単位)障害対応、リソース利用率向上 – sMash側に特別な設定は必要なし • ただしアプリケーション内で絶対パスが使用されている場合URIUtilを利用 32 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン Apache HTTP serverによるプロキシー構成 – 以下前提は2006/7現在の最新version 2.2.9 Apache HTTP Serverのhttpd.confでmod_proxyを有効に – mod_proxy、mod_proxy_http、mod_rewriteモジュールをロード – リバース・プロキシー構成の為、ProxyRequests はoffにセット – Proxyスタンザの追加 • アクセス制御 – URLリライトの有効化 • リライト・ルールによりリクエストの最後にスラッシュを追加 – ProxyPassとProxyPassReverseを設定 • ProxyPass : アプリケーションのネームスペースを指定 – その他コネクション・タイムアウトやリトライ設定など – status=+Hでホット・スタンバイ構成 • ProxyPassReverse : リダイレクトされた応答ヘッダのLocationを正しく書換え 33 http://www.projectzero.org/sMash/1.0.x/docs/zero.devguide.doc/zero.core/ProxyConfiguration.html http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考:Apache HTTP serverによるプロキシー構成 設定例 (httpd.conf) //コメントアウトを外す LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.so ProxyRequests Off <Proxy> Order deny,allow Allow from all </Proxy> RewriteEngine on RewriteRule ^/mycontextroot$ /mycontextroot/ [R] ProxyPass /mycontextroot/ http://<host1名>:<ポート1>/mycontextroot/ ProxyPassReverse /mycontextroot/ http://<host1名>:<ポート1>/mycontextroot/ 34 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン Apache HTTP serverによるクラスタリング構成 Internet DMZ S S Apache mod_proxy クライアント Internet DMZ S port 9081 port 9082 port 9083 垂直 クラスター rep S S クライアント 35 Apache mod_proxy S 水平 クラスター © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン クラスタリングの為のアプリケーション配置 パッケージング – zero package package publish – 水平クラスターの場合はパッケージングし別筐体へコピー zip zip パブリッシュ – zero publish – 水平クラスターの場合別筐体のzero-repositoryへパブリッシュ sMash sMash 配置 – zero create – 垂直クラスターの場合それぞれ別名で配置 create リポジトリー モジュール 設定 – コンテキスト・ルート等の設定はそのまま – 垂直クラスターの場合zero.configで別ポートを設定 – 垂直クラスターにおける複数アプリケーション配置の簡素化は今後のリリースで対応予定 36 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン クラスター&セッション・アフィニティ構成 1/2 zsessionidもしくは固定のapacheRouteIDのセットを設定可能 –zero.configで/config/apacheRouteIDにメンバーのID値を設定 –グローバル・コンテキスト /user の利用時にsetCookieされる • zsessionid=1217563618031cbf1eddc88ef69ac15a432fbfbf876daa72058759845c04.<apa cheRouteID> • apacheRouteID=route.<apacheRouteID> – apacheRouteIDの場合、イベント・ハンドラーを新規追加 – グローバル・コンテキストを利用したセッション引継ぎは今後のリリースで対応予定 setCookie resp クライアント req cookie zsessionid=xxxx.mem1 バランサーによる stickysession設定 37 mod_proxy S apacheRouteID=“mem1” S apacheRouteID=“mem2” S apacheRouteID=“mem3” zero.config © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン クラスター&セッション・アフィニティ構成 2/2 httpd.confでbalancerによるstickysessionを設定 –mod_proxy、mod_proxy_httpを有効に –バランサー・モジュール mod_proxy_balancer.so のロード –Proxyスタンザでバランサーの定義 • クラスターメンバーとなるアプリケーションごとにBalancerMemberでURIと zero.configで指定したapacheRouteIDを指定 –LocationMatchスタンザでバランサーに対する ProxyPass,ProxyPassReverseの設定 • ProxyPassでstickysessionの指定 – zsessionidもしくはapacheRouteID 38 ※詳細は http://www.projectzero.org/sMash/1.0.x/docs/zero.devguide.doc/zero.core/ProxyConfiguration.html http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy.html © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考:zsessionid構成 設定例 1/2 設定例 (zero.config メンバー1のみ) – apacheRouteIDの設定を行い、httpd.confのBalancerMemberと合わせる # ポート番号指定 /config/http/port = <ポート> #メンバーIDの指定 /config/apacheRouteID=“<メンバーID1>” #コンテキスト・ルート指定 /config/contextRoot=“<コンテキスト・ルート>" 39 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考:zsessionid構成 設定例 2/2 設定例 (httpd.conf) //コメントアウトを外す LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so ProxyRequests Off <Proxy balancer://mycluster> BalancerMember http://<host1名>:<ポート>/<コンテキスト・ルート>/ route=<メンバーID1> BalancerMember http:// <host2名>:<ポート>/<コンテキスト・ルート>/ route=<メンバーID2> </Proxy> <LocationMatch "/zemp" > Order allow,deny Allow from all ProxyPass balancer://mycluster stickysession=zsessionid nofailover=Off ProxyPassReverse balancer://mycluster </LocationMatch> RewriteEngine on RewriteRule ^/mycontextroot$ /mycontextroot/ [R] 40 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考:Apache Web Serverのロード・バランシング mod_proxyのロード・バランシング・アルゴリズム指定 ProxyPassのlbmethodで指定 –balancer://のケースで有効なパラメータ –byrequests:リクエスト数に応じた負荷分散 –bytraffic:転送量のバイト数に応じた負荷分散 –デフォルトは byrequests httpd.conf ProxyPass balancer://mycluster nofailover=Off lbmethod=bytraffic ProxyPassReverse balancer://mycluster 41 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン URIUtil 1/2 リンク指定は独立性の観点からページ相対パスを推奨 –リバース・プロキシーを前段に配置するケース –コンテキスト・ルートを設定したケース リクエストURL : http://host/greeting.gt/more <!-- 絶対パス --> <img src="http://host/images/absolute.jpg"> <!-- ルート相対パス --> <img src="/images/root.jpg"> <!-- ページ相対パス --> <img src="images/page.jpg"> http://host/images/absolute.jpg http://host/images/root.jpg http://host/greeting.gt/images/page.jpg http://host/images/absolute.jpg http://host/images/root.jpg http://host/sample/images/page.jpg コンテキストルート(/sample)を指定 リクエストURL : http://host/sample/greeting.gt 42 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン URIUtil 2/2 URIUtilはsMashアプリケーション内で相対パス/絶対パスURIを構成す るためのユーティリティ –getRelativeUriの利用による相対パスの生成 <!-- アプリケーション・ルートからの相対パス計算(コンテキスト・ルートも自動計算) --> <img src="<%= getRelativeUri("/images/absolute.jpg") %>"> <img src="<%= getRelativeUri("/images/root.jpg") %>"> <!-- スクリプト位置からの相対パス --> <img src="<%= getRelativeUri("images/page.jpg") %>"> –その他クエリー・パラメータを含むURIの生成、絶対パスの生成など https://www.projectzero.org/javadoc/latest/CORE/API/zero/core/utils/URIUtils.html –絶対パスを利用する必要がある場合、GCの外部URI prefixを利用 • URIUtilが絶対パス生成時にこの値を利用 /config/externalUriPrefix = "http://www.projectzero.org" 43 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考情報:セキュリティ概要 44 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン sMash セキュリティ 概要 sMashはHTTP処理における一般的なセキュリティ手法を 標準機能でサポート sMashのセキュリティは Java Authentication and Authorization Service (JAAS) ベースで実装 以下のサービスを提供: – 認証 – 認可 (ユーザー/グループ 又はロールベース) – シングルサインオン: Lightweight Third-Party Authentication (LTPA) のみ対応 – カスタムセキュリティ セキュリティ設定は zero.config に記述 45 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン セキュリティ・ルールの定義 sMashでは、保護対象リソースやユーザー/グループの情報は zero.config にセキュリティ・ルールとして定義する セキュリティ・ルールの定義は次のようになる: – 条件(conditions): 任意の条件式 – 認証タイプ(authType): Basic、Form、SSOのいずれか – 以下のうち最低一つを指定 • ユーザー(users): リソースへのアクセスを許可するユーザーのリスト(カンマ区切り) • グループ(groups): リソースへのアクセスを許可するグループのリスト(カンマ区切り) • ロール(roles):リソースへのアクセスを許可するロールのリスト(カンマ区切り) URIパターン /customers(/.*)? にマッチする全てのリソースを保護し、HTTP PUT/POSTに対してBasic認証を適用する場合、次のセキュリティ・ルールを定 義する: @include "security/rule.config"{ "conditions": "(/request/path =~ /customers(/.*)?) && (/request/method =~ (PUT|POST)) ", “authType" : "Basic", "users" : ["myUser1"], "groups" : ["CUSTOMERS"] } 46 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン sMashのサポートする認証方式 一般的な認証方式のほとんどをサポート – ベーシック認証 – フォーム・ベース認証 – sMash シングルサインオン – カスタムロジック(API)によるログイン認証 sMashはユーザー・レジストリーへのアクセスに、ユー ザー・サービス・コンポーネントを利用(詳細は後述) 詳細は参考情報のsMashアナウンスメントワークショップ資料をご参照ください。 47 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン ベーシック認証 sMashのベーシック認証の実装は、RFC2617に準拠 WebブラウザーやクライアントプログラムがHTTPリクエストを送信する際 に、ユーザー名/パスワードをHTTPのauthorizationヘッダーで提供する ベーシック認証を利用する場合、認証タイプとして「Basic」を指定する "authType" : “Basic" 一般に、認証情報はプレーンテキストで送信されるため、容易に盗聴が 可能 – この方式では、サーバーへの送信情報を保護する手段が提供されない – セキュアでないリソースに対しても、クライアント・サーバー間で認証情 報のやり取りが発生する可能性がある箇所については、できるだけ SSLを有効にしておくことを推奨 48 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 参考情報 WebSphere sMash アナウンスメントワークショップ資料 http://www-06.ibm.com/jp/domino01/mkt/websphere.nsf/doc/002760F2 49 – 9.導入とシステム管理 (セキュリティを含む) – 10.可用性とワークロード管理 – 11.アプリケーション開発 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン 御清聴ありがとうございました 50 © 2008 IBM Corporation © 2008 ISE Corporation WebSphere sMash ハンズオン © IBM Corporation 2008. All Rights Reserved. ワークショップ、セッション、および資料は、IBMまたはセッション発表者によって準備され、それぞれ独自の見解を反映したものです。それらは情報提供の目 的のみで提供されており、いかなる参加者に対しても法律的またはその他の指導や助言を意図したものではなく、またそのような結果を生むものでもありませ ん。本プレゼンテーションに含まれている情報については、完全性と正確性を帰するよう努力しましたが、「現状のまま」提供され、明示または暗示にかかわら ずいかなる保証も伴わないものとします。本プレゼンテーションまたはその他の資料の使用によって、あるいはその他の関連によって、いかなる損害が生じた 場合も、IBMは責任を負わないものとします。 本プレゼンテーションに含まれている内容は、IBMまたはそのサプライヤーやライセンス交付者からいかなる保 証または表明を引きだすことを意図したものでも、IBMソフトウェアの使用を規定する適用ライセンス契約の条項を変更することを意図したものでもなく、また そのような結果を生むものでもありません。 本プレゼンテーションでIBM製品、プログラム、またはサービスに言及していても、IBMが営業活動を行っているすべての国でそれらが使用可能であることを 暗示するものではありません。本プレゼンテーションで言及している製品リリース日付や製品機能は、市場機会またはその他の要因に基づいてIBM独自の決 定権をもっていつでも変更できるものとし、いかなる方法においても将来の製品または機能が使用可能になると確約することを意図したものではありません。 本資料に含まれている内容は、参加者が開始する活動によって特定の販売、売上高の向上、またはその他の結果が生じると述べる、または暗示することを 意図したものでも、またそのような結果を生むものでもありません。 パフォーマンスは、管理された環境において標準的なIBMベンチマークを使用した測定と予測に基づいています。ユーザーが経験する実際のスループットや パフォーマンスは、ユーザーのジョブ・ストリームにおけるマルチプログラミングの量、入出力構成、ストレージ構成、および処理されるワークロードなどの考慮 事項を含む、数多くの要因に応じて変化します。したがって、個々のユーザーがここで述べられているものと同様の結果を得られると確約するものではありま せん。 記述されているすべてのお客様事例は、それらのお客様がどのようにIBM製品を使用したか、またそれらのお客様が達成した結果の実例として示されたもの です。実際の環境コストおよびパフォーマンス特性は、お客様ごとに異なる場合があります。 以下は、International Business Machines Corporationの米国およびその他の国における商標。IBMの全商標のリストについては、 www.ibm.com/legal/copytrade.shtmlをご覧ください。 AIX, CICS, CICSPlex, DB2, DB2 Universal Database, i5/OS, IBM, the IBM logo, IMS, iSeries, Lotus, OMEGAMON, OS/390, Parallel Sysplex, pureXML, Rational, RCAF, Redbooks, Sametime, Smart SOA, System i, System i5, System z , Tivoli, WebSphere, z/OS. JavaおよびすべてのJava関連の商標およびロゴは Sun Microsystems, Inc.の米国およびその他の国における商標。 Microsoft, Windows, Windows NT および Windowsロゴは Microsoft Corporationの米国およびその他の国における商標。 Intel, Intelロゴ, Intel Inside, Intel Insideロゴ, Intel Centrino, Intel Centrinoロゴ, Celeron, Intel Xeon, Intel SpeedStep, Itanium, Pentium は Intel Corporationまたは子会社の米国およびその他の国における商標または登録商標。 UNIXはThe Open Groupの米国およびその他の国における登録商標。 Linuxは、Linus Torvaldsの米国およびその他の国における商標。 その他の会社名、製品名およびサービス名等はそれぞれ各社の商標。 51 © 2008 IBM Corporation © 2008 ISE Corporation