Oracle Secure Enterprise Search
search.oracle.com の実装の事例
オラクル・テクニカル・ホワイト・ペーパー
概要 ... 3 1. ハードウェアの概要... 3 2. フェイルオーバー/高可用性アーキテクチャ ... 4 3. インストールの概要... 5 4. インストール後のタスク ... 6 4.1 デフォルトを設定するためのAdmin UIへのログイン... 6 4.2 ディスク領域の過剰な消費を防止するためにログファイルをローテーションするcronjobの作成 7 4.3 SGA/PGAパラメータの変更 ... 8 4.4 推奨パッチのインストール(ある場合)... 8 5. 監視... 8 5.1 コンポーネント・スタックの一部が期待どおりに応答していないことが分かった場合にプロセス を自動的に再起動するcronjobの作成 ... 8 5.2 Enterprise Managerにより監視用に環境を準備 ... 8 5.3 sqlnetリスナーへの接続をEnterprise Managerコンソールに許可... 8
5.4 Enterprise Searchアプリケーションを監視するためのEnterprise Managerターゲットの作成 .. 9
6. バックアップ... 11
7. セキュアなクロールのセットアップ ... 12
付録A − RAIDディスクを監視するcronjob... 13
付録B − プロセスを自動的に再起動するcronjob ... 13
概要
Oracle Secure Enterprise Search 10g Release 1 (10.1.6)は Out-of-the-box ソリューションで、Oracle データベー ス、Portal、Web サイト、電子メール・システム、ディスク上のファイルをはじめ、複数のリポジトリ 全体を検索する機能を備えています。
Secure Enterprise Search によって、会社のコンテンツ資産全体にアクセスする Oracle のポータルをクロー ルでき、Oracle のプラットフォームの拡張性と信頼性におけるコア機能を発揮します。
Oracle Secure Enterprise Searchは、www.oracle.com(WWW)とotn.oracle.com(OTN)で検索サー
ビスを提供するために構成されました。このサービスは、URL http://search.oracle.comからア
クセスでき、オラクル社のドキュメンテーション、ブログやフォーラムなどもカバーするよう順次、拡 張されます。
次に、アーキテクチャを概説し、その実装経験から得られたベスト・プラクティスと教訓を考察します。
1. ハードウェアの概要
Oracle Secure Enterprise Search 10g Release 1 (10.1.6)は、3GHz CPU をそれぞれ 2 個搭載した 2 台の Dell Poweredge 2850 サーバーにインストールされていますが、ハイパー・スレッディングにより外見は 4 個 の CPU に見えます。各サーバーは、8GB のメモリーと 12GB のスワップを持ちます。 今回の実装では、4 台の 300GB内部ディスク上でハードウェアRAID 5 構成を選択し、パフォーマンス、 フォールト・トレランス、ストレージ効率、価格のバランスが最良となるよう考慮されています。RAID 5 は、データとパリティ情報をドライブ間で公開し、特に読込み動作が多い場合、そのパフォーマンス を良好に保ちます。 RAID構成の詳細は、http://en.wikipedia.org/wiki/Redundant_array_of_independent_disksを参照してください。 インストールの初期ストレージ容量は 700GBで十分ですが、後からストレージを追加できます。RAID のステータスをチェックするには、cronjobを作成します。サンプル・スクリプトは付録Aを参照してく ださい。このcronjobは、15 分ごとに実行するよう設定します。
サーバーは、2.4.21-37.ELhugemem カーネルの Red Hat Linux Advanced Server バージョン 3.2.3-49(32 ビッ ト)を実行します。 ローカルに接続されたディスク上に 2 つのファイルシステムを作成して、特に SES インストール用とし て割り当てました。 /u01 − サイズ 50GB(シンプルなディスク・パーティション上に構築) − アプリケーション用のバ イナリを格納 /u02 − サイズ 700GB(基盤のハードウェア RAID 5 上に構築) − ログ・ファイル、キャッシュ、デー タベース(クロールされ索引付けされたデータを保管)を格納 インストールに必要な最小ディスク領域は、インストール・ガイドに記載されています。必要な最大ディ スク領域は、クロールおよび索引付けするデータの量により異なります。前述のディスク・レイアウト を使用する場合、/u01 ファイルシステムはさらに拡大することはありませんが、/u02 上のデータベース は、より多くのデータをクロールする必要が生じると、自ら動的に拡大し続けます。 35 万件を超えるドキュメントを索引付けした場合、バックエンド・データベースのサイズは約 15GB ま で動的に拡大しました。キャッシュ・ファイルは 17GB、ログ・ファイルは 1GB のディスク領域を占め るため、u02 ファイルシステムでは約 33GB のディスク領域が消費されました。キャッシュ・ファイル とログ・ファイルは、必要に応じてインストール後に、別のファイルシステムに送信できます。その場 合、Admin UI の「Global Settings」タブでクローラ構成を変更します。
2. フェイルオーバー/高可用性アーキテクチャ
高可用性のために、2 つの SES サーバー間でアクティブ-アクティブ構成を使用します。各サーバーには、 対称的に構成された 2 つの SES のセットアップがあり、それぞれ独自のクロール・セットを実行します。 search.oracle.com アプリケーションに対する単一のエントリ・ポイントを提供するため、これら 2 つの サーバーの前には、ロード・バランシング・ルーター(LBR)のペア(アクティブ-非アクティブ)を置 きます。使用する LBR のタイプは F5 の BigIP です。LBR は、ロード・バランシングとフェイルオーバー に使用します。search.oracle.com 用の LBR 仮想サーバー構成は、ラウンド・ロビン方式のロード・ バランシングと sticky ルーティングを使用します。この構成により、同じクライアントからの後続リ クエストは、設定された期間、引き続き同じサーバーにルーティングされます。この場合の sticky ルー ティング期間は 12 時間です。LBR 上でモニターが定義され、SES LBR ノードに割り当てられます。http モニターは、指定された送信 文字列を使用して周期的に状況をチェックします。また、受信ルールの有無をチェックして SES サービ スが期待どおりに応答することを確認します。ノードに対するテストが失敗した場合、そのノードは自 動的に LBR で使用不能になるため、クライアント・リクエストは正しく機能している SES サービスに のみ送信されます。 この LBR 構成により、SES サーバーの 1 つがメンテナンスなどにより停止した場合でも、ユーザーに 対するサービスは中断しません。 LBRの全般に関する詳細は、 http://en.wikipedia.org/wiki/Load_balancing_(computing)を参照してください。 Oracle環境におけるF5 のBigIPの概念と構成については、 http://www.oracle.com/technology/products/ias/hi_av/bigip.pdfを参照してください。
3. インストールの概要
Oracle Secure Enterprise Search(SES)アーキテクチャには、Oracle データベースと中間層としてのスタ ンドアロン oc4j のインストールが含まれています。SES 製品はすべてが含まれたアプライアンスとして 設計されているため、Oracle Universal Installer を使用した 1 ステップ・プロセスでインストールできます。 アプリケーションのインストールと構成に特別な DBA スキルや Oracle 製品スキルは必要ありません。
完全な手順とその前提条件は、『Oracle Secure Enterprise Searchクイック・インストレーション・ガイ ド』を参照してください。
登録されるインスタンスがそれぞれ一意の名前を持つことが、セキュアなクロールの要件であるため、 インストールの際にサーバー名を決定しておく必要があります。Secure Enterprise Search は、現在、Oracle Internet Directory(LDAP)のみに登録するよう構成されています。セキュアなクロールのディレクトリ・ セットアップを構成する際、登録されるアプリケーションの名前は、インストール中に指定されたサー バー名(すなわち ORACLE_SID)から派生されます。この名前は 8 文字以内に制限されます。 同じサーバーに複数の Oracle ホームをインストールする場合、最初のインストールでデフォルト・デー タベース・ポートとして 1521 が使用され、その後のインストールのデータベース・ポートは 1 つずつ 増加します。
4. インストール後のタスク
Universal Installer の完了後、Oracle Secure Enterprise Search アプリケーションはただちに起動し、すぐに 使用できます。ただし、アプリケーションの可用性と機能性を高めるために、インストール後、いくつ かのタスクを実行しておくと便利です。
4.1 Admin UI へのログイン - デフォルトの設定
SES の Admin UI にログインするために eqsys というアカウントがあります。Admin UI では、アプリケー ションのアクティビティを管理します。対象となるアクティビティは、クロールするデータ・ソースの 作成、クロールのスケジューリングや監視、クローラと問合せに関する統計の表示、Admin UI で管理お よび監視する構成の一部をリストするためのディレクトリとプロキシ設定の構成などです。状況に応じ て右上隅に「ヘルプ」リンクが表示され、ページにある専門用語を解説します。 グローバル設定は、スレッド数などの項目のデフォルトやデフォルト・キャラクタ・セットの設定に使 用します。デフォルトはクローラ構成で設定されますが、データ・ソースごとにも指定され、各データ・ ソースで変更できます。クロールの実行中に行ったデータ・ソースの変更は、次回クロールが開始され るまで読み込まれません。変更をただちに適用する必要がある場合、実行中のクロールを停止後再開し ます。デフォルトの大部分はクローラ構成に対して適切に事前設定されていますが、そのスレッド数、 キャラクタ・セット、言語などを環境に合わせ変更すると、データ・ソースでの不適切な構成を避ける ことができます。
「グローバル設定」タブの「検索」セクションに、「索引最適化」のリンクがあります。このリンクに より、サーバーの負荷が軽いと思われる場合、スケジュールを実行できます。 4.2 cronjob の作成 - ディスク領域の過剰な消費を防止するログファイルのローテーション ソース・コードについては、付録 C を参照してください。この cronjob は、毎日 1 回実行するように設 定します。 例
4.3 SGA/PGA パラメータの変更
これらのパラメータを増加するには、『クイック・インストレーション・ガイド』に概説する手順に従っ てください。この例では、サーバーの SGA を 2500M に増加しました。
4.4 推奨パッチのインストール(ある場合)
Oracle Secure Enterprise Searchの最新Readmeファイルを、
http://otn.oracle.co.jp/document/products/oses/1016/index.htmlで確認してくださ
い。
5. 監視
Oracle Enterprise Manager Grid Control 10g Release 2 (10.2.0)では、リアルタイム監視、通知、統計データ を提供するために、いくつかの OS レベル・スクリプトを実装しました。 5.1 cronjob の作成 - コンポーネント・スタックの一部が期待どおりに応答しない場合、プロセ スを自動的に再起動 ソース・コードについては付録Bを参照してください。この cronjob は、2 分ごとに実行するように設定 します。 例 */2 * * * * /home/oracle/scripts/check_oc4j.sh >> /home/oracle/scripts/check_oc4j.log 2>&1
5.2 Oracle Enterprise Manager による監視環境を準備
• /etc に oratab というファイルを作成します。このファイルは、Oracle Secure Enterprise Search ソフ トウェアをインストールしたアカウントと同じアカウントで所有します。
• /etc/oratab にエントリを作成して、Oracle Secure Enterprise Search インストールの ORACLE_SID と ORACLE_HOME を反映します。
ses:/disk/oracle_home:N
• Oracle Secure Enterprise Search ソフトウェアとは別の ORACLE_HOME に、Oracle Enterprise Manager エージェント・ソフトウェアをインストールします。詳細は『Oracle Enterprise Manager Installation Guide』を参照してください。
5.3 sqlnet リスナーへの接続を Oracle Enterprise Manager コンソールに許可
• cd $ORACLE_HOME/network/admin
• sqlnet.ora の既存コピーをバックアップ − cp sqlnet.ora sqlnet.ora.orig
例
tcp.invited_nodes=(rmpsmt02.us.oracle.com,127.0.0.1,rgmem1.us.ora cle.com,rgmem2.us.oracle.com)
• リスナー構成をリロードします。 lsnrctl reload
5.4 Oracle Secure Enterprise Search アプリケーションを監視する Oracle Enterprise Manager ターゲットの作成
• dbsnmp データベース・アカウントをアンロックし、パスワードをリセットしてセキュリティ要 件を満たす必要があります。これは、SES サーバーでコマンドラインから実行します。
sqlplus sys/<password> as sysdba
alter user dbsnmp account unlock identified by <newpassword>;
dbsnmp などのデータベース・インストール時に提供されたアカウントをアンロックした場合、そのア カウントは、eqsys に対するパスワードの変更により影響を受けます。eqsys に対するパスワードは Admin UI から簡単に変更でき、サービスを再起動する必要はありません。ただし、アンロックされたア カウントはすべて Admin UI を通じて指定された新しいパスワードにリセットされるため、アンロック した他のアカウントのパスワードをリセットする必要があります。 • その後、新しい dbsnmp パスワードを、SES データベースの EM データベース構成ページで指定 する必要があります。
• 対応する通知ルールを使用し、EM 内で Web アプリケーション・モニターを作成します。
• ホスト/ハードウェアの可用性を監視するため、EM 内でホスト・ターゲットとメトリックを構成 します。
6. バックアップ
アプリケーションのリカバリが必要な場合、SES を再インストール後、メタデータをリストアし、デー タを再クロールしてリカバリします。クローラ・メタデータの夜間エクスポートは、Admin UI から有効 にできます。 メタデータは、ORACLE_HOME のサブディレクトリにエクスポートされ、その後、夜間の/u01 ファイ ルシステム・イメージ・バックアップの一部としてバックアップされます。SES を再インストールする 必要がある場合、または別のサーバーで新しいインストールを実行する場合、メタデータを新しいデー タベースにインポートします。これにより、以前に定義したデータ・ソース、クロール・スケジュール などが再作成されます。その後、クロールを再実行し、データベースを再移入できます。7. セキュアなクロールのセットアップ
セキュアなクロールのためには、viewall 権限を持つアカウントを作成する必要があります。このアカウ ントには、すべての項目にアクセスでき、かつデータ・ソースをクロールするアクセス権が必要です。 OracleAS Portal クロールでは、クローラはページの GUID を取得し、それを使用してエンド・ユーザー に提供する結果を決定します。ユーザーには、ログインしているかどうかに応じて、異なる結果が表示 されます。
Oracle Internet Directory に SES アプリケーションを登録するプロセスは簡単です。「グローバル設定」 タブの「システム」セクションに「ディレクトリ設定」ページがあります。初めてこの構成を実行する 場合は、『管理者ガイド』の記述に従ってデバッグをオンにします。すべてのエラー・メッセージと成 功メッセージの書き込まれるログ・ファイルは、
$ORACLE_HOME/oc4j/j2ee/OC4J_SEARCH/log/oc4j.log にあります。 このページに指定された値をすべて入力してください。
付録 A − cronjob で RAID ディスクを監視する
#/bin/kshfor FILE in /proc/megaraid/*/raiddrives* do
if grep -is degraded $FILE > /dev/null 2>&1 then
logger "WARNING: Error in hardware RAID. Review $FILE and the front panel LCD."
fi done
付録 B − cronjob でプロセスを自動的に再起動する
#!/bin/bash# simple shell script to do basic checking for SES still running # enter appropriate values in the following 2 environment variables export ORACLE_HOME=/disk/oracle_home
export SERVER=hostname.company.com # fully qualified hostname
# If there is only 1 installation on this server, the following values should be correct
export ORACLE_SID=ses export PORT=7777
export HOST=`hostname` export DT=`date +%m%d%y:%T` #---
# Check if this script is already running #---
if [ -f /tmp/check_oc4j.txt ] ; then echo "Monitor still Running - exiting"
/bin/mailx -s "WARNING: SES restart job is still running on ${HOST} : ${DT}. Please investigate" [email protected] < /tmp/check_oc4j.txt exit
fi
echo "oc4j check started at ${DT}" > /tmp/check_oc4j.txt # first check for correct OC4J running
p=`ps -deafww | grep -e "-out
$ORACLE_HOME/oc4j/j2ee/OC4J_SEARCH/log/oc4j.log" | grep -v grep | wc -l` if [[ p -ge 1 ]]
then echo > /dev/null #echo "oc4j is running OK" else echo `date`
echo "OC4J is dead - restarting" $ORACLE_HOME/bin/searchctl restart fi
rm -rf /tmp/check_SES_up_$$ mkdir /tmp/check_SES_up_$$
pushd /tmp/check_SES_up_$$ > /dev/null
wget --timeout 30 --no-host-directories --proxy=off
http://$SERVER:$PORT/search/query/search.jsp 2> /dev/null if [[ -f search.jsp ]]
then echo > /dev/null #echo "Fetched search.jsp OK" else echo `date`
$ORACLE_HOME/bin/searchctl restart
wget --timeout 30 --no-host-directories --proxy=off http://$SERVER:$PORT/search/query/search.jsp
fi
q=`grep "searchQbox" search.jsp | wc -l` if [[ q -ge 1 ]]
then echo > /dev/null # echo "Query Page appears OK" else echo `date`
echo "Problem with query page - restarting SES" $ORACLE_HOME/bin/searchctl restart fi popd > /dev/null rm -rf /tmp/check_SES_up_$$ rm /tmp/check_oc4j.txt ### End ###
付録 C − cronjob でログファイルをローテーションする
#!/bin/sh #### set -x ## Archive current logfiles and remove logs older than 4 days #### Environment – set correct value for ORACLE_HOME
ORACLE_HOME=/disk/oracle_home ; export ORACLE_HOME
ALERT_HOME=${ORACLE_HOME}/admin/ses/bdump ; export ALERT_HOME NETWORK_HOME=${ORACLE_HOME}/network/log ; export NETWORK_HOME J2EE_HOME=${ORACLE_HOME}/oc4j/j2ee/ ; export J2EE_HOME
NEWLIST=/tmp/loglist.txt
DATE=`date +%m%d%y:%T` ; export DATE #### Start Clean
cat /dev/null > $NEWLIST ### find log files
find $ALERT_HOME -type f -name \*log > $NEWLIST find $NETWORK_HOME -type f -name \*log >> $NEWLIST find $J2EE_HOME -type f -name \*log >> $NEWLIST ### For each line in NEWLIST, dev null the file
for FILE in `cat $NEWLIST`
do
cp -p $FILE $FILE.archive.$DATE echo " " > $FILE
done
### Remove old archived logs older than four days
find $ORACLE_HOME -type f -name \*.archive.\* -mtime +4 -exec rm -f {} \; > /dev/null 2>&1
Oracle Secure Enterprise Search 2006 年 5 月
著書: Julie Wilson、Barbara Jones Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話: +1.650.506.7000 ファックス: +1.650.506.7200 www.oracle.com オラクル社は、インターネット上での活動を強化するソフトウェアを提供します。 Oracle はオラクル社の登録商標です。このガイドで使用されているさまざまな製品名およびサー ビス名には、オラクル社の商標が含まれています。その他のすべての製品名およびサービス名は、 各社の商標です。
Copyright © 2006, Oracle Corporation. All rights reserved.