15.4. 级联复制

在级联复制方案中 一个服务器同时充当消费者和供应商。它包含一个只读副本和维护更改日志,因此它会从包含数据的供应商副本的供应商服务器接收更新,并为消费者提供这些更新。使用级联复制来平衡重重流量负载,或者在地理分布式环境中将供应商服务器保持在本地。
下图显示了一个简单的级联复制场景:

图 15.4. 级联复制

级联复制
注意
可以组合使用 multi-supplier 和 cascading 复制。
使用命令行或 Web 控制台来设置级联复制拓扑。请参阅:

15.4.1. 使用命令行设置 Cascading 复制

以下示例假定您已在名为 vendor. example.com 的主机上运行现有的 Directory 服务器实例。以下流程描述了如何将名为 hub. example.com 的 hub 添加到从 dc=example,dc=com 后缀的供应商接收更新的拓扑中。因此,该流程描述了添加名为 consumer.example.com 的消费者,该消费者从 hub 服务器接收后缀的更新。

准备新的 Hub 服务器以加入

hub.example.com 主机上:
  1. 安装目录服务器并创建实例。详情请查看 红帽目录服务器 安装指南
  2. 如果您在没有数据库的情况下创建实例,请为后缀创建数据库。例如,要为 dc=example,dc=com 后缀创建一个名为 userRoot 的数据库:
    # dsconf -D "cn=Directory Manager" ldap://hub.example.com backend \
        create --suffix="dc=example,dc=com" --be-name="userRoot"
    有关为后缀创建数据库的详情,请参考 第 2.1.1 节 “创建后缀”
  3. 为后缀启用复制并创建复制管理器帐户:
    # dsconf -D "cn=Directory Manager" ldap://hub.example.com replication \
        enable --suffix="dc=example,dc=com" --role="hub" \
        --bind-dn="cn=replication manager,cn=config" --bind-passwd="password"
    此命令将 hub.example.com 主机配置为 dc=example,dc=com 后缀的中心。另外,服务器使用指定密码创建 cn=replication managercn=config 用户,并允许此帐户将后缀的更改复制到此主机上。

将现有服务器配置为独立服务器

在 provider .example.com 主机上:
  1. 与您在新 hub 服务器中运行的命令类似,加入 “准备新的 Hub 服务器以加入”一节,为 dc=example,dc=com 后缀启用复制,并创建复制管理器帐户:
    # dsconf -D "cn=Directory Manager" ldap://supplier1.example.com replication \
        enable --suffix="dc=example,dc=com" --role="supplier" --replica-id=1 \
        --bind-dn="cn=replication manager,cn=config" --bind-passwd="password"
    重要
    对于拓扑中的所有供应商,副本 ID 必须是 165534 之间的唯一整数。
    复制管理器帐户可以使用与 hub 上创建相同的 DN。
  2. 添加复制协议并初始化 hub。例如:
    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt \
         create --suffix="dc=example,dc=com" --host="hub.example.com" --port=636 \
         --conn-protocol=LDAPS --bind-dn="cn=replication manager,cn=config" \
         --bind-passwd="password" --bind-method=SIMPLE --init \
         example-agreement-supplier-to-hub
    此命令创建一个名为 example-agreement-supplier-to-hub 的复制协议。复制协议定义了设置,如 hub 的主机名、协议和身份验证信息,这些设置在将数据连接到 hub 时使用的供应商。
    创建协议后,Directory 服务器会初始化 hub。要稍后初始化 hub,请省略 --init 选项。请注意,在初始化消费者前复制不会启动。有关初始化消费者的详情,请参考 第 15.8.3 节 “初始化消费者”
    有关命令中使用的选项的详情,请输入:
    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt --help
  3. 验证初始化是否成功:
    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com repl-agmt \
         init-status --suffix="dc=example,dc=com" example-agreement-supplier-to-hub
    Agreement successfully initialized.
    根据要复制的数据量,初始化可能会非常耗时。

准备新的消费者以加入

consumer.example.com 主机上:
  1. 安装目录服务器并创建实例。详情请查看 红帽目录服务器 安装指南
  2. 如果您在没有数据库的情况下创建实例,请为后缀创建数据库。例如,要为 dc=example,dc=com 后缀创建一个名为 userRoot 的数据库:
    # dsconf -D "cn=Directory Manager" ldap://hub.example.com backend \
        create --suffix="dc=example,dc=com" --be-name="userRoot"
    有关为后缀创建数据库的详情,请参考 第 2.1.1 节 “创建后缀”
  3. 为后缀启用复制并创建复制管理器帐户:
    # dsconf -D "cn=Directory Manager" ldap://consumer.example.com replication \
        enable --suffix="dc=example,dc=com" --role="consumer" \
        --bind-dn="cn=replication manager,cn=config" --bind-passwd="password"
    此命令将 consumer.example.com 主机配置为 dc=example,dc=com 后缀的消费者。另外,服务器使用指定密码创建 cn=replication managercn=config 用户,并允许此帐户将后缀的更改复制到此主机上。

将 Hub 配置为 Consumer 的叶

hub.example.com 主机上:
  1. 添加复制协议并初始化服务器。例如:
    # dsconf -D "cn=Directory Manager" ldap://hub.example.com repl-agmt \
         create --suffix="dc=example,dc=com" --host="consumer.example.com" --port=636 \
         --conn-protocol=LDAPS --bind-dn="cn=replication manager,cn=config" \
         --bind-passwd="password" --bind-method=SIMPLE --init \
         example-agreement-hub-to-consumer
    创建协议后,目录服务器会初始化消费者。要稍后初始化使用者,请省略 --init 选项。
  2. 验证初始化是否成功:
    # dsconf -D "cn=Directory Manager" ldap://hub.example.com repl-agmt \
         init-status --suffix="dc=example,dc=com" example-agreement-hub-to-consumer
    Agreement successfully initialized.
    根据要复制的数据量,初始化可能会非常耗时。

