跳到主要内容
版本:4.x

华为云

创建华为云私有仓库(BYOC)

前置准备

由于 BYOC 模式下的资源都部署在您的云账号中,因此在使用之前需要进行一些前置准备工作,以确保顺利进行资源配置和管理:

  • 准备虚拟私有云 VPC 和子网
  • 了解资源编排和资源栈(可选)

创建华为云私有仓库

创建仓库引导

在创建仓库引导页或者左上角仓库列表,单击 新建仓库 ,进入仓库配置页,填写表单进行创建。

image

参数说明
仓库名称必填项。组织内唯一,最多 32 个字符,只支持包含中文、字母、数字、-、_
仓库模式必选项。私有仓库(BYOC)。
云厂商必选项。选择华为云。
地域必选项。选择希望部署数据仓库在哪个地域。由于异地通信网络架构复杂,而且延时较大,建议选择与你的应用系统/客户端相同的地域。目前,SelectDB Cloud 已支持云平台多个地域,并会根据客户需求情况,陆续支持更多地域。
内核版本必选项。SelectDB Core 的版本,从 2.0 版本开始,支持存算分离,底层采用共享存储,数据存储性价比高,按实际使用量计费,无需预先配置容量空间。
VPC 环境必选项。第一次新建 BYOC 仓库,默认选择新 VPC,后续步骤会引导你选择云环境中的 VPC,完成新建仓库。如果你之前已在 VPC 内创建过 BYOC 仓库,你可以直接选择这个 VPC 并新建仓库。

下表列出了目前支持的华为云地域和可用区信息:

云平台地域名称地域 ID可用区 ID
华为云北京cn-north-4所有
华为云新加坡ap-southeast-3所有
华为云广州cn-south-1所有
华为云墨西哥城二la-north-2所有
华为云上海cn-east-3所有

点击 下一步

华为云前置准备

在正式创建前,参照说明文档完成前置准备:

  • 准备虚拟私有云 VPC 和子网
  • 了解资源编排和资源栈(可选)

点击我已完成进入下一步。

创建 BYOC 仓库 · ① 华为云前置准备(IAM 授权 / 准备 VPC 子网 / 了解 RFS 资源编排)

创建 BYOC 仓库 · ① 华为云前置准备(IAM 授权 / 准备 VPC 子网 / 了解 RFS 资源编排)

华为云资源配置

SelectDB Cloud 会使用华为云的资源编排服务创建一系列资源并完成用户 VPC 内私有仓库的创建工作。

请使用管理员权限进行资源栈创建,或者是联系管理员为你创建这个资源栈,否则可能会遇到因权限不足导致执行模板失败的情况。

点击复制图标,复制 Token,点击打开资源编排页面

创建 BYOC 仓库 · ② 云资源配置(跳转华为云 RFS → 打开资源编排页面;Token 已脱敏)

创建 BYOC 仓库 · ② 云资源配置(跳转华为云 RFS → 打开资源编排页面;Token 已脱敏)

点击下一步。

华为云 RFS 创建资源栈 · ① 选择模板(已加载 SelectDB BYOC 模板)

华为云 RFS 创建资源栈 · ① 选择模板(已加载 SelectDB BYOC 模板)

粘贴 Token,选择要部署 BYOC 仓库的 Region、VPC 、子网以及指定企业项目,点击下一步。

华为云 RFS · ② 参数配置(Token 已脱敏 / Region / VPC / 子网 / 企业项目)

华为云 RFS · ② 参数配置(Token 已脱敏 / Region / VPC / 子网 / 企业项目)

开启回滚设置,点击下一步。

华为云 RFS · ③ 资源栈设置(IAM 权限委托 / 回滚设置 / 删除保护)

华为云 RFS · ③ 资源栈设置(IAM 权限委托 / 回滚设置 / 删除保护)

点击创建执行计划,输入名称,点击确定。

华为云 RFS · ④ 配置确认(参数汇总,Token 已脱敏)后点「直接部署资源栈」

华为云 RFS · ④ 配置确认(参数汇总,Token 已脱敏)后点「直接部署资源栈」

点击部署,等待部署完成。

华为云 RFS 资源栈 · 事件(正在生成 SelectDBAgent ECS 等资源)

华为云 RFS 资源栈 · 事件(正在生成 SelectDBAgent ECS 等资源)

华为云 RFS 资源栈 · 资源列表(ECS / IAM 子用户与策略 / 安全组等全部生成完成)

华为云 RFS 资源栈 · 资源列表(ECS / IAM 子用户与策略 / 安全组等全部生成完成)

返回 SelectDB Cloud 控制台。

仓库初始化

系统进行仓库初始化,约需 5-10 分钟。如遇到仓库初始化 30 分钟以上,或其他无法继续的情形,请 联系客服 寻求帮助。

