![]() | |
Sun Java System Calendar Server 6 2005Q1 管理指南 |
第 6 章
在多个计算机上配置日历数据库分发本章介绍了如何使用日历查找数据库 (CLD) 插件来将日历数据库分发到多个后端服务器上。
注
对于将功能分布在前端和后端计算机上的 Calendar Server 安装,每一端上的硬件平台都必须相同。
尤其要注意的是:由于 big-endian 与 small-endian 之间互不兼容,所以不能在包含前端和后端计算机的同一 Calendar Server 部署中同时使用 x86 平台计算机和 Sparc 平台计算机。
本章包含以下主题:
有关如何改进 CLD 插件的性能的信息,请参见第 21 章“优化 Calender Server 的性能”。
CLD 插件概述日历查找数据库 (CLD) 插件将用户日历和资源日历分布到某一个日历实例的多个后端服务器上,从而为日历数据库提供了水平可伸缩性。如果日历数据库分布在多个后端服务器上,Calendar Server 将使用 CLD 插件来决定存储日历的具体服务器。
Calendar Server 使用数据库有线协议 (DWP) 来访问后端服务器上的日历数据。DWP 是一个内部协议,作为 csdwpd 服务运行,为日历数据库提供网络连接功能。
CLD 插件的工作原理Calendar Server 按以下说明访问后端服务器上的日历数据:
- 当最终用户通过 Communications Express(或 Calendar Express)访问日历时,CLD 插件先从日历的 calid 中提取 userid,然后在 LDAP 目录数据库或 CLD 数据高速缓存(如果已启用)中查找日历的属主。有关启用 CLD 数据高速缓存的信息和说明,请参见启用 CLD 插件。
- 找到日历的属主后,插件将使用 icsDWPHost LDAP 属性中的值来确定日历所在的后端服务器的主机名。此主机名必须能够被域名服务 (DNS) 解析成有效的 IP 地址。
- Calendar Server 使用此主机名和数据库有线协议 (DWP) 访问后端服务器上的日历数据。
- Calendar Server 使用 DWP 将日历数据发送到用户登录的服务器,以便可以在某一个用户界面中显示日历数据。
CLD 插件支持的配置CLD 插件支持以下 Calendar Server 配置:
多个前端服务器与多个后端服务器
图 6-1 显示了正在运行一个 Calendar Server 实例的两个前端服务器和两个后端服务器。如果需要,还可以配置更多的前端服务器或后端服务器。
此配置使服务器可以受到防火墙的保护,以限制对 LDAP 和日历数据库的访问。日历数据库分布在两个后端服务器上。
前端服务器属于 CPU 密集型,大部分 CPU 时间都用于为最终用户呈现日历数据。后端服务器属于磁盘密集型,大部分 CPU 时间用于访问日历数据库。
有关配置的说明,请参见为 CLD 和 DWP 配置服务器。
图 6-1 多个前端服务器与多个后端服务器
多个同时用作前端服务器和后端服务器的计算机
图 6-2 显示了三个同时用作前端服务器和后端服务器的计算机。每个计算机连接了一个日历数据库。此配置允许将日历分发到不同的地理位置。日历属主(最终用户)将登录到其日历所驻留的计算机上。有关配置的说明,请参见在同一台计算机上同时配置前端服务器和后端服务器。
图 6-2 多个前端 / 后端服务器
启用 CLD 插件为激活和使用 CLD 插件,需要在每个前端服务器上设置若干个 ics.conf 参数:
有关插件如何在 Calendar Server 中工作的信息,请参见《Sun Java System Calendar Server 6 2005Q1 Develope's Guide》中的第 1 章 "Calendar Server API (CSAPI) Overview"。
注
在 Calendar Server 5.1.1 及其更高版本中,CLD 插件的主版本号由 1 更改为 2,次版本号仍然是 0。如果您已经编写好自己的 CLD 插件,则必须确保您的插件的版本号为 2.0 或更高。
csapi.plugin.loadall
当此参数被设置为 "y" 时,将通知系统装入 cal_svr_base/SUNWics5/cal/bin/plugins 目录中前缀为 cs_ 的所有共享对象。如果被设置为 "n",那么您必须使用下两个参数(csapi.plugin.calendarlookup 和 csapi.plugin.calendarlookup.name)来明确通知系统应装入哪些插件。
例如,如果您仅需要装入特定的插件,则对于每个前端服务器,按以下方式设置 ics.conf 文件中的参数:
csapi.plugin.loadall = "n"
csapi.plugin.calendarlookup
当此参数被设置为 "y" 时,将通知系统有一个特定插件需要被装入。您可以通过将此参数设置为 "n" 来通知系统不要装入此插件。
例如,如果您已将 csapi.plugin.loadall 设置为 "n",并且要装入 calendarlookup 插件,则按以下方式设置该参数:
csapi.plugin.calendarlookup = "y"
此参数与下面介绍的 csapi.plugin.calendarlookup.name 参数结合使用。
csapi.plugin.calendarlookup.name
如果您要装入 calendarlookup 插件,则必须按以下方式指定此参数:
csapi.plugin.calendarlookup.name = "calendarlookup"
此参数与 csapi.plugin.calendarplugin 参数结合使用。
有关插件如何工作的更多信息,请参见 Sun Java System Calendar Server Developer's Guide,它位于:
http://docs.sun.com/db/coll/CalendarServer_05q1 和
http://docs.sun.com/db/coll/CalendarServer_05q1_zhcaldb.cld.type
系统根据 ics.conf 文件中的 caldb.cld.type 参数值来决定是否要装入 CLD 插件。以下列出了两个预期值:
例如,要通知日历系统在每个前端服务器上装入 CLD 插件,请按以下方式设置 ics.conf 参数:
caldb.cld.type="directory"
为 CLD 和 DWP 配置服务器本节包含有关配置服务器的说明及以下主题:
为 CLD 和 DWP 配置前端服务器
在每个前端服务器上,设置以下 ics.conf 参数:
- 启用 DWP 服务 (csdwpd):
service.dwp.enable="yes"
- 设置 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"
如果 LDAP 服务器数据库中的用户条目或资源条目没有 icsDWPHost 属性,则其中的 server-name 是 Calendar Server 使用的全限定默认服务器名。此名称必须能够被域名服务 (DNS) 解析成有效的 IP 地址。例如:
caldb.dwp.server.default = "calendar.sesta.com"
- 设置用于验证的 LDAP 主机。
默认值为 "localhost",但是如果您的 LDAP 目录没有安装在与此前端服务器相同的计算机上,则将此参数设置为安装有 LDAP 目录(安装了 Directory Server)的主机名。
local.authldaphost=ldaphost
其中,ldaphost 是安装有您的 LDAP 目录的主机名。
- 设置用于用户首选项的 LDAP 主机。
如果有一个单独的 LDAP 目录用于用户首选项,则将此参数设置为该主机名。否则,它的值应该与 local.authldaphost 的值相同。默认值为 "localhost"。
local.ugladaphost="ldaphost"
其中,"ldaphost" 是安装有您的 LDAP 目录的主机名。
- 禁用事件通知服务 (enpd):
service.ens.enable="no"
- 禁用日历数据库服务器报警:
caldb.serveralarms="0"
caaldb.serveralarms.dispatch="no"- 禁用通知服务:
service.notify.enable="no"
- 禁用自动备份服务:
caldb.berkeleydb.archive.enable="no"
caldb.berkeleydb.hotbackup.enable="no"- 重新启动 Calendar Server 使上述更改生效:
cal_svr_base/SUNWics5/cal/sbin/start-cal
为 CLD 和 DWP 配置后端服务器
在每个后端服务器上,设置以下 ics.conf 参数:
要配置后端服务器,请在每个后端服务器上设置 ics.conf 文件中的以下参数。
- 启用 DWP 服务 (csdwpd)。
默认值为 "no"(已禁用)。
service.dwp.enable = "yes"
- 设置 DWP 端口号。
默认端口号为 "59779"。配置的所有前端服务器和后端服务器都必须具有相同的端口号。
service.dwp.port = "59779"
- 禁用 HTTP 服务,因为后端服务器上不需要该服务。
service.http.enable = "no"
- 确保 service.admin.enable 被设置为默认值 "yes"。
service.admin.enable = "yes"
- 设置日历查找类型以使用插件:
默认值为 "local"(无 CLD)。
caldb.cld.type = "directory"
- 由于后端服务器不需要执行任何日历数据查找,因此请将 csapi.plugin.calendarlookup 设置为 "n":
csapi.plugin.calendarlookup = "n"
- 设置用于验证的 LDAP 主机。
默认值为 "localhost",但是如果您的 LDAP 目录没有安装在与此后端服务器相同的计算机上,则将此参数设置为安装了 LDAP 目录(安装了 Directory Server)的主机名。
local.authldaphost=ldaphost
其中,ldaphost 是安装有您的 LDAP 目录的主机名。
- 设置用于用户首选项的 LDAP 主机。
如果有一个单独的 LDAP 目录用于用户首选项,则将此参数设置为该主机名。否则,它的值应该与 local.authldaphost 的值相同。默认值为 "localhost"。
local.ugladaphost="ldaphost"
其中,"ldaphost" 是安装有您的 LDAP 目录的主机名。
- 重新启动 Calendar Server 使上述更改生效。
在同一台计算机上同时配置前端服务器和后端服务器
在每台计算机上,按以下所述编辑 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"
如果 LDAP 服务器数据库中的用户条目或资源条目没有 icsDWPHost 属性,则其中的 server-name 是 Calendar Server 使用的全限定默认服务器名。此名称必须能够被域名服务 (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 属性使用的名称相匹配。
- 启用事件通知服务 (enpd):
service.ens.enable="yes"
- 启用日历数据库服务器报警:
caldb.serveralarms="1"
caaldb.serveralarms.dispatch="yes"- 设置用于验证的 LDAP 主机。
默认值为 "localhost",但是如果您的 LDAP 目录没有安装在与此前端服务器相同的计算机上,则将此参数设置为安装有 LDAP 目录(安装了 Directory Server)的主机名。
local.authldaphost=ldaphost
其中,ldaphost 是安装有您的 LDAP 目录的主机名。
- 设置用于用户首选项的 LDAP 主机。
如果有一个单独的 LDAP 目录用于用户首选项,则将此参数设置为该主机名。否则,它的值应该与 local.authldaphost 的值相同。默认值为 "localhost"。
local.ugladaphost="ldaphost"
其中,"ldaphost" 是安装有您的 LDAP 目录的主机名。
- 重新启动 Calendar Server 使上述更改生效。
维护前端服务器与后端服务器之间的安全您可以配置前端服务器和后端服务器之间的密码验证。本节介绍了这两种服务器之间的安全通信的设置方法及其工作原理。本节包含以下主题:
完成验证的方法
前端服务器使用数据库有线协议 (DWP) 与后端服务器通信。由于 DWP 使用 HTTP 作为传输机制,因此,Calendar Server 使用表 6-1 和表 6-2 中的配置参数对前端服务器和后端服务器之间的 DWP 连接进行验证。
这些参数都是可选的,并且默认情况下不包括在 ics.conf 文件中。要使用 DWP 连接验证,必须在每个前端服务器和后端服务器上将所需的参数添加到 ics.conf 文件中。
表 6-1 用于 DWP 连接验证的后端配置参数
参数
说明
service.dwp.admin.userid
在后端服务器上,指定用来验证 DWP 连接的用户 ID。如果后端服务器不指定用户 ID,则不执行验证。
service.dwp.admin.cred
在后端服务上,指定用来对 DWP 连接进行验证的密码。如果后端服务器不指定密码,则不执行验证。
当前端服务器首次连接至后端服务器时,它将发送由以上参数指定的用户 ID 和密码。后端服务器将对参数进行检查,如果这两个参数都匹配,则验证成功。后端服务器然后向前端服务器发送会话 ID。前端服务器在对后端服务器执行的后续 DWP 命令中使用该会话 ID。
来自同一个前端服务器的后续连接不需要再次验证,除非重新启动了后端服务器或者由于两个服务器之间没有活动而导致该会话过期。
如果有多个前端服务器和多个后端服务器,则可以对每个服务器使用相同的用户 ID 和密码。
如果后端服务器不指定用户 ID 和密码,则不执行验证。
设置 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 和密码相同。