Sun Java System Calendar Server 管理指南 |
第 9 章
配置行事曆查找資料庫 Plug-in本章說明可讓行事曆資料庫分布在多台後端伺服器上的行事曆查找資料庫 (CLD) Plug-in。
本章包含以下主題:
CLD Plug -in 簡介行事曆查找資料庫 (CLD) Plug-in 允許在多台後端伺服器上為單一行事曆實例分布使用者行事曆和資源行事曆,從而提供行事曆資料庫的水平可延伸性。如果行事曆資料庫分布在數台後端伺服器上,Calendar Server 會使用 CLD Plug-in 來確定實際儲存行事曆的伺服器。
Calendar Server 根據 ics.conf 檔案中 caldb.cld.type 參數的值載入該 Plug-in:
Calendar Server 可使用資料庫連線協定 (DWP) 存取後端伺服器上的行事曆資料。DWP 是一個內部協定,它會以 csdwpd 服務的形式來執行,並為行事曆資料庫提供網路功能。
CLD Plug-in 如何運作Calendar Server 會按照如下說明存取後端伺服器上的行事曆資料:
- 當 Calendar Express 一般使用者存取行事曆時,CLD Plug-in 會從行事曆的 calid 中擷取 userid,然後在 LDAP 目錄資料庫中查找行事曆所有者。
- 找到行事曆所有者之後,該 Plug-in 會使用 icsDWPHost LDAP 屬性中的值確定行事曆所在的後端伺服器之主機名稱。該主機名稱必須可被您的網域名稱服務 (DNS) 解析成有效的 IP 位址。
- 使用主機名稱,Calendar Server 可使用資料庫連線協定 (DWP) 存取後端伺服器上的行事曆資料。
- 使用 DWP,Calendar Server 可將行事曆資料傳送至使用者登入的伺服器,以使其可在其中一個使用者介面中被描繪。
用於 CLD Plug-in 的配置CLD Plug-in 支援以下 Calendar Server 配置:
在這些配置中,每台前端伺服器和後端伺服器都必須:
多台前端伺服器與多台後端伺服器
下圖顯示執行單一 Calendar Server 實例的兩台前端伺服器和兩台後端伺服器。如果願意,您還可以配置兩台以上的前端或後端伺服器。
此配置可讓伺服器受到防火牆的保護,以限制對 LDAP 和行事曆資料庫的存取。行事曆資料庫分布在兩台後端伺服器上。
前端伺服器的 CPU 使用率很高,CPU 大部分時間都用於描繪一般使用者的行事曆資料。後端伺服器的磁碟使用率很高,CPU 大部分時間都用於存取行事曆資料庫。
圖 9-1 多台前端伺服器與多台後端伺服器
配置前端伺服器
若要配置前端伺服器,請在每台前端伺服器上的 ics.conf 檔案中設定以下參數。
- 啟用行事曆資料庫查找 Plug-in:
csapi.plugin.calendarlookup = "y"
- 指定 Calendar Server 載入所有 Plug-in:
csapi.plugin.calendarlookup.name = "*"
- 設定用於 CLD Plug-in 的行事曆查找 Plug-in 類型:
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 是 Calendar Server 所使用的完全合格的預設伺服器名稱 (如果在 LDAP 伺服器資料庫中的使用者或資源項目沒有 icsDWPHost 屬性)。該名稱必須可被您的網域名稱服務 (DNS) 解析成有效的 IP 位址。例如:
caldb.dwp.server.default = "calendar.sesta.com"
- 重新啟動 Calendar Server 以使變更生效。
用於前端伺服器的範例配置參數
以下範例顯示用於一台前端伺服器與兩台後端伺服器 (名為 calendar.sesta.com 和 calendar.siroe.com) 的配置參數。預設 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 Plug-in 的行事曆查找 Plug-in 類型:
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 顯示三台前端/後端伺服器,每台伺服器都連線至行事曆資料庫。此配置可讓行事曆分布在不同的地理區域,各行事曆位於其所有者登入 Calendar Server 時所在的伺服器上。
圖 9-2 多台前端/後端伺服器
配置前端/後端伺服器
若要配置前端/後端伺服器,請在每台伺服器上的 ics.conf 檔案中設定以下參數。
- 啟用 DWP 服務 (csdwpd):
service.dwp.enable = "yes"
- 設定 DWP 服務 (csdwpd) 的連接埠號:
service.dwp.port = "59779"
預設為 "59779"。所有已配置的前端和後端伺服器的連接埠號必須相同。
- 啟用行事曆查找 Plug-in:
csapi.plugin.calendarlookup = "y"
- 讓 Calendar Server 載入所有 Plug-in:
csapi.plugin.calendarlookup.name = "*"
- 指定 Calendar Server 應使用的行事曆查找 Plug-in 類型:
caldb.cld.type = "directory"
- 設定預設 DWP 伺服器名稱:
caldb.dwp.server.default = "server-name"
其中 server-name 是 Calendar Server 所使用的完全合格的預設伺服器名稱 (如果在 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"
! 預設 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"
維護前端和後端伺服器之間的安全前端伺服器使用資料庫連線協定 (DWP) 與後端伺服器進行通訊。由於 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 連線的認證,請執行以下步驟:
- 在每台前端伺服器上的 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 和密碼。
如果後端伺服器未指定使用者 ID 和密碼,則不會執行認證。
提昇 CLD Plug-in 的效能若要提昇 Calendar Server 與 CLD Plug-in 配合的效能,請務必將以下配置參數均設定為 yes (即每個參數的預設值):
如需有關提昇效能的更多資訊,請參閱第 19 章 「調校 Calender Server 效能」。
清除 CLD 快取記憶體如果您要使用 CLD 快取記憶體選項並已更新 ics.conf 參數的伺服器名稱或已將行事曆移至其他後端伺服器,則應清除 CLD 快取記憶體,以移除伺服器名稱。CLD 快取記憶體中的過期項目會妨礙前端伺服器建立與正確後端伺服器之間的連線,或會導致某個行事曆在被移動後,Calendar Server 無法找到該行事曆。
若要清除 CLD 快取記憶體,請執行以下步驟:
將行事曆移至其他後端伺服器若要將使用者行事曆或資源行事曆從一台後端伺服器移至另一台後端伺服器,請執行以下步驟:
- 在原始伺服器上,使用 csuser 公用程式 (用於使用者行事曆) 或 csresource 公用程式 (用於資源行事曆) 停用行事曆使用者。例如,停用使用者 ID 和 calid 為 bkamdar 的使用者:
csuser disable bkamdar
- 在原始伺服器上,使用 csexport 公用程式將行事曆從行事曆資料庫匯出至檔案。例如:
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 的所有行事曆。