BYOC 仓库创建完成 · 集群运行中(initial_cluster · 4 vCPU / 100 GB 缓存)

BYOC 仓库创建完成 · 集群运行中(initial_cluster · 4 vCPU / 100 GB 缓存)

新建集群

在新建集群引导页或者集群概览页,单击 新建集群 ,进入集群配置页。详细操作请参照 新建集群。

image

开放公网连接和访问

仓库创建完成后,如果需要在公网连接仓库、访问 WebUI 等,需要在华为云绑定公网 IP 和设置安全组。

绑定公网 IP

点击连接,复制 Master IP

进入 华为云实例控制台 ,点击左侧 实例与镜像 > 弹性云服务器,搜索过滤 IP,确认 VPC ID 无误。

点击 操作 > 更多 > 网络安全组 > 绑定弹性公网IP

点击购买弹性公网IP,如果已有弹性公网 IP 可用,可跳过购买。

选择计费模式、区域、带宽、名称等,点击立即购买,完成创建弹性公网IP。

返回绑定弹性公网 IP 页面,绑定刚刚创建的弹性公网 IP,点击确定。

设置安全组

进入 华为云云实例控制台 ,点击左侧 网络与安全 > 安全组,点击创建安全组

输入安全组名称,企业项目,模板选择快速添加规则,选择 8080 端口,点击确定

设置配置规则,切换到入方向规则,修改协议端口范围 8080,8088,9030,原地址为可连接访问 SelectDB 仓库的公网 IP,建议设置最小化范围,点击确认,完成创建。

返回实例列表,进入上述步骤实例,切换到安全组标签页,点击修改安全组,增加上述步骤创建的安全组,点击确定,完成安全组设置。

返回 SelectDB Cloud 连接页面,点击 Master IP 公网刷新图标。

至此,您已可以通过公网访问 WebUI 和连接仓库。

仓库使用

仓库的使用操作,以及如果需要删除仓库,请参考文档 仓库使用。

华为云前置准备

本文主要介绍创建 BYOC 类型仓库涉及的华为云平台相关操作,包括 准备虚拟私有云 VPC 和子网了解资源编排和资源栈 等。

准备虚拟私有云 VPC 和子网

提示:

  1. 如果已有符合地域和可用区要求的 VPC 和子网,并期望将 BYOC 仓库部署在此 VPC 内,可以跳过下面创建虚拟私有云 VPC 和子网步骤
  2. 当前支持的地域和子网可用区为:
云平台地域名称地域 ID可用区 ID
华为云北京cn-north-4所有
华为云新加坡ap-southeast-3所有
华为云广州cn-south-1所有
华为云墨西哥城二la-north-2所有
华为云上海cn-east-3所有

创建 BYOC 类型仓库前,如果没有符合要求的已有 VPC 和子网,则需要提前创建虚拟私有云 VPC 和子网,以下是具体操作。

打开华为云 虚拟私有云 VPC 控制台,点击 创建虚拟私有云,进入 VPC 创建页面。

华为云 · 创建虚拟私有云 VPC(区域 / 名称 / IPv4 网段 / 企业项目)

华为云 · 创建虚拟私有云 VPC(区域 / 名称 / IPv4 网段 / 企业项目)

选择您期望创建 BYOC 仓库的地域,输入名称、选择 IPv4 网段、企业项目,输入子网名称和可用区,点击立即创建完成创建。

华为云 · 配置 VPC 子网(名称 / 可用区 / 子网网段)

华为云 · 配置 VPC 子网(名称 / 可用区 / 子网网段)

华为云 · 虚拟私有云与子网创建完成

华为云 · 虚拟私有云与子网创建完成

了解资源编排和资源栈(可选)

在您的云账号下通过资源编排服务(RFS)执行资源栈模板时,会对 VPC、ECS、OBS 等云资源进行相关操作,因此需要一系列 IAM 权限。

请使用管理员权限进行资源栈创建,或者是联系管理员为你创建这个资源栈,否则可能会遇到因权限不足导致执行模板失败的情况。

RFS 资源编排模板说明

SelectDB 提供的资源编排模板运行在您的云账号下,并且模版代码可见、可审计,不会对您的数据与 VPC 内的其他环境进行操作。您可以通过以下链接获取 SelectDB 提供的资源编排模板:

https://selectdb-cloud-online-bj.obs.cn-north-4.myhuaweicloud.com/public/hwcloud-byoc.zip

当您通过华为云 RFS 执行上述资源模板时,它会自动进行 Agent 的创建与部署。然后 Agent 会与 SelectDB Cloud 建立私有连接,并完成仓库初始化流程。

在完成资源编排脚本执行后,您即可从 SelectDB Cloud 平台进入相应仓库,像使用普通的仓库一样,开始新建用于数据分析的计算集群。

如何查看资源栈信息

