VerticaBroker

Vertica 资源管理工具
授权协议 BSD
开发语言 Python
所属分类 数据库相关、 数据库调整和优化
软件类型 开源软件
地区 国产
投 递 者 公西嘉玉
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

该项目使用 [Spring Cloud Open Service Broker] 框架实现了一个遵循 [Open Service Broker API] 的 mpp数据库的 service broker(服务代理)。它可以实现 PAAS 平台多租户对 Vertica 数据库集群的资源分配和资源隔离及管理。 它可以部署到 Cloud Foundry 或 Kubernetes 兼容的 PAAS 平台,并且可以注册为任一平台的服务代理。

兼容性

开始

该服务代理管理mpp集群服务的实例。

当服务实例为 [provisioned] 时,会在内存中分配一个新的数据结构。

创建 [service binding] 时,绑定凭据中会提供 URL 和基本身份验证凭据。mpp实例 URL 和凭据可用于添加、检索、删除和列出vertica实例。为每个服务绑定生成唯一的凭据。

功能

本项目实现PaaS平台接入mpp数据库时要求的相关接口功能,主要接口有:获取服务列表、创建服务实例、更新服务实例、绑定服务实例、解除绑定服务实例、删除服务实例、查询上一次操作状态、查询服务实例等。

  1. 获取服务 获取服务接口用于列举所有租户及其类型、资源等基本信息,获取服务列表接口可以使接口调用者了解已有的租户信息与当前Vertica服务资源情况。
  • 获取数据库信息:获取指定数据库信息,包含数据库版本、数据库名称、当前数据库容量、节点数量等信息。
  • 获取集群节点信息:获取指定数据库集群所有节点信息,包含节点主机IP、主机名、数据盘使用率。
  • 获取数据库schema信息:获取指定数据库已有schema信息,以及获取指定数据库租户基本信息,含用户名、默认资源池、空闲会话断开时间、数据库会话个数限制等信息。
  1. 创建服务实例 创建服务实例管理可以对Mpp数据库资源进行统一的规划和管理。在创建服务实例接口中能够完成创建数据库租户的相关操作,它可以通过以下功能来设置Vertica内部的租户属性:
  • 创建资源池(resource pool):在指定数据库中创建资源池,可以设置资源池名称、初始内存、最大可用内存、单个query可用最大内存,计划并发数、最大并发数、query允许运行最大时长以及排队时长和资源申请优先级。
  • 创建数据库模式(schema):在指定数据库中创建数据库schema,同时可以指定新创建schema是否具有继承权限。
  • 创建数据库租户(user):在指定数据库中创建数据库用户,同时可以在创建时指定用户的最大会话数限制和空闲会话释放时长。
  1. 更新服务实例 更新服务实例管理可以对已存在或已发布的服务实例进行重新规划和管理,能够对已存在的Vertica内部的租户属性进行变更操作。 通过本接口来实现对Vertica租户的属性变更。本接口可能需要实现的内容如下:
  • 修改资源池(resource pool):修改指定资源池参数,可以设置资源池名称、初始内存、最大可用内存、单个query可用最大内存,计划并发数、最大并发数、query允许运行最大时长以及排队时长和资源申请优先级。
  • 修改数据库模式(schema):修改数据库schema信息名称和schema继承权限规则。
  • 修改数据库租户(user):修改指定数据库用户基本信息,包含修改用户密码,是否锁定该用户,以及该用户可用资源池和可以使用schema,最大会话数限制和空闲会话释放时长等配置信息。
  1. 绑定服务实例 PaaS平台通过本接口来关联租户用户与数据库租户,本接口可以实现给租户用户创建(关联)一个数据库租户管理员,并只给它与租户内容(比如特定schema)的访问权限。 绑定用户与schema之后,可以进行权限管理操作。
  2. 解除绑定服务实例 PaaS平台通过本接口来撤销租户用户与数据库租户之间的关系,锁定相关的数据库用户以禁止他们继续使用数据库服务。
  3. 删除服务实例 PaaS平台通过本接口来彻底删除数据库租户中的数据,释放相关资源。如果想要删除的服务实例依赖其他服务实例,或被其他服务实例依赖,那么都会被拒绝删除。这时需要先查询绑定关系,先解除绑定之后才能删除服务实例。
  4. 查询操作状态 操作状态查询接口用于查询各种接口操作的状态,若操作失败,将反馈相应异常提示信息。
  5. 查询服务实例 PaaS平台通过本接口来查询指定租户的状态和相关信息。

