Sun Java logo     上一个      目录      索引      下一个     

Sun logo
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 按以下说明访问后端服务器上的日历数据:

  1. 当 Calendar Express 最终用户访问日历时,CLD 插件先从日历的 calid 中提取 userid,然后在 LDAP 目录数据库中查找日历的属主。
  2. 找到日历的属主后,插件将使用 icsDWPHost LDAP 属性中的值来确定日历所在的后端服务器的主机名。此主机名必须能够被域名服务 (DNS) 解析成有效的 IP 地址。
  3. Calendar Server 使用此主机名和数据库有线协议 (DWP) 访问后端服务器上的日历数据。
  4. Calendar Server 使用 DWP 将日历数据发送到用户登录的服务器,以便可以在某一个用户界面中显示日历数据。

  5. 注意

    如果您的站点正在使用 CLD 插件,则为同一用户创建的所有日历必须在同一个后端服务器上,如 LDAP 用户条目的 icsDWPHost LDAP 属性所示。如果试图在不同的后端服务器上创建日历,Calendar Server 将返回一条错误信息。



CLD 插件的配置

CLD 插件支持以下 Calendar Server 配置:

在这些配置中,每个前端和后端服务器都必须:

多个前端服务器与多个后端服务器

下图显示了正在运行一个 Calendar Server 实例的两个前端服务器和两个后端服务器。如果需要,还可以配置更多的前端服务器或后端服务器。

此配置使服务器可以受到防火墙的保护,以限制对 LDAP 和日历数据库的访问。日历数据库分布在两个后端服务器上。

前端服务器属于 CPU 密集型,大部分 CPU 时间都用于为最终用户呈现日历数据。后端服务器属于磁盘密集型,大部分 CPU 时间用于访问日历数据库。

图 9-1 多个前端服务器与多个后端服务器

用于多个前端服务器和多个后端服务器的 Calendar Server 配置

配置前端服务器

要配置前端服务器,请在每个前端服务器上设置 ics.conf 文件中的以下参数。

  1. 启用日历数据库查找插件:
  2. csapi.plugin.calendarlookup = "y"

  3. 指定 Calendar Server 装入所有插件:
  4. csapi.plugin.calendarlookup.name = "*"

  5. 设置 CLD 插件的日历查找插件的类型:
  6. caldb.cld.type = "directory"

  7. 设置 DWP 服务的端口号 (csdwpd):
  8. service.dwp.port = "59779"

    默认值为 59779。配置的所有前端服务器和后端服务器都必需具有相同的端口号。

  9. 为配置中的每个后端服务器设置服务器名:
  10. 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 属性使用的名称相匹配。

  11. 设置默认的 DWP 服务器名:
  12. caldb.dwp.server.default = "server-name"

    如果 LDAP 服务器数据库中的用户条目或资源条目没有 icsDWPHost 属性,则其中的 server-name 是 Calendar Server 使用的全限定默认服务器名。此名称必须能够被域名服务 (DNS) 解析成有效的 IP 地址。例如:

    caldb.dwp.server.default = "calendar.sesta.com"

  13. 重新启动 Calendar Server 使上述更改生效。

前端服务器的配置参数示例

以下示例显示一个前端服务器与两个后端服务器(名为 calendar.sesta.comcalendar.siroe.com)的配置参数。默认 DWP 服务器是 calendar.sesta.com

代码示例 9-1 前端服务器的 LDAP CLD 配置参数

service.dwp.port = "59779"
csapi.plugin.calendarlookup = "y"
csapi.plugin.calendarlookup.name = "*"
caldb.cld.type = "directory"
! 默认 DWP 服务器
caldb.dwp.server.default = "calendar.sesta.com"
! 后端服务器
caldb.dwp.server.sesta.com.ip = "calendar.sesta.com"
caldb.dwp.server.siroe.com.ip = "calendar.siroe.com"

配置后端服务器

要配置后端服务器,请在每个前端服务器上设置 ics.conf 文件中的以下参数。

  1. 启用 DWP 服务 (csdwpd),并设置 DWP 端口号:
  2. service.dwp.enable = "yes"
    service.dwp.port = "59779"

    默认端口号为 59779。配置的所有前端服务器和后端服务器都必需具有相同的端口号。

  3. 由于后端服务器不需要 HTTP 服务,因此请禁用该服务(应将管理服务设置为默认值 yes):
  4. service.http.enable = "no"
    service.admin.enable = "yes"

  5. 设置 LDAP CLD 插件的日历查找插件的类型:
  6. caldb.cld.type = "local"

  7. 由于后端服务器不需要查找任何日历数据,因此请将 csapi.plugin.calendarlookup 设置为 n
  8. csapi.plugin.calendarlookup = "n"

  9. 重新启动 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 显示了三个前端服务器/后端服务器,其中的每个服务器都连接一个日历数据库。此配置允许将日历分发到不同的地理位置,每个日历都驻留在其属主登录 Calendar Server 的服务器上。

图 9-2 多个前端/后端服务器

多个前端/后端服务器的 Calendar Server 配置

配置前端/后端服务器