您可以通过华为云 RFS 产品界面,查看由 SelectDB 资源栈模板创建的所有资源信息,并可通过资源名称查看特定资源。

注意 所有资源栈模版创建出来的资源,都属于您的云账号,并只在您的 VPC 内使用,不会外泄。

  • 虚拟机
  • 名称:
    • SelectDBAgent(ECS)
    • SelectDBEip(VPC EIP)
  • 用途:
    • 用于部署 Agent、Prometheus、FluentBit 等程序
    • 挂载在 Agent 机器上,为访问 BSS 服务提供公网能力
  • 终端节点
  • 名称:SelectDBEndpoint(VPC Endpoint)
  • 用途:与 SelectDB Cloud 平台建立私网连接,从而可以拉取管控指令、推送监控和日志
  • 存储桶
  • 名称:SelectDBBucket(OBS Bucket)
  • 用途:用于存储数仓数据
  • 安全组
  • 名称:SelectDBSecurityGroup(VPC SecurityGroup)
  • 用途:绑定在所有 SelectDB 创建出的 ECS 实例上,并通过安全组规则限定特定端口特定来源的流量出站入站
  • 子用户/权限策略
  • 名称:
    • SelectDBUser(子用户)
    • SelectDBUserRegionPolicy(子用户权限---针对地域级别服务)
    • SelectDBUserGlobalPolicy(子用户权限---针对全局级别服务)
  • 用途:创建出的子用户具备 Agent 所需的最小权限策略,之后进行的所有管控操作均使用该子用户的身份进行操作

华为云 RFS 资源栈 · 资源列表(模板创建的 ECS/EIP/终端节点/OBS/安全组/子用户)

华为云 RFS 资源栈 · 资源列表(模板创建的 ECS/EIP/终端节点/OBS/安全组/子用户)

资源栈模板创建的子用户的权限说明

初次执行完资源栈模板后会创建一个子用户,用于后续在您的 VPC 内管控数据仓库相关组件,以下为该子用户权限示例以及说明:

注意 创建出来的子用户隶属于您的云账号,并只在您的 VPC 内使用,不会外泄。

  • 针对区域级别服务策略
{
"Statement": [
{
"Action": [
"ecs:cloudServers:list",
"ecs:cloudServers:createServers",
"ecs:cloudServers:deleteServers",
"ecs:cloudServers:updateServer",
"ecs:cloudServers:changeChargeMode",
"ecs:cloudServers:resize",
"ecs:cloudServers:reboot",
"ecs:cloudServers:stop",
"ecs:cloudServers:start",
"ecs:cloudServers:showServerBlockDevice",
"ecs:cloudServers:listServerBlockDevices",
"ecs:servers:get",
"ecs:servers:list",
"ecs:servers:start",
"ecs:servers:stop",
"ecs:servers:reboot",
"ecs:servers:resize",
"ecs:securityGroups:use",
"ecs:servers:getTags",
"ecs:servers:setTags",
"vpc:securityGroups:get",
"vpc:securityGroups:update",
"vpc:securityGroupRules:get",
"vpc:ports:create",
"vpc:ports:update",
"vpc:ports:delete"
],
"Condition": {
"StringEquals": {
"g:ResourceTag/resource-created-by": [
"selectdb"
]
}
},
"Effect": "Allow",
"Resource": [
"*"
]
},
{
"Action": [
"ecs:cloudServers:showServer",
"ecs:cloudServers:batchSetServerTags",
"evs:volumeTags:create",
"evs:volumeTags:delete",
"evs:volumes:*",
"evs:volumes:get",
"evs:volumes:extend",
"bss:renewal:update",
"bss:order:view",
"bss:order:pay",
"vpc:vpcs:get",
"vpc:vpcs:list",
"vpc:subnets:get",
"vpc:securityGroups:create",
"vpc:securityGroups:delete",
"vpc:securityGroupRules:create",
"vpc:securityGroupRules:delete",
"vpc:ports:get",
"elb:loadbalancers:get",
"elb:loadbalancers:list",
"elb:loadbalancers:create",
"elb:loadbalancers:delete",
"elb:loadbalancerTags:get",
"elb:loadbalancerTags:create",
"elb:loadbalancerTags:delete",
"elb:listeners:get",
"elb:listeners:list",
"elb:listeners:create",
"elb:listeners:delete",
"elb:listenerTags:get",
"elb:listenerTags:create",
"elb:listenerTags:delete",
"elb:pools:get",
"elb:pools:list",
"elb:pools:create",
"elb:pools:delete",
"elb:members:get",
"elb:members:list",
"elb:members:create",
"elb:members:delete",
"elb:l7policies:get",
"elb:l7policies:list",
"elb:l7policies:create",
"elb:l7policies:delete",
"elb:l7rules:get",
"elb:l7rules:list",
"elb:l7rules:create",
"elb:l7rules:delete",
"elb:healthmonitors:get",
"elb:healthmonitors:list",
"elb:healthmonitors:put",
"elb:healthmonitors:create",
"elb:healthmonitors:delete",
"elb:ipgroups:get",
"elb:ipgroups:list",
"elb:ipgroups:create",
"elb:ipgroups:put",
"elb:ipgroups:delete"
],
"Effect": "Allow",
"Resource": [
"*"
]
}
],
"Version": "1.1"
}
  • 针对全局级别服务策略
{
"Statement": [
{
"Action": [
"obs:bucket:*",
"obs:object:*"
],
"Effect": "Allow",
"Resource": [
"OBS:*:*:bucket:selectdb-bucket-demo",
"OBS:*:*:object:selectdb-bucket-demo/*"
]
},
{
"Action": [
"iam:credentials:getCredential",
"iam:credentials:listCredentials",
"iam:credentials:createCredential"
],
"Condition": {
"StringEquals": {
"g:UserName": [
"selectdb-user-demo"
]
}
},
"Effect": "Allow"
}
],
"Version": "1.1"
}

