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
主机上:
- 安装目录服务器并创建实例。详情请查看 红帽目录服务器 安装指南。
- 如果您在没有数据库的情况下创建实例,请为后缀创建数据库。例如,要为 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 节 “创建后缀”。 - 为后缀启用复制并创建复制管理器帐户:
# 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
主机上:
- 与您在新 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 必须是 1 到 65534 之间的唯一整数。复制管理器帐户可以使用与 hub 上创建相同的 DN。 - 添加复制协议并初始化 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
- 验证初始化是否成功:
# 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
主机上:
- 安装目录服务器并创建实例。详情请查看 红帽目录服务器 安装指南。
- 如果您在没有数据库的情况下创建实例,请为后缀创建数据库。例如,要为 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 节 “创建后缀”。 - 为后缀启用复制并创建复制管理器帐户:
# 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
主机上:
- 添加复制协议并初始化服务器。例如:
# 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
选项。 - 验证初始化是否成功:
# 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
主机上:
- 安装目录服务器并创建实例。详情请查看 红帽目录服务器 安装指南。
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”。
- 选择实例。
- 如果您在没有数据库的情况下创建实例,请为后缀创建数据库。有关为后缀创建数据库的详情,请参考 第 2.1.1 节 “创建后缀”。
- 为后缀启用复制:
- 打开菜单。
- 选择 dc=example,dc=com 后缀,再点 。
- 在 Replication Role 字段中选择 Hub,并输入要创建的复制管理器帐户的 DN 和密码。例如:这些设置将
hub.example.com
主机配置为 dc=example,dc=com 后缀的中心。另外,服务器使用指定密码创建cn=replication managercn=config
用户,并允许此帐户将后缀的更改复制到此主机上。 - 点。
将现有服务器配置为独立服务器
在 provider
.example.com
主机上:
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”。
- 选择实例。
- 与新 hub 服务器上的设置加入 “准备新的 Hub 服务器以加入”一节 类似,为 dc=example,dc=com 后缀启用复制,并创建一个复制管理器帐户:
- 打开菜单。
- 选择 dc=example,dc=com 后缀,再点 。
- 在 Replication Role 字段中选择 Supplier,输入副本 ID,以及要创建的复制管理器帐户的 DN 和密码。例如:重要对于拓扑中的所有供应商,副本 ID 必须是 1 到 65534 之间的唯一整数。复制管理器帐户可以使用与 hub 上创建相同的 DN。
- 点。
- 添加复制协议并初始化 hub:
- 打开菜单,然后选择后缀。
- 在选项卡中,点 ,并填写字段。例如:这些设置会创建一个名为
example-agreement-supplier-to-hub
的复制协议。复制协议定义了设置,如 hub 的主机名、协议和身份验证信息,供应商在将数据连接到 hub 时使用。 - 在 Consumer Initialization 字段中选择 Do Online Initialization,以在保存协议后自动初始化消费者。要稍后初始化 hub,请选择 Do Not Initialize。请注意,在初始化消费者前复制不会启动。有关初始化消费者的详情,请参考 第 15.8.3 节 “初始化消费者”。
- 点。
- 验证初始化是否成功:
- 打开菜单。
- 选择条目。如果初始化成功完成,Web 控制台会在 Last Update Status 列中显示 Error (0) Replica obtained: Incremental update successful 信息。根据要复制的数据量,初始化可能会非常耗时。
将新消费者配置为加入
在
consumer.example.com
主机上:
- 安装目录服务器并创建实例。详情请查看 红帽目录服务器 安装指南。
- 在 web 控制台中打开 Directory Server 用户界面。请参阅 第 1.4 节 “使用 Web 控制台登录到目录服务器”。
- 选择实例。
- 如果您在没有数据库的情况下创建实例,请为后缀创建数据库。有关为后缀创建数据库的详情,请参考 第 2.1.1 节 “创建后缀”。
- 为后缀启用复制:
- 打开菜单。
- 选择 dc=example,dc=com 后缀,再点 。
- 在 Replication Role 字段中选择 Consumer,并输入要创建的复制管理器帐户的 DN 和密码。例如:这些设置将
consumer.example.com
主机配置为 dc=example,dc=com 后缀的消费者。另外,服务器使用指定密码创建cn=replication managercn=config
用户,并允许此帐户将后缀的更改复制到此主机上。 - 点。
将 Hub 配置为 Consumer 的叶
在
consumer.example.com
主机上:
- 添加复制协议并初始化消费者:
- 打开菜单,然后选择后缀。
- 在选项卡中,点 ,并填写字段。例如:这些设置会创建一个名为
example-agreement-hub-to-consumer
的复制协议。 - 在 Consumer Initialization 字段中选择 Do Online Initialization,以在保存协议后自动初始化消费者。要稍后初始化消费者,请选择 Do Not Initialize。请注意,在初始化消费者前复制不会启动。有关初始化消费者的详情,请参考 第 15.8.3 节 “初始化消费者”。
- 点。
- 验证初始化是否成功:
- 打开菜单。
- 选择条目。如果初始化成功完成,Web 控制台会在 Last Update Status 列中显示 Error (0) Replica obtained: Incremental update successful 信息。根据要复制的数据量,初始化可能会非常耗时。