要配置前端/后端服务器,请在每个服务器上设置 ics.conf 文件中的以下参数。

  1. 启用 DWP 服务 (csdwpd):
  2. service.dwp.enable = "yes"

  3. 设置 DWP 服务的端口号 (csdwpd):
  4. service.dwp.port = "59779"

    默认值为 59779。配置的所有前端服务器和后端服务器都必需具有相同的端口号。

  5. 启用日历查找插件:
  6. csapi.plugin.calendarlookup = "y"

  7. 指定 Calendar Server 装入所有插件:
  8. csapi.plugin.calendarlookup.name = "*"

  9. 指定 Calendar Server 使用的日历查找插件的类型:
  10. caldb.cld.type = "directory"

  11. 设置默认的 DWP 服务器名:
  12. caldb.dwp.server.default = "server-name"

    如果 LDAP 服务器数据库中的用户条目或资源条目没有 icsDWPHost 属性,则其中的 server-name 是 Calendar Server 使用的全限定默认服务器名。此名称必须能够被域名服务 (DNS) 解析成有效的 IP 地址。例如:

    caldb.dwp.server.default = "calendar.sesta.com"

  13. 为配置中的所有前端/后端服务器(包括本地服务器)设置服务器名:
  14. 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 属性使用的名称相匹配。

  15. 重新启动 Calendar Server 使上述更改生效。

每个前端/后端服务器的配置参数示例

以下示例显示每个前端/后端服务器的配置参数。这些服务器包括 sesta.comsiroe.comvarrius.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"
! 默认 DWP 服务器
caldb.dwp.server.default = "calendar.sesta.com"
! 后端服务器
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"

 


维护前端服务器与后端服务器之间的安全

前端服务器使用数据库有线协议 (DWF) 与后端服务器通信。由于 DWP 使用 HTTP 作为传输机制,因此,Calendar Server 使用表 9-1表 9-2 中的配置参数对前端服务器和后端服务器之间的 DWP 连接进行验证。

这些参数都是可选的,并且默认情况下不包括在 ics.conf 文件中。要使用 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 连接验证,请执行以下操作:

  1. 在每个前端服务器上的 ics.conf 文件中添加以下参数:
  2. caldb.dwp.server.back-end-server.admin = "userid"
    caldb.dwp.server.back-end-server.cred = "password"

    其中,back-end-server 是后端服务器的名称,useridpassword 分别是您希望 Calendar Server 用来验证连接的用户 ID 和密码。

  3. back-end-server 代表的每个后端服务器上的 ics.conf 文件中添加以下参数:
  4. service.dwp.admin.userid = "userid"
    service.dwp.admin.cred = "password"

    其中,useridpassword 与在前端服务器上指定的用户 ID 和密码相同。

当前端服务器首次连接到后端服务器时,它将发送在以上参数中指定的用户 ID 和密码。后端服务器将查这些参数,如果两个参数都匹配,则验证成功。后端服务器然后向前端服务器发送会话 ID。前端服务器在对后端服务器执行的后续 DWP 命令中使用该会话 ID。

来自同一个前端服务器的后续连接不需要再次验证,除非:

如果有多个前端服务器和多个后端服务器,则可以对每个服务器使用相同的用户 ID 和密码。

如果后端服务器不指定用户 ID 和密码,则不执行验证。


改进 CLD 插件的性能

要改进带有 CLD 插件的 Calendar Server 的性能,请确保将以下配置参数设置为 yes(每个参数的默认值):

有关改进性能的更多信息,请参阅第 19 章“优化 Calender Server 的性能”


清除 CLD 缓存

如果正在使用 CLD 缓存选项,更新 ics.conf 参数的服务器名或将日历移至不同的后端服务器后,应清除 CLD 缓存以删除该服务器名。CLD 缓存中的旧条目会导致前端服务器无法正确连接到后端服务器,或导致 Calendar Server 无法找到移动后的日历。

要清除 CLD 缓存,请执行以下操作:

  1. 停止 Calendar Server。
  2. 删除 cal_svr_base/var/opt/SUNWics5/csdb/cld_cache 目录中的所有文件,但不要删除 cld_cache 目录本身。
  3. 重新启动 Calendar Server。


将日历移至不同的后端服务器

要将用户或资源日历从一个后端服务器移至其他后端服务器,请执行以下操作:

  1. 在原始服务器上,使用 csuser 实用程序(用于用户日历)或 csresource 实用程序(用于资源日历)禁用日历用户。例如,禁用用户 ID 和 calid 为 bkamdar 的用户:
  2. csuser disable bkamdar

  3. 在原始服务器上,使用 csexport 实用程序将日历从日历数据库导出到某个文件中。例如:
  4. csexport -c bkamdar calendar bkamdar.ics

    如果用户有多个日历,则必须对每个日历执行此操作。

  5. 将导出的日历文件 (*.ics) 从原始服务器复制到新服务器上。
  6. 在新服务器上,使用 csimport 实用程序将此文件中的日历导入到日历数据库中。例如:
  7. csimport -c bkamdar calendar bkamdar.ics

    同样,必须对导出的每个日历重复执行此操作。

  8. 在 LDAP 目录服务器上,使用 csattribute 实用程序更新日历属主的 icsDWPHost LDAP 属性,以指向新的后端服务器。要更新属性,必须先删除该属性,然后再添加它并为其指定新值。例如,要将新服务器名设置为 sesta.com
  9. csattribute -a icsDWPHost delete bkamdar
    csattribute -a icsDWPHost=sesta.com add bkamdar

  10. 在新服务器上,使用 csuser 实用程序(用于用户日历)或 csresource 实用程序(用于资源日历)启用日历用户。例如:
  11. csuser enable bkamdar

  12. 在新服务器上,使用以下命令验证这些属性是否正确以及是否正确移动了每个日历。例如:
  13. cscal -v -o bkamdar list bkamdar
    ...
    csattribute -v list bkamdar

  14. 在原始服务器上,删除刚刚移动的每个日历。例如:
  15. cscal -o bkamdar delete bkamdar

    -o 选项将删除主要属主为 bkamdar 的所有日历。



上一个      目录      索引      下一个     


版权所有 2004 Sun Microsystems, Inc.。保留所有权利。