在之前的这篇博文《Cloudera 复制插件为Hbase启用平台复制》中,我们提供了Cloudera Replication Plugin的高级概述,解释了它如何通过很少的配置实现跨平台复制。在这篇文章中,我们将介绍如何在 CDP 集群中应用此插件,并解释该插件如何在不共享相互身份验证信任的系统之间启用强身份验证。
运营数据库复制插件可以作为一个独立的插件,也可以通过Cloudera的复制管理器自动安装。该插件使客户能够将 HBase 数据从 CDH/HDP/AWS EMR/Azure HDInsight 集群近乎实时地复制到CDP 私有云基础和/或者CDP公共云中的CDP 运营数据库 (COD)。当使用 Cloudera Replication Manager 在 CDP 私有云基础和 COD 之间或CDP公共云中的 COD 实例之间设置复制时,它也会自动部署。Cloudera Replication Manager 还允许将 HBase 快照功能与此插件结合在一起,以在单个设置中管理预先存在的数据的复制。
有关安装说明,请参阅Replication Manager官方文档中的HBase 复制策略主题。
对于旧版 CDH/HDP 版本,作为仅安装在旧版集群中的插件通过Parcel提供。
Parcel的版本被版本特定的二进制文件锁定。对于上面提到的每个版本,应该在每个集群的基础上获取它。如果您有兴趣获得其中任何一项,请联系您的 Cloudera 销售团队。
Operational Database Replication Plugin解决的难点是不同安全配置下集群之间的相互认证。回顾之前的这篇博文,HBase 默认复制要求两个集群要么根本没有配置安全性,要么都配置了安全性。对于后者,两个集群必须位于同一个 kerberos 领域,或者在 kerberos 系统上设置了跨领域身份验证。在 CDP 环境中,这将是一个额外的挑战,其中每个环境都运行在一个独立的安全领域上。要更详细地了解这一点,我们需要回顾一下 Apache HBase 安全性是如何实现的。
在 HBase 复制中,源集群中的 RegionServers 通过 RPC 连接联系目标集群中的 RegionServers。启用安全性后,将在 RPC 连接建立阶段使用简单身份验证和安全层框架 ( SASL) 执行身份验证。HBase 已经提供了以下内置的SASL 身份验证机制:kerberos、digest和simple。启用 kerberos 后,目标集群将需要来自源集群的凭据,然后目标集群将使用SASL kerberos机制针对其自己的 KDC 验证这些凭据。这依赖于kerberos GSSAPI用于针对目标集群 KDC 对提供的凭据进行身份验证的实现,因此必须在 kerberos 系统级别实现对源集群主体的信任,方法是将两个集群凭据都放在同一领域,或者使目标集群 KDC 信任来自源集群领域(一种通常称为跨领域身份验证的方法)。
幸运的是,SASL 旨在允许自定义身份验证实现。这意味着可以设计基于 SASL 的解决方案,如果可以将额外的 SASL 机制插入上述内置选项集。为此,Cloudera 提出了对 HBase 的 RPC 层的重构,该层已在HBASE-23347 中被 Apache HBase 社区审查和接受。
随着HBASE-23347引入的更改,可以通过 HBase 配置定义额外的 SASL 身份验证机制以供 RPC 层使用。传入的 RPC 连接在 header 中定义了特定的 SASL 类型,然后 RPC 服务器选择特定的实现来执行实际的身份验证:
Operational Database Replication Plugin实现其自定义的 SASL 机制,允许不同 kerberos 领域上的集群通过无缝配置工作进行通信(无需kerberos 跨领域)。它扩展了 HBase 复制,以便源使用来自目标 COD 集群上的预定义机器用户的凭据创建复制插件自定义类型的 SASL 令牌。这种类型的用户可以从Cloudera Management Console UI轻松创建,然后传播到 COD 集群底层 kerberos 身份验证权限。Cloudera Replication Manager的前置要求步骤部分介绍了有关创建复制机用户的详细说明 文档。
当目标中的 RPC 服务器读取令牌并识别它是复制插件类型时,将从令牌中解析相关凭据并用于身份验证。
Operational Database Replication Plugin使用 PAM 身份验证来验证机器用户凭据。COD 集群始终配备 PAM 身份验证,针对 CDP 环境 FreeIPA 安全域。
此解决方案中的一个关键问题是源集群必须从目标集群的机器用户那里获取凭据。出于显而易见的原因,不应在源配置上以任何方式公开。这些凭据也通过 RPC 连接内 SASL 令牌中的线路发送,因此必须在传输之前对其进行加密。复制插件提供了自己的工具来生成一个jceks文件,该文件存储加密的机器用户凭据。创建此文件后,必须将其复制到两个集群并使其只能由hbase用户读取。下图显示了Operational Database Replication Plugin的部署概述在 RegionServers 的上下文中集成到标准 HBase 复制类的组件。粉色框代表 HBase 已经提供的复制和 RPC 连接代码,而黄色框表示HBASE-23347 中引入的抽象层。最后,橙色类突出显示了实现运营数据库复制插件逻辑的相关工件。
复制是为 HBase 实施 DR 和 DC 迁移解决方案的宝贵工具。在处理集群的安全配置时,它有一些注意事项,如下所示。然而,将数据从当前的“本地”部署迁移到云上的 CDP 集群的能力是必不可少的。Cloudera Operational Database Replication Plugin在集成安全集群时带来了灵活性,并为此安全集成提供了更好的可维护性,因为它完全在 HBase 级别实现,与kerberos 跨领域相反,后者 需要更改 kerberos 系统定义,通常是一个完全不同的团队,有自己的限制政策。
原文作者:Wellington Chevreuil, Josh Elser, and Krishna Maheshwari
原文链接:https://blog.cloudera.com/cloudera-operational-database-replication-in-a-nutshell/