Linux Rocky 9 部署Zookeeper+Kafka+Kerberos认证 (一) 组件介绍

星光下的梦想 发布于 2024-09-07 6 次阅读


组件介绍

Zookeeper

  • ZooKeeper 是一个开源的分布式协调服务框架。它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
  • Zookeeper 的核心功能包括:

    • 分布式配置管理:在分布式环境中,多个应用实例需要共享和动态更新配置数据,Zookeeper 通过其一致性算法来管理这些配置。
    • 分布式锁:Zookeeper 提供了分布式锁的实现,可以防止多个进程同时访问共享资源。
    • 集群管理:Zookeeper 监控集群中的节点状态,可以检测节点的上下线事件,从而支持服务发现和负载均衡。

Kafka

  • Apache Kafka 是一种分布式数据存储,经过优化以实时提取和处理流数据。流数据是指由数千个数据源持续生成的数据,通常可同时发送数据记录。流平台需要处理这些持续流入的数据,按照顺序逐步处理。同时它也是一种分布式的,基于发布/订阅的消息系统。
  • Kafka 的核心功能包括:

    • 高吞吐量:Kafka 可以处理大量的实时数据,适合用作活动流数据、日志数据的收集和处理。
    • 持久化消息:Kafka 使用磁盘持久化来保存消息,即使系统出现故障,也不会丢失消息。
    • 分区与复制:Kafka 将消息主题(topic)分为多个分区,并支持跨多个服务器的复制,以实现高可用性和容错。
    • 发布-订阅模型:Kafka 支持多种消费者模式,可以用作发布-订阅消息系统,允许多个消费者订阅相同的消息主题。

Kerberos

  • Kerberos 是一个网络认证协议,旨在为客户端-服务器应用程序提供强大的身份验证。其主要由以下几个核心部分构成:
    1. 客户端 (Client)
      • 作用:客户端是请求认证的主体。在 Kerberos 中,客户端通常是用户的计算机或应用程序。
      • 操作:用户登录到客户端时,客户端向认证服务器 (AS) 请求初始认证,之后向票据授予服务器 (TGS) 请求服务票据。
    2. 认证服务器 (AS, Authentication Server)
      • 作用:负责验证客户端的身份,并生成 Ticket-Granting Ticket (TGT)。
      • 操作:当客户端向 AS 发送认证请求时,AS 验证客户端的身份(通常通过用户密码)。如果身份验证成功,AS 生成一个会话密钥和 TGT,并将其发送给客户端。TGT 用于后续与 TGS 交互时的身份验证。
    3. 票据授予服务器 (TGS, Ticket-Granting Server)
      • 作用:基于客户端提供的 TGT,生成用于访问特定服务的服务票据 (Service Ticket)。
      • 操作:客户端向 TGS 发送请求,提供 TGT 和所需访问的服务标识。TGS 验证 TGT 的有效性后,生成一个新的会话密钥和服务票据,返回给客户端。服务票据将用于客户端和目标服务之间的认证。
    4. 密钥分发中心 (KDC, Key Distribution Center)
      • 作用:KDC 是 Kerberos 的核心组件,通常包括认证服务器 (AS) 和票据授予服务器 (TGS)。
      • 操作:KDC 负责管理所有主体(客户端和服务)的密钥,并处理所有票据的生成与分发。在整个 Kerberos 认证流程中,KDC 是可信的第三方,它为客户端和服务之间的安全通信提供必要的密钥和票据。
    5. 目标服务 (Application Server)
      • 作用:目标服务是客户端最终要访问的应用程序或服务(如文件服务器、数据库)。
      • 操作:客户端将从 TGS 获取的服务票据发送给目标服务。目标服务验证服务票据的合法性和有效性,确保客户端有权限访问该服务。验证通过后,服务与客户端之间建立基于会话密钥的安全通信。
    6. 数据库 (Kerberos Database)
      • 作用:存储所有主体(用户、服务等)的密钥信息和其他与认证相关的数据。
      • 操作:KDC 依赖这个数据库来获取用户和服务的密钥,用于加密和解密票据。该数据库对 Kerberos 系统至关重要,通常受到严格的保护。
    7. Realm (领域)
      • 定义:Realm 是 Kerberos 的管理域或管理领域的标识。它表示一个 Kerberos 认证的信任边界,通常与一个组织、公司或网络域对应。
      • 作用:每个 Realm 有自己独立的 KDC 和管理策略,负责管理该领域内的所有主体 (Principals)。在跨领域认证的情况下,不同 Realm 之间可以建立信任关系,使得一个领域的用户可以访问另一个领域的服务。
    8. Principal (主体)
      • 定义:Principal 是 Kerberos 中的用户、服务或主机的标识符。每一个用户或服务在 KDC 中都有一个唯一的 Principal,作为其身份的代表。
      • 格式:Principal 的格式通常为 主名称/实例名@领域名,例如:[email protected] 或 hdfs/[email protected]
      • 主名称:主名称通常是用户名或服务名,用于标识网络服务的提供者,如 HDFS、YARN、Hive 等。
      • 实例名:实例名通常是主机名,表示该服务运行的具体机器或实例。如果没有特定实例名,可以省略此部分。
      • 用户principal的形式:Name[/Instance]@REALM 其中Instance是可选的,通常用于更好地限定用户的类型。比如,一个管理员用户通常会有admin instance,即Name/admin@REALM。例如:
        [email protected]
        admin/[email protected]
        server/[email protected]
      • 服务principal的形式:Service/Hostname@REALM 第一部分是service的名字,比如kafka,hadoop,sftp。通常'host'这个名字被用于指明对一台机器的通用的访问。第二个component是提供这个服务的机器的全限定域名(FQDN)。这个component跟DNS对应用服务器的IP地址进行逆向解析后得到的主机名。例如:
        kafka/[email protected]
        hadoop/node1@[email protected]
      • 作用:在 Kerberos 中,每添加一个用户或服务,都需要在 KDC 中为其创建一个对应的 Principal,这个 Principal 用于认证和授权。
    9. Keytab 文件
      • 定义:Keytab 文件是一个包含 Kerberos 主体的加密密钥(通常是用户或服务的密码)的文件。Keytab 文件用于自动化身份验证,避免手动输入密码。
      • 作用:在 Kerberos 环境中,服务通常使用 Keytab 文件进行身份验证,而不是使用交互式的密码输入。这样可以支持服务的自动启动和无缝认证。当一个服务启动时,它会使用 Keytab 文件中的加密密钥与 KDC 进行通信,从而获取必要的票据来访问其他服务或资源。