有关负载平衡和客户端相似性的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的第 16 章 “Directory Proxy Server Load Balancing and Client Affinity”。本章包含以下主题:
有关负载平衡的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Load Balancing”。本部分介绍如何配置负载平衡,并提供了样例配置。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
通过查看 LDAP 数据源池的属性获取当前的负载平衡算法。
$ dpconf get-ldap-data-source-pool-prop -h host -p port pool-name |
LDAP 数据源池的默认属性如下所示:
client-affinity-policy : write-affinity-after-write client-affinity-timeout : 20s description : - enable-client-affinity : false load-balancing-algorithm : proportional |
默认情况下,负载平衡算法为 proportional(比例)。
将 LDAP 数据源池配置为使用某种算法。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ load-balancing-algorithm:selected-algorithm |
其中 selected-algorithm 可为以下任一选项:
故障转移
操作相似性
比例
饱和度
有关算法的详细信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Introduction to Load Balancing”。
重新启动目录代理服务器实例。
$ dpadm restart instance-path |
对于连接到数据源池的某个数据源,其权重需要相对于连接到数据源池的任何其他数据源的权重进行配置。请考虑所有连接数据源的权重。对于某一类型的操作,如果数据源的权重为已禁用,则始终不会将此类型的请求发送到该数据源。如果数据源的权重为 0(零),则不会将任何请求分发到该数据源。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
查看已连接到数据源池的数据源的列表。
$ dpconf list-attached-ldap-data-sources -h host -p port pool-name |
查看某个连接数据源的属性。
$ dpconf get-attached-ldap-data-source-prop pool-name \ attached-data-source-name |
连接数据源的属性可定义每种操作类型的权重。连接数据源的默认权重如下所示:
add-weight : disabled bind-weight : disabled compare-weight : disabled delete-weight : disabled modify-dn-weight : disabled modify-weight : disabled search-weight : disabled |
配置其中一个连接数据源的权重。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name \ attached-data-source-name add-weight:value \ bind-weight:value compare-weight:value delete-weight:value \ modify-dn-weight:value modify-weight:value search-weight:value |
比较连接数据源的主要参数。
$ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name |
例如,数据源池可以包含具有以下权重的数据源:
$ dpconf list-attached-ldap-data-sources -h host1 -p 1389 -v myPool SRC_NAME add-weight bind-weight compare-weight delete-weight -------- ---------- ----------- -------------- ------------- DS-1 disabled 3 disabled disabled DS-2 2 2 2 2 DS-3 1 1 1 1 modify-dn-weight modify-weight search-weight ---------------- ------------- ------------- disabled disabled disabled 2 2 2 1 1 1 |
有关比例算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Proportional Algorithm for Load Balancing”。
在此示例中,为数据源 ds–1 配置的权重是其他两个数据源权重的两倍。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图。
将数据源池配置为使用负载平衡的比例算法。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ load-balancing-algorithm:proportional |
配置第一个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \ add-weight:2 bind-weight:2 compare-weight:2 delete-weight:2 modify-dn-weight:2 \ modify-weight:2 search-weight:2 |
配置第二个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \ add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:1 |
配置第三个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \ add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:1 |
比较连接数据源的主要参数。
$ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name SRC_NAME add-weight bind-weight compare-weight delete-weight -------- ---------- ----------- -------------- ------------- ds-1 2 2 2 2 ds-2 1 1 1 1 ds-3 1 1 1 1 modify-dn-weight modify-weight search-weight ---------------- ------------- ------------- 2 2 2 1 1 1 1 1 1 |
重新启动目录代理服务器实例。
$ dpadm restart instance-path |
有关饱和度算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Saturation Algorithm for Load Balancing”。
在此示例中,数据源 ds-1 执行大多数绑定操作,但不执行任何其他类型的操作。对三个数据源的权重进行如下配置:
将 ds-1 的权重配置为 3(对于绑定操作)和“已禁用”(对于所有其他类型的操作)。
将 ds-2 的权重配置为 2(对于所有操作)。
将 ds-3 的权重配置为 1(对于所有操作)。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图。
将数据源池配置为使用负载平衡的饱和度算法。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ load-balancing-algorithm:saturation |
配置第一个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \ add-weight:disabled bind-weight:3 compare-weight:disabled delete-weight:disabled \ modify-dn-weight:disabled modify-weight:disabled search-weight:disabled |
配置第二个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \ add-weight:2 bind-weight:2 compare-weight:2 delete-weight:2 modify-dn-weight:2 \ modify-weight:2 search-weight:2 |
配置第三个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \ add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:1 |
比较连接数据源的主要参数。
$ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name SRC_NAME add-weight bind-weight compare-weight delete-weight -------- ---------- ----------- -------------- ------------- ds-1 disabled 3 disabled disabled ds-2 2 2 2 2 ds-3 1 1 1 1 modify-dn-weight modify-weight search-weight ---------------- ------------- ------------- disabled disabled disabled 2 2 2 1 1 1 |
重新启动目录代理服务器实例。
$ dpadm restart instance-path |
有关此算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Operational Affinity Algorithm for Global Account Lockout”。
此示例具有三个数据源。数据源 ds-1 被配置为接收所有绑定请求。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图。
将数据源池配置为使用操作相似性算法。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ load-balancing-algorithm:operational-affinity |
配置第一个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \ add-weight:1 bind-weight:100 compare-weight:1 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:1 |
配置第二个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \ add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:1 |
配置第三个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \ add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:1 |
比较连接数据源的主要参数。
$ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name SRC_NAME add-weight bind-weight compare-weight delete-weight -------- ---------- ----------- -------------- ------------- ds-1 1 100 1 1 ds-2 1 1 1 1 ds-3 1 1 1 1 modify-dn-weight modify-weight search-weight ---------------- ------------- ------------- 1 1 1 1 1 1 1 1 1 |
重新启动目录代理服务器实例。
$ dpadm restart instance-path |
有关此算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Operational Affinity Algorithm for Cache Optimization”。
此示例具有三个数据源。数据源 ds-1 处理所有搜索和比较操作。当 ds-1 响应请求时,目标条目将被存储到缓存中。如果 ds-1 重复响应同一请求,数据源可以使用缓存的数据。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图。
将数据源池配置为使用操作相似性算法。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ load-balancing-algorithm:operational-affinity |
配置第一个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \ add-weight:1 bind-weight:1 compare-weight:100 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:100 |
配置第二个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \ add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:1 |
配置第三个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \ add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:1 |
比较连接数据源的主要参数。
$ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name SRC_NAME add-weight bind-weight compare-weight delete-weight -------- ---------- ----------- -------------- ------------- ds-1 1 1 100 1 ds-2 1 1 1 1 ds-3 1 1 1 1 modify-dn-weight modify-weight search-weight ---------------- ------------- ------------- 1 1 100 1 1 1 1 1 1 |
重新启动目录代理服务器实例。
$ dpadm restart instance-path |
有关故障转移算法的描述,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Failover Algorithm for Load Balancing”。
此示例具有三个数据源。数据源 ds-1 接收所有请求。如果 ds-1 出现故障,ds-2 将接收所有请求,直到 ds-1 恢复为止。如果 ds-2 在 ds-1 恢复之前出现故障,ds-3 将接收所有请求。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
请确保您的数据源池至少包含三个连接数据源。有关如何创建数据源和数据源池的信息, 请参见创建 LDAP 数据视图。
将数据源池配置为使用负载平衡的故障转移算法。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ load-balancing-algorithm:failover |
配置第一个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-1 \ add-weight:3 bind-weight:3 compare-weight:3 delete-weight:3 modify-dn-weight:3 \ modify-weight:3 search-weight:3 |
配置第二个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-2 \ add-weight:2 bind-weight:2 compare-weight:2 delete-weight:2 modify-dn-weight:2 \ modify-weight:2 search-weight:2 |
配置第三个数据源的属性。
$ dpconf set-attached-ldap-data-source-prop -h host -p port pool-name ds-3 \ add-weight:1 bind-weight:1 compare-weight:1 delete-weight:1 modify-dn-weight:1 \ modify-weight:1 search-weight:1 |
比较连接数据源的主要参数。
$ dpconf list-attached-ldap-data-sources -h host -p port -v pool-name SRC_NAME add-weight bind-weight compare-weight delete-weight -------- ---------- ----------- -------------- ------------- ds-1 3 3 3 3 ds-2 2 2 2 2 ds-3 1 1 1 1 modify-dn-weight modify-weight search-weight ---------------- ------------- ------------- 3 3 3 2 2 2 1 1 1 |
重新启动目录代理服务器实例。
$ dpadm restart instance-path |
一个简单的负载平衡案例就是将搜索和比较操作发送到一组目录,而将其他操作发送到另一组目录。目录代理服务器接收所有客户端操作。服务器必须确定哪组目录获取读取操作,哪组目录获取其他操作。
配置目录代理服务器以处理此负载平衡方案的重要阶段如下所示。
将目录添加为目录代理服务器的数据源。
将数据源添加到数据源池中。
将某些数据源配置为接受搜索和比较操作,而将其他数据源配置为接受添加、绑定、删除、修改以及修改 DN 操作。
将数据源池添加到数据视图中。
下面的示例使用侦听端口 9389 的目录代理服务器。此处按上述方式将代理配置为在一个目录服务器实例 ds1:1389(用于处理搜索和比较操作)和另一个目录服务器实例 ds2:2389(用于处理其他操作)之间平衡负载。
第一步是创建并启用数据源。此步骤需要重新启动代理服务器。
$ dpconf create-ldap-data-source -p 9389 ds1 localhost:1389 $ dpconf create-ldap-data-source -p 9389 ds2 localhost:2389 $ dpconf set-ldap-data-source-prop -p 9389 ds1 is-enabled:true $ dpconf set-ldap-data-source-prop -p 9389 ds2 is-enabled:true $ dpadm restart /local/dps |
第二步是将数据源添加到数据源池中。
$ dpconf create-ldap-data-source-pool -p 9389 "Directory Pool" $ dpconf attach-ldap-data-source -p 9389 "Directory Pool" ds1 ds2 |
第三步是将 ds1 配置为接受搜索和比较操作,而将 ds2 配置为接受其他操作。
$ dpconf set-attached-ldap-data-source-prop -p 9389 "Directory Pool" ds1 \ add-weight:disabled bind-weight:disabled compare-weight:1 delete-weight:disabled \ modify-dn-weight:disabled modify-weight:disabled search-weight:1 $ dpconf set-attached-ldap-data-source-prop -p 9389 "Directory Pool" ds2 \ add-weight:1 bind-weight:1 compare-weight:disabled delete-weight:1 \ modify-dn-weight:1 modify-weight:1 search-weight:disabled |
第四步是将数据源池添加到数据视图中,以便将客户端应用程序请求路由到该池。
$ dpconf create-ldap-data-view -p 9389 "Balanced View" "Directory Pool" \ dc=example,dc=com |
客户端相似性可以降低负载平衡部署中的传播延迟风险。有关客户端相似性的信息,请参见《Sun Java System Directory Server Enterprise Edition 6.3 Reference》中的“Client Affinity”。本部分介绍如何配置客户端连接和数据源之间的相似性,并提供了样例配置。
此过程介绍如何配置客户端连接和数据源之间的相似性。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
通过查看数据源池属性来查看当前的负载平衡算法。
$ dpconf get-ldap-data-source-pool-prop -h host -p port pool-name |
数据源池的默认属性如下所示:
client-affinity-policy : write-affinity-after-write client-affinity-timeout : 20s description : - enable-client-affinity : false load-balancing-algorithm : proportional |
可使用以下参数配置客户端相似性:client-affinity-policy 、client-affinity-timeout 和 enable-client-affinity。要获取有关属性的描述及其有效值列表,请键入:
dpconf help-properties ldap-data-source-pool client-affinity-policy \ client-affinity-timeout enable-client-affinity |
有关属性的详细信息,请参见以下手册页:client-affinity-policy(5dpconf)、client-affinity-timeout(5dpconf) 和 enable-client-affinity(5dpconf)。
启用客户端相似性。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ enable-client-affinity:true |
选择客户端相似性的策略。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ client-affinity-policy:selected-policy |
其中 selected-policy 可为以下任一选项:
第一个写入请求之后的写入请求的相似性
第一个写入请求之后的所有请求的相似性
第一个读取请求或写入请求之后的所有请求的相似性
写入请求之后的第一个读取请求的相似性
配置客户端相似性的持续时间。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ client-affinity-timeout:time-out[unit] |
超时时间的默认单位为毫秒。
本部分包含与客户端相似性有关的示例配置, 并包含复制延迟、验证写入操作和基于连接的路由的示例。
此过程为第一个写入操作之后 3 秒内发生的所有读取和写入操作配置客户端相似性。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
配置数据源池的相似性参数。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ client-affinity-policy:read-write-affinity-after-write client-affinity-timeout:3000 \ enable-client-affinity:true |
此过程用于为每个写入操作后的第一个读取操作配置客户端相似性。此示例可用于特定应用程序,在该应用程序中,指定的绑定 DN 通过执行读取操作来验证每个写入操作。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
配置数据源池的相似性参数。
$ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \ client-affinity-policy:read-affinity-after-write enable-client-affinity:true |
在 Directory Proxy Server 6.0 之前的版本中,将在客户端和 LDAP 服务器之间打开一个连接。来自客户端的所有请求都使用同一连接,直到该连接关闭为止。此类型的路由称为基于连接的路由。此过程介绍如何为基于连接的路由配置客户端相似性。
可使用 DSCC 执行此任务。有关信息,请参见目录服务控制中心界面和 DSCC 联机帮助。
请确保将所有数据源都连接到数据源池,并且将 client-cred-mode 设置为 use-client-identity。