具体权限划分如下:

  • ECS 权限:
  • 项目级服务,管理 ECS 实例 YAML "ecs:cloudServers:list", "ecs:cloudServers:showServer", "ecs:cloudServers:createServers", "ecs:cloudServers:deleteServers", "ecs:cloudServers:updateServer", "ecs:cloudServers:changeChargeMode", "ecs:cloudServers:resize", "ecs:cloudServers:reboot", "ecs:cloudServers:stop", "ecs:cloudServers:start", "ecs:cloudServers:showServerBlockDevice", "ecs:cloudServers:listServerBlockDevices", "ecs:servers:get", "ecs:servers:list", "ecs:servers:start", "ecs:servers:stop", "ecs:servers:reboot", "ecs:servers:resize", "ecs:securityGroups:use", "ecs:servers:getTags", "ecs:servers:setTags", "ecs:cloudServers:batchSetServerTags", "evs:volumeTags:create", "evs:volumeTags:delete", "evs:volumes:*", "evs:volumes:get", "evs:volumes:extend", "bss:renewal:update", "bss:order:view", "bss:order:pay"
  • VPC & ELB 权限:
  • 项目级服务,获取 VPC 相关资源信息 YAML "vpc:vpcs:get", "vpc:vpcs:list", "vpc:subnets:get",
  • 项目级服务,管理安全组、端口 YAML "vpc:securityGroups:get", "vpc:securityGroups:create", "vpc:securityGroups:update", "vpc:securityGroups:delete", "vpc:securityGroupRules:get", "vpc:securityGroupRules:create", "vpc:securityGroupRules:delete", "vpc:ports:get", "vpc:ports:create", "vpc:ports:update", "vpc:ports:delete",
  • 项目级服务,管理负载均衡器 ELB 资源 YAML "elb:loadbalancers:get", "elb:loadbalancers:list", "elb:loadbalancers:create", "elb:loadbalancers:delete", "elb:loadbalancerTags:get", "elb:loadbalancerTags:create", "elb:loadbalancerTags:delete", "elb:listeners:get", "elb:listeners:list", "elb:listeners:create", "elb:listeners:delete", "elb:listenerTags:get", "elb:listenerTags:create", "elb:listenerTags:delete", "elb:pools:get", "elb:pools:list", "elb:pools:create", "elb:pools:delete", "elb:members:get", "elb:members:list", "elb:members:create", "elb:members:delete", "elb:l7policies:get", "elb:l7policies:list", "elb:l7policies:create", "elb:l7policies:delete", "elb:l7rules:get", "elb:l7rules:list", "elb:l7rules:create", "elb:l7rules:delete", "elb:healthmonitors:get", "elb:healthmonitors:list", "elb:healthmonitors:put", "elb:healthmonitors:create", "elb:healthmonitors:delete", "elb:ipgroups:get", "elb:ipgroups:list", "elb:ipgroups:create", "elb:ipgroups:put", "elb:ipgroups:delete",
  • OBS 权限:
  • 全局级服务,管理 OBS 存储桶以及对存储桶及其内容进行读写操作 YAML { "Effect": "Allow", "Action": [ "obs:bucket:*", "obs:object:*" ], "Resource": [ "OBS:*:*:bucket:selectdb-bucket-demo", "OBS:*:*:object:selectdb-bucket-demo/*" ] },
  • IAM 权限:
  • 全局级服务,允许当前子用户创建出永久 aksk YAML { "Action": [ "iam:credentials:getCredential", "iam:credentials:listCredentials", "iam:credentials:createCredential" ], "Condition": { "StringEquals": { "g:UserName": [ "selectdb-user-demo" ] } }, "Effect": "Allow" }