...

2. ISE Webインフラストラクチャー部 近藤 仁 WebSphere sMash ハンズオン

by user

on
Category: Documents
19

views

Report

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
Fly UP