Sun Java System Calendar Server 管理ガイド |
第 9 章
カレンダー検索データベースプラグインの設定この章では、カレンダーデータベースを複数のバックエンドサーバーに分散することを可能にするカレンダー検索データベース (CLD) プラグインについて説明します。
この章で説明する内容は次のとおりです。
CLD プラグインの概要カレンダー検索データベース (CLD) プラグインは単一カレンダーインスタンス用の多数のバックエンドサーバーにユーザーカレンダーとリソースカレンダーを分散することによって、カレンダーデータベースの水平方向のスケーラビリティを提供します。複数のバックエンドサーバーにカレンダーデータベースを配布している場合、Calendar Server は CLD プラグインを使用してカレンダーが実際に格納されているサーバーを特定します。
Calendar Server は、ics.conf ファイルの caldb.cld.type パラメータの値に応じてプラグインをロードします。
Calendar Server は、DWP (データベースワイヤプロトコル) を使用してバックエンドサーバー上のカレンダーデータにアクセスします。DWP は csdwpd サービスとして実行される内部プロトコルで、カレンダーデータベースのネットワーク機能を提供します。
CLD プラグインのしくみCalendar Server は、バックエンドサーバー上のカレンダーデータに次のようにアクセスします。
- Calendar Express のエンドユーザーがカレンダーにアクセスすると、CLD プラグインはカレンダーの calid から userid を抽出し、LDAP ディレクトリデータベースでカレンダーの所有者を検索します。
- カレンダーの所有者が特定されると、プラグインはその icsDWPHost LDAP 属性の値を使用してカレンダーが存在するバックエンドサーバーのホスト名を決定します。このホスト名は、DNS (ドメイン名サービス) によって有効な IP アドレスに解決する必要があります。
- Calendar Server は、ホスト名を使用して、DWP (データベースワイヤプロトコル) でバックエンドサーバー上のカレンダーデータにアクセスします。
- Calendar Server は、ユーザーがログインしているサーバーに DWP でカレンダーデータを送信するため、そのデータをユーザーインタフェースで表示できます。
CLD プラグインの設定CLD プラグインは、次の Calendar Server 構成をサポートしています。
これらの設定において、フロントエンドとバックエンドの各サーバーは、次の条件を満たす必要があります。
複数のフロントエンドサーバーと複数のバックエンドサーバー
次の図は、1 つの Calendar Server インスタンスが稼動する 2 つのフロントエンドサーバーと 2 つのバックエンドサーバーを示しています。必要に応じて 3 つ以上のフロントエンドまたはバックエンドサーバーを導入することもできます。
この構成では、サーバーをファイアウォールで保護し、LDAP データベースとカレンダーデータベースへのアクセスを制限することができます。カレンダーデータベースは 2 つのバックエンドサーバーに分散されます。
フロントエンドサーバーは CPU を多用します。ほとんどの CPU 時間は、エンドユーザーへのカレンダーデータの表示に使用されます。バックエンドサーバーはディスクを多用します。ほとんどの CPU 時間は、カレンダーデータベースへのアクセスに使用されます。
図 9-1 複数のフロントエンドサーバーと複数のバックエンドサーバー
フロントエンドサーバーの設定
フロントエンドサーバーを設定するには、各フロントエンドサーバーで ics.conf ファイルの次のパラメータを設定します。
- カレンダーデータベースの検索プラグインを有効にします。
csapi.plugin.calendarlookup = "y"
- Calendar Server がすべてのプラグインをロードするように指定します。
csapi.plugin.calendarlookup.name = "*"
- カレンダー検索プラグインの種類に CLD プラグインを指定します。
caldb.cld.type = "directory"
- DWP サービスのポート番号 (csdwpd) を設定します。
service.dwp.port = "59779"
デフォルトは 59779 です。設定するすべてのフロントエンドサーバーとバックエンドサーバーに同じポート番号を指定する必要があります。
- 各バックエンドサーバーのサーバー名を指定します。
caldb.dwp.server.backend-server-1.ip = "backend-server-1"
caldb.dwp.server.backend-server-2.ip = "backend-server-2"
...
caldb.dwp.server.backend-server-n.ip = "backend-server-n"サーバー名は完全修飾名で指定します。この名前は、DNS (ドメイン名サービス) によって有効な IP アドレスに解決する必要があります。パラメータの各部で同じサーバー名を完全修飾名で指定します。
例 :caldb.dwp.server.calendar.sesta.com.ip = "calendar.sesta.com"
また、サーバー名はカレンダー所有者の icsDWPHost LDAP 属性で使用される名前と一致している必要があります。
- デフォルトの DWP サーバー名を設定します。
caldb.dwp.server.default = "server-name"
server-name は、LDAP サーバーデータベース 内のユーザーエントリまたはリソースエントリが icsDWPHost 属性を持たない場合に使用されるデフォルトサーバーの完全修飾名です。この名前は、DNS (ドメイン名サービス) によって有効な IP アドレスに解決できる必要があります。
例 :caldb.dwp.server.default = "calendar.sesta.com"
- 変更を適用するために Calendar Server を再起動します。
フロントエンドサーバーの設定パラメータの例
次の例は、calendar.sesta.com と calendar.siroe.com という 2 つのバックエンドサーバーを持つフロントエンドサーバーの設定パラメータを示しています。デフォルトの DWP サーバーは calendar.sesta.com です。
コード例 9-1 フロントエンドサーバーの LDAP CLD 設定パラメータ
バックエンドサーバーの設定
バックエンドサーバーを設定するには、各バックエンドサーバーで ics.conf ファイルの次のパラメータを設定します。
- DWP サービスを有効化し (csdwpd)、DWP ポート番号を設定します。
service.dwp.enable = "yes"
service.dwp.port = "59779"
デフォルトのポート番号は 59779 です。設定するすべてのフロントエンドサーバーとバックエンドサーバーに同じポート番号を指定する必要があります。
- バックエンドサーバーでは必要ないので、HTTP サービスを無効にします (管理サービスにはデフォルト値の yes を設定する必要がある)。
service.http.enable = "no"
service.admin.enable = "yes"- カレンダー検索プラグインの種類に LDAP CLD プラグインを指定します。
caldb.cld.type = "local"
- バックエンドサーバーはカレンダーデータの検索を行わないので、csapi.plugin.calendarlookup を n に設定します。
csapi.plugin.calendarlookup = "n"- 変更を適用するために Calendar Server を再起動します。
バックエンドサーバーの設定パラメータの例
次の例は、バックエンドサーバーの設定パラメータを示しています。
コード例 9-2 バックエンドサーバーの LDAP CLD 設定パラメータ
service.dwp.enable = "yes"
service.dwp.port = "59779"
service.http.enable = "no"
service.admin.enable = "yes"
caldb.cld.type = "local"
csapi.plugin.calendarlookup = "n"
複数のフロントエンド / バックエンドサーバーによる構成
図 9-2 は、それぞれが 1 つのカレンダーデータベースに接続された 3 つのフロントエンド / バックエンドサーバーを示しています。この構成では、カレンダーを物理的に分散することができます。各サーバーにはカレンダーが配置され、その所有者が Calendar Server にログインします。
図 9-2 複数のフロントエンド / バックエンドサーバーによる構成
フロントエンド / バックエンドサーバーの設定
フロントエンド / バックエンドサーバーを設定するには、各サーバーで ics.conf ファイルの次のパラメータを設定します。
- DWP サービスを有効化します (csdwpd)。
service.dwp.enable = "yes"
- DWP サービスのポート番号 (csdwpd) を設定します。
service.dwp.port = "59779"
デフォルトは 59779 です。設定するすべてのフロントエンドサーバーとバックエンドサーバーに同じポート番号を指定する必要があります。
- カレンダー検索プラグインを有効にします。
csapi.plugin.calendarlookup = "y"
- Calendar Server がすべてのプラグインをロードするように指定します。
csapi.plugin.calendarlookup.name = "*"
- Calendar Server が使用するカレンダー検索プラグインの種類を指定します。
caldb.cld.type = "directory"
- デフォルトの DWP サーバー名を設定します。
caldb.dwp.server.default = "server-name"
server-name は、LDAP サーバーデータベース内のユーザーエントリまたはリソースエントリが icsDWPHost 属性を持たない場合に使用されるデフォルトサーバーの完全修飾名です。この名前は、DNS (ドメイン名サービス) によって有効な IP アドレスに解決できる必要がある。
例 :caldb.dwp.server.default = "calendar.sesta.com"
- ローカルサーバーを含め、構成に含まれるすべてのフロントエンド / バックエンドサーバーのサーバー名を設定します。
caldb.dwp.server.server-1.ip = "server-1"
caldb.dwp.server.server-2.ip = "server-2"
...
caldb.dwp.server.server-n.ip = "server-n"サーバー名は完全修飾名で指定します。この名前は、DNS (ドメイン名サービス) によって有効な IP アドレスに解決する必要があります。パラメータの各部で同じサーバー名を完全修飾名で指定します。
例 :caldb.dwp.server.calendar.sesta.com.ip = "calendar.sesta.com"
また、サーバー名はカレンダー所有者の icsDWPHost LDAP 属性で使用される名前と一致している必要があります。
- 変更を適用するために Calendar Server を再起動します。
各フロントエンド / バックエンドサーバーの設定パラメータの例
次の例は、フロントエンド / バックエンドサーバーの設定パラメータを示しています。サーバーは sesta.com、siroe.com、varrius.com です。デフォルトの DWP サーバーは sesta.com です。
コード例 9-3 各フロントエンド / バックエンドサーバーの LDAP CLD 設定パラメータ
service.dwp.enable = "yes"
service.dwp.port = "59779"
csapi.plugin.calendarlookup = "y"
csapi.plugin.calendarlookup.name = "*"
caldb.cld.type = "directory"
! Default DWP server
caldb.dwp.server.default = "calendar.sesta.com"
! Back-end servers
caldb.dwp.server.calendar.sesta.com.ip = "calendar.sesta.com"
caldb.dwp.server.calendar.siroe.com.ip = "calendar.siroe.com"
caldb.dwp.server.calendar.varrius.com.ip = "calendar.varrius.com"
フロントエンドサーバーとバックエンドサーバーの間のセキュリティの管理フロントエンドサーバーは DWP (データベースワイヤプロトコル) を使用してバックエンドサーバーと通信します。DWP は転送メカニズムとして HTTP を使用するため、Calendar Server は表 9-1 と表 9-2 に示す設定パラメータを使用して、フロントエンドサーバーとバックエンドサーバーの間の DWP 接続を認証します。
これらのパラメータは省略可能で、デフォルトでは ics.conf 2ファイルに設定されていません。DWP 接続の認証を行う場合は、フロントエンドサーバーとバックエンドサーバーのそれぞれの ics.conf ファイルに必要なパラメータを追加する必要があります。
表 9-1 DWP 接続を認証するためのバックエンド設定パラメータ
パラメータ
説明
service.dwp.admin.userid
バックエンドサーバーで、DWP 接続の認証に使用するユーザー ID を指定する。バックエンドサーバーがユーザー ID を指定しない場合、認証は行われない
service.dwp.admin.cred
バックエンドサーバーで、DWP 接続の認証に使用するパスワードを指定する。バックエンドサーバーがパスワードを指定しない場合、認証は行われない
表 9-2 DWP 接続を認証するためのフロントエンド設定パラメータ
パラメータ
説明
caldb.dwp.server.back-end-server.admin
フロントエンドサーバーで、バックエンドサーバーとの DWP 接続に使用されるユーザー ID を指定する。back-end-server はサーバー名
caldb.dwp.server.back-end-server.cred
フロントエンドサーバーで、バックエンドサーバーとの DWP 接続に使用されるパスワードを指定する。back-end-server はサーバー名
DWP 接続のための認証の設定
フロントエンドサーバーとバックエンドサーバーの間の DWP 接続の認証を設定するには、次の手順を実行します。
- 各フロントエンドサーバーの ics.conf ファイルに次のパラメータを追加します。
caldb.dwp.server.back-end-server.admin = "userid"
caldb.dwp.server.back-end-server.cred = "password"back-end-server はバックエンドサーバーの名前、userid と password は Calendar Server が接続の認証に使用するユーザー ID とパスワードです。
- back-end-server によって指定されるバックエンドサーバーの ics.conf ファイルに次のパラメータを追加します。
service.dwp.admin.userid = "userid"
service.dwp.admin.cred = "password"userid と password は、フロントエンドサーバーで指定したものと同じユーザー ID とパスワードです。
フロントエンドサーバーが最初にバックエンドサーバーに接続したときに、パラメータに指定されたユーザー ID とパスワードが送信されます。バックエンドサーバーはパラメータを調べ、両方のパラメータが一致した場合に接続が認証されます。バックエンドサーバーは、次にセッション ID をフロントエンドサーバーに返します。フロントエンドサーバーは、バックエンドサーバーへの以後の DWP コマンドの送信時にこのセッション ID を使用します。
同じフロントエンドサーバーからの以後の接続では、次の場合を除いて認証の必要はありません。
フロントエンドサーバーとバックエンドサーバーが複数ある場合は、それぞれで同じユーザー ID とパスワードを使用できます。
バックエンドサーバーがパスワードを指定しない場合、認証は行われません。
CLD プラグインのパフォーマンスの向上CLD プラグインを使用する Calendar Server のパフォーマンスを向上するには、次の設定パラメータを yes (各パラメータのデフォルト値) に設定します。
パフォーマンス向上の詳細については、第 19 章「Calendar Server のパフォーマンスの調整」を参照してください。
CLD キャッシュのクリアCLD キャッシュオプションを使用している場合、ics.conf パラメータでサーバー名を変更したり、カレンダーを別のバックエンドサーバーに移動したりしたときは、CLD キャッシュをクリアしてサーバー名を消去する必要があります。CLD キャッシュに古いエントリが残されていると、フロントエンドサーバーが正しいバックエンドサーバーに接続できなくなったり、Calendar Server が移動後のカレンダーを見つけられなくなります。
CLD キャッシュをクリアするには、次の手順を実行します。
別のバックエンドサーバーへのカレンダーの移動あるバックエンドサーバーから別のバックエンドサーバーにユーザーカレンダーまたはリソースカレンダーを移動するには、次の手順を実行します。
- 元のサーバーで、ユーザーカレンダーの場合は csuser ユーティリティ、リソースカレンダーの場合は csresource ユーティリティを実行してカレンダーユーザーを無効にします。たとえば、ユーザー ID と calid が bkamdar のユーザーを無効にするには、次のように実行します。
csuser disable bkamdar
csexport -c bkamdar calendar bkamdar.ics
ユーザーが複数のカレンダーを持っている場合は、カレンダーごとにこの手順を実行します。
- エクスポートしたカレンダーファイル (*.ics) を元のサーバーから新しいサーバーにコピーします。
- 新しいサーバーで、csimport ユーティリティを実行してファイルからカレンダーデータベースにカレンダーをインポートします。
例 :csimport -c bkamdar calendar bkamdar.ics
エクスポートしたそれぞれのカレンダーについてこの手順を繰り返します。
- LDAP ディレクトリサーバーで csattribute ユーティリティを実行し、カレンダー所有者の icsDWPHost LDAP 属性が新しいバックエンドサーバーをポイントするように変更します。属性を変更するには、まず属性を削除し、新しい値を持つ属性を追加します。たとえば、新しいサーバー名を sesta.com に設定するには、次のように実行します。
csattribute -a icsDWPHost delete bkamdar csattribute -a icsDWPHost=sesta.com add bkamdar
- 新しいサーバーで、ユーザーカレンダーの場合は csuser ユーティリティ、リソースカレンダーの場合は csresource ユーティリティを実行してカレンダーユーザーを有効にします。
例 :csuser enable bkamdar
- 新しいサーバーで、次のコマンドを実行して属性が正しく、各カレンダーが正常に移動されていることを確認します。
例 :cscal -v -o bkamdar list bkamdar
...
csattribute -v list bkamdar- 元のサーバーで、移動した各カレンダーを削除します。
例 :cscal -o bkamdar delete bkamdar
-o オプションを指定することで、一次所有者が bkamdar であるすべてのカレンダーが削除されます。