构建

该项目至少需要 Java 8。

该项目是使用 Gradle 构建的。 https://docs.gradle.org/current/userguide/gradle_wrapper.html[Gradle wrapper] 允许您在多个平台上构建项目,即使您没有安装 Gradle;从主项目目录的根目录运行它来代替 gradle 命令(作为 ./gradlew)。

编译项目并运行测试

./gradlew build

部署

构建项目后,运行 docker_build.sh 脚本可以打包docker镜像。可以将其部署并注册到 兼容的PAAS平台。

  • 链接:deploy/cloudfoundry/README.adoc[部署到 Cloud Foundry]
  • 链接:deploy / kubernetes / README.adoc [部署到 Kubernetes]
 相关资料
  • 问题内容: Jenkins是否可以管理一些资源?我的意思是说,只有一定数量的作业可以并行运行。例如,我的许可证服务器只能提供4个许可证,因此使用该许可证的每个作业应首先检查某个计数器是否大于零,然后再减少并在不再需要许可证后递减。有排除插件,但我认为它只能创建互斥(计数器等于1),不能创建信号量(计数器等于1或更大)。脚本中的简单变量不是解决方案,因为主机和所有从机必须可见同一计数器。有什么想法如

  • 我试图完全清理资源组在Azure。 删除资源组不是选项(访问权限:参与者,而不是所有者) 做到这一点的最优雅和明显的方法(也在一些文章中描述)是使用“空”部署模板执行完整的部署: 删除SQL Server开始“...”接受“...”失败“...”开始“...”接受“...”失败“... 你想到主意了。 其他时候效果很好。 您将得到数据库删除的无限循环“开始..接受..失败..开始..接受..失败.

  • 资源管理器 是我们用来访问和管理项目资源的工作区域。在开始制作游戏时,添加资源到这里通常是必须的步骤。您可以使用 HelloWorld 模板新建一个项目,就可以看到 资源管理器 中包含了一些基本资源类型。 界面介绍 资源管理器 将项目资源文件夹中的内容以树状结构展示出来,注意只有放在项目文件夹的 assets 目录下的资源才会显示在这里。关于项目文件夹结构说明请阅读 项目结构 一节。下面我们介绍各

  • 为了管理异构和不同配置的主机,为了便于Pod的运维管理,Kubernetes中提供了很多集群管理的配置和管理功能,通过namespace划分的空间,通过为node节点创建label和taint用于pod的调度等。

  • 资源管理器 面板是我们用来访问和管理项目资源的重要工具。 在开始制作游戏时,导入资源 通常是必须的步骤。您可以在新建项目时使用模板项目,新建步骤完成后会自动打开项目,默认布局中包含了 资源管理器 面板,里面有两个资源库,简称 DB,assets 和 internal, internal 属于默认的内置资源,内置资源可以复制出来,但不能直接修改。 面板操作预览 面板介绍 资源管理器 面板上主要有 头

  • 我正在使用Drowpizard 0.7.1,但也许我会很快升级到0.8.4。 是否有人知道如何向dropwizard添加管理员资源,如下面示例中的操作菜单所示?

  • 管理场景 新建场景 通过 Editor.Ipc 模块新建场景: Editor.Ipc.sendToPanel('scene', 'scene:new-scene'); 保存当前场景 对场景数据修改完成后可以通过 Editor.Ipc 模块来保存当前场景: Editor.Ipc.sendToPanel('scene', 'scene:stash-and-save'); 加载其他场景 我们的扩展包可能

  • 通用资源管理模块为全局配置模块,配置后对您名下所有品牌产品生效。该模块中功能都是必要的前置配置,需要在产品创建之前配置完成。 1.直连APP插件管理 直连APP插件是指直连设备在配网过程中需要使用的必要插件,也称为原生插件或直连插件。上传一个直连APP插件,并以升级的方式来支持您旗下所有使用插件开发控制页的直连产品。平台会对您上传的插件进行审核。 插件会在服务端进行存储。通过下载插件可以查看历史插