15.2. 单层次复制

在单层次复制场景中,目录数据的供应商副本保存在一个名为 供应商服务器 的单个读写副本中。供应商还维护此副本的 changelog。在另一个服务器上,称为 消费者服务器,将存储目录的只读副本。在单层次复制环境中,您可以运行多个消费者。
使用单层次复制拓扑,例如,如果后缀收到大量搜索请求,但有一些写入请求。要分发负载,客户端可以在拓扑中的所有服务器上运行搜索后缀,并将写入请求发送到供应商。
下图显示了带有两个消费者的单层次复制环境:

图 15.1. 单层次复制

单层次复制
使用命令行或 Web 控制台来设置单层次复制拓扑。请参阅:

15.2.1. 使用命令行设置单层次复制

以下示例假定您在名为 provider. example.com 的主机上运行了一个现有的 Directory 服务器实例,它将充当复制拓扑中的供应商来设置。以下流程描述了如何将名为 consumer.example.com 的只读消费者添加到拓扑中,以及如何为 dc=example,dc=com 后缀配置单层次复制。

在 Consumer 上执行的步骤

consumer.example.com 主机上:
  1. 安装目录服务器并创建实例。详情请查看 红帽目录服务器 安装指南
  2. 如果您在没有数据库的情况下创建实例,请为后缀创建数据库。例如,要为 dc=example,dc=com 后缀创建一个名为 userRoot 的数据库:
    # dsconf -D "cn=Directory Manager" ldap://consumer.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 manager,cn=config 用户,并允许此帐户将后缀的更改复制到此主机上。
要为拓扑添加多个后缀的用户,请在每个消费者上重复这些步骤。

在独立上执行的步骤

在 provider .example.com 主机上:
  1. dc=example,dc=com 后缀启用复制:
    # dsconf -D "cn=Directory Manager" ldap://supplier.example.com replication \
        enable --suffix="dc=example,dc=com" --role="supplier" --replica-id=1
    此命令将 provider. example.com 主机配置为 dc=example,dc=com 后缀的供应商,并将此条目的副本 ID 设置为 1
    重要
    对于拓扑中的所有供应商,副本 ID 必须是 165534 之间的唯一整数。
  2. 添加复制协议,并初始化消费者。例如:
    # dsconf -D "cn=Directory Manager" ldap://supplier.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
    此命令创建一个名为 example-agreement 的复制协议。复制协议定义了设置,如消费者的主机名、协议和身份验证信息,这些设置供应商将数据连接到消费者时使用。
    创建协议后,目录服务器会初始化消费者。要稍后初始化使用者,请省略 --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
    Agreement successfully initialized.
    根据要复制的数据量,初始化可能会非常耗时。
如果您在拓扑中添加多个后缀的用户,请为每个消费者对供应商重复步骤。但是,您必须仅在供应商上为后缀启用复制。

15.2.2. 使用 Web 控制台设置单层次复制

以下示例假定您在名为 provider. example.com 的主机上运行了一个现有的 Directory 服务器实例,它将充当复制拓扑中的供应商来设置。以下流程描述了如何将名为 consumer.example.com 的只读消费者添加到拓扑中,以及如何为 dc=example,dc=com 后缀配置单层次复制。

在 Consumer 上执行的步骤

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 和密码。例如:
      这些设置将主机配置为 dc=example,dc=com 后缀的消费者。另外,服务器使用指定密码创建 cn=replication manager,cn=config 用户,并允许此帐户将后缀的更改复制到此主机上。
    4. Enable Replication
要为拓扑添加多个后缀的用户,请在每个消费者上重复这些步骤。

在独立上执行的步骤

在 provider .example.com 主机上:
  1. 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”
  2. 选择实例。
  3. dc=example,dc=com 后缀启用复制:
    1. 打开 Replication 菜单。
    2. 选择 dc=example,dc=com 后缀,然后单击 Enable Replication
    3. Replication Role 字段中选择 Supplier,输入副本 ID,并将 Replication Authentication 区域中的字段留空。例如:
      这会将主机配置为 dc=example,dc=com 后缀的供应商,并将此条目的副本 ID 设置为 1
      重要
      对于拓扑中的所有供应商,副本 ID 必须是 165534 之间的唯一整数。
    4. Enable Replication
  4. 添加复制协议,并初始化消费者:
    1. 打开 Replication 菜单,然后选择 dc=example,dc=com 后缀。
    2. 复制协议 选项卡中,点 Create Agreement,并填写字段。例如:
      这些设置会创建一个名为 example-agreement 的复制协议。复制协议定义了设置,如消费者的主机名、协议和身份验证信息,这些设置供应商将数据连接到消费者时使用。
    3. Consumer Initialization 字段中选择 Do Online Initialization,以在保存协议后自动初始化消费者。
      要稍后初始化消费者,请选择 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 信息。
      根据要复制的数据量,初始化可能会非常耗时。
如果您在拓扑中添加多个后缀的用户,请为每个消费者对供应商重复步骤。但是,您必须仅在供应商上为后缀启用复制。