15.4.2. 使用 Web 控制台设置 Cascading 复制

以下示例假定您已在名为 vendor. example.com 的主机上运行现有的 Directory 服务器实例。以下流程描述了如何将名为 hub. example.com 的 hub 添加到从 dc=example,dc=com 后缀的供应商接收更新的拓扑中。因此,该流程描述了添加名为 consumer.example.com 的消费者,该消费者从 hub 服务器接收后缀的更新。

准备新的 Hub 服务器以加入

hub.example.com 主机上:
  1. 安装目录服务器并创建实例。详情请查看 红帽目录服务器 安装指南
  2. 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”
  3. 选择实例。
  4. 如果您在没有数据库的情况下创建实例,请为后缀创建数据库。有关为后缀创建数据库的详情,请参考 第 2.1.1 节 “创建后缀”
  5. 为后缀启用复制:
    1. 打开 Replication 菜单。
    2. 选择 dc=example,dc=com 后缀,再点 Enable Replication
    3. Replication Role 字段中选择 Hub,并输入要创建的复制管理器帐户的 DN 和密码。例如:
      这些设置将 hub.example.com 主机配置为 dc=example,dc=com 后缀的中心。另外,服务器使用指定密码创建 cn=replication managercn=config 用户,并允许此帐户将后缀的更改复制到此主机上。
    4. Enable Replication

将现有服务器配置为独立服务器

在 provider .example.com 主机上:
  1. 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”
  2. 选择实例。
  3. 与新 hub 服务器上的设置加入 “准备新的 Hub 服务器以加入”一节 类似,为 dc=example,dc=com 后缀启用复制,并创建一个复制管理器帐户:
    1. 打开 Replication 菜单。
    2. 选择 dc=example,dc=com 后缀,再点 Enable Replication
    3. Replication Role 字段中选择 Supplier,输入副本 ID,以及要创建的复制管理器帐户的 DN 和密码。例如:
      重要
      对于拓扑中的所有供应商,副本 ID 必须是 165534 之间的唯一整数。
      复制管理器帐户可以使用与 hub 上创建相同的 DN。
    4. Enable Replication
  4. 添加复制协议并初始化 hub:
    1. 打开 Replication 菜单,然后选择后缀。
    2. 复制协议 选项卡中,点 Create Agreement,并填写字段。例如:
      这些设置会创建一个名为 example-agreement-supplier-to-hub 的复制协议。复制协议定义了设置,如 hub 的主机名、协议和身份验证信息,供应商在将数据连接到 hub 时使用。
    3. Consumer Initialization 字段中选择 Do Online Initialization,以在保存协议后自动初始化消费者。
      要稍后初始化 hub,请选择 Do Not Initialize。请注意,在初始化消费者前复制不会启动。有关初始化消费者的详情,请参考 第 15.8.3 节 “初始化消费者”
    4. Save Agreement
  5. 验证初始化是否成功:
    1. 打开 Replication 菜单。
    2. 选择 Agreements 条目。
      如果初始化成功完成,Web 控制台会在 Last Update Status 列中显示 Error (0) Replica obtained: Incremental update successful 信息。
      根据要复制的数据量,初始化可能会非常耗时。

将新消费者配置为加入

consumer.example.com 主机上:
  1. 安装目录服务器并创建实例。详情请查看 红帽目录服务器 安装指南
  2. 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”
  3. 选择实例。
  4. 如果您在没有数据库的情况下创建实例,请为后缀创建数据库。有关为后缀创建数据库的详情,请参考 第 2.1.1 节 “创建后缀”
  5. 为后缀启用复制:
    1. 打开 Replication 菜单。
    2. 选择 dc=example,dc=com 后缀,再点 Enable Replication
    3. Replication Role 字段中选择 Consumer,并输入要创建的复制管理器帐户的 DN 和密码。例如:
      这些设置将 consumer.example.com 主机配置为 dc=example,dc=com 后缀的消费者。另外,服务器使用指定密码创建 cn=replication managercn=config 用户,并允许此帐户将后缀的更改复制到此主机上。
    4. Enable Replication

将 Hub 配置为 Consumer 的叶

consumer.example.com 主机上:
  1. 添加复制协议并初始化消费者:
    1. 打开 Replication 菜单,然后选择后缀。
    2. 复制协议 选项卡中,点 Create Agreement,并填写字段。例如:
      这些设置会创建一个名为 example-agreement-hub-to-consumer 的复制协议。
    3. Consumer Initialization 字段中选择 Do Online Initialization,以在保存协议后自动初始化消费者。
      要稍后初始化消费者,请选择 Do Not Initialize。请注意,在初始化消费者前复制不会启动。有关初始化消费者的详情,请参考 第 15.8.3 节 “初始化消费者”
    4. Save Agreement
  2. 验证初始化是否成功:
    1. 打开 Replication 菜单。
    2. 选择 Agreements 条目。
      如果初始化成功完成,Web 控制台会在 Last Update Status 列中显示 Error (0) Replica obtained: Incremental update successful 信息。
      根据要复制的数据量,初始化可能会非常耗时。