之前我们曾介绍过多云系统,它可以集中管理不同云厂商、云账号和云区域下的资源。通过多云系统,用户可以方便地使用多云资源,极大地提升了多云使用的便捷性。尽管如今已经步入云时代,但IDC机房仍然存在,不少企业也仍采用IDC机房托管的模式,尤其是一些传统行业或金融机构等。鉴于此,我们对多云系统进行了全面升级,升级成了全新的资产系统,不仅可以管理多云资源,同时还能够接入IDC机房资源,实现云上云下的统一管理。
资产系统针对资源的纳管提供了三种方式,分别是:多云自动同步、Agent主动上报和手工添加。本文将详细介绍这三种方式的设计、用法和区别。以下是大概的图示:
在之前的文章中我们介绍过“资源池”的概念。资源池是一个虚拟的池子,用来暂存云上同步下来的资源。资源池内的资源都是没有项目归属的,属于无人认领或暂未认领的无主资源。所有的资源最终都应该归属于项目,以便于项目维护和成本核算。一个资源要么归属于项目,要么暂存于资源池。资源池内的资源有两种方式归属到项目,其一是通过动态规则自动处理,其二是人工认领手动处理。我们当然是推荐动态规则自动处理,减少人为介入,一切都自动化完成。
还有一个“资源树节点”的概念。资源树是一个树状结构,会有很多的节点,项目下的资源就隶属于不同的节点。通过树的方式去组织资源,可以很清晰地了解资源关系,使用起来也十分方便,应用特别广泛。以下是资源树的示意图:
有了这个基本的概念,我们再来聊聊这三种资源纳管的方式。
多云同步
多云同步是通过云平台的API或SDK,自动同步云资源数据到资源池。这里只需要添加云平台的账号即可,自动同步程序会根据配置的时间周期自动去云上拉取资源数据然后入库。新增还是更新的主要判断依据是:云账号+云区域+资源ID联合唯一。整体的逻辑如下图所示:
动态规则自动匹配需要资源具有一定的规律性,最常用的就是通过资源名称来区别。例如一个项目A正式环境使用的Nginx服务器,我们想要给归属到项目A下的资源树节点“ProjectA/PROD/Nginx”下,那我们最好在资源命名时进行同一,例如都符合“ProjectA-PROD-Nginx-{number}”这样的格式,那动态规则就比较好创建,所有名称以“ProjectA-PROD-Nginx-”开头的资源都自动给归属到资源树节点“ProjectA/PROD/Nginx”下。
当资源命名没有那么规范且数量不是很多的情况下,也可以直接在资源列表页面,直接添加资源池内的资源到资源树节点下,手动添加有一个前提,那就是资源已经在资源池里了。
多云同步比较简单,如果用到了云,那首先推荐的就是这种方式进行资源纳管,这里的云可以是公有云,例如阿里云、腾讯云、华为云等,或者是私有云,例如VMWare、OpenStack、OpenShift等。
Agent上报
除了多云同步的方式进行资源纳管之外,我们还提供了Agent,可以部署在服务器上以实现资源主动上报统一纳管。这种方式对于IDC之类没有提供API/SDK获取资源的方式来说非常有效,通过安装客户端Agent,自动上报资源数据,然后配合动态规则自动将资源归属到资源树节点。
对于安装了Agent的服务器来说,除了资源先到资源池再配合动态规则自动归属到资源树节点的管理方式外,Agent还提供直接归属到资源树节点而不经过资源池的方式。这就涉及Agent的高级配置,Agent的配置文件默认只需要配置一个Server服务器的地址即可启动。
SERVER-ADDRESS: "wss://agent-server.ops-coffee.cn/api/v1/agent"
当Server入库数据时会先检查ID为37的资源树节点是否存在,如果存在则直接归属到节点,这样就实现了Agent直接归属到节点,而无需经过资源池的步骤,更加方便。
手动添加
以上两种方式无论是多云自动同步还是Agent主动上报,都可以实现资源的自动入库,自动归属到资源树节点。如果不属于云资源,也不想安装Agent,如何管理资源呢?那系统提供了一种最原始的方式,用户自己手工录入,或是通过Excel批量导入资源。
这两种方式都比较原始,资源属性的更新依赖人工操作,不像多云同步或Agent上报,资源属性的更新都可以自动完成,所有不是特殊情况都不建议使用。
至此,资产系统所支持的三种资源纳管理介绍完毕。