SaltStack的两类API服务接口介绍

原文链接: https://docs.saltstack.com/en/latest/topics/api.html

目前,SaltStack的API接口共有两个技术实现,其具体的适用场景和使用方法均有明显的不同。

  • Python client API - SaltStack Python客户端程序API开发指南
  • netapi modules - SaltStack netapi模块开发指南

顾名思义,以上两类API服务接口的使用场景,前者是为Salt master主机节点上本地运行的其它Python客户端程序提供Salt API服务,而后者则提供了通过REST接口从Salt master节点外部访问Salt的功能。

二者在功能上是一致的,甚至于netapi modules实际上在Salt底层仍然是通过调用Python client API的接口实现的。netapi模块,主要的功能是实现和在网络上暴露出了一个web api的服务接口。正因如此,netapi模块的技术方案上有从简到繁,根据使用或不使用Python web框架、使用哪一种web框架,有多种不同的实现案。

两种Salt API的优缺点对比分析如下:

  1. Salt Python client API 使用简单,学习成本低;相对的,Salt netapi有更高的学习成本和使用复杂性。
  2. Salt Python client API 只支持Python客户端的访问且客户端程序必需直接部署在Salt master节点本地系统中,服务的耦合度高;相对的,Salt netapi不限定客户端程序的实现语言,也不限定客户端程序的部署位置,服务的耦合度低。
  3. 两种类型的API接口在服务的高可用方面各有长短,Salt服务自身保证高可用时,需要配置为MULTIMASTER的架构,使用Salt Python client API时只需要在每个Salt master上都部署一份应用程序即可实现客户端程序服务多活或failover的设计。Salt netapi的高可用方案同样需要依赖于Salt multimaster的部署架构,同时需要将Salt netapi模块也部署为多个节点上的多实例的形式。

综上所述,选择使用哪一种实现方案,还是要根据自身的业务与技术系统的规模大小、团队人员多少、需要访问Salt API的客户端程序的数量以及编程语言等方面来做评估。简单地讲,就是中小规模的系统和团队适宜使用Salt Python client API,而在大规模的技术系统中,考虑服务间的解耦、应用程序故障风险的分散、API接口的高并发访问等,Salt netapi显然要更胜一筹。

你可能感兴趣的:(SaltStack)