Skip to content
39 changes: 37 additions & 2 deletions content/cn/docs/quickstart/computing/hugegraph-vermeer.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ Vermeer 是使用 Go 编写的高性能内存优先图计算框架,支持一

master 是负责通信、转发、汇总的节点,计算量和占用资源量较少。worker 是计算节点,用于存储图数据和运行计算任务,占用大量内存和 cpu。grpc 和 rest 模块分别负责内部通信和外部调用。

启动时,程序先设置内置默认值,再读取工作目录下 `config/<env>.ini` 的 `[default]` 节,最后由显式命令行参数覆盖对应配置;例如 `--env=master` 读取 `config/master.ini`。Docker 镜像把仓库中的配置复制到 `/go/bin/config/`,并以 `/go/bin/` 为工作目录。挂载宿主机目录到 `/go/bin/config` 会遮住镜像自带文件,因此该目录必须包含实际使用的 ini 文件。配置读取器不从环境变量取值。
启动时,程序先设置内置默认值,再读取工作目录下 `config/<env>.ini` 的 `[default]` 节,最后由显式命令行参数覆盖对应配置;例如 `--env=master` 读取 `config/master.ini`。Docker 镜像把仓库中的配置复制到 `/go/bin/config/`,并以 `/go/bin/` 为工作目录。挂载宿主机目录到 `/go/bin/config` 会遮住镜像自带文件,因此该目录必须包含实际使用的 ini 文件。普通 INI 配置键不会自动映射环境变量。部署专用凭据设置还支持
`VERMEER_PD_PASSWORD_FILE`、`VERMEER_PD_PEERS`、`VERMEER_HUGEGRAPH_CREDENTIALS_FILE` 及文档中的签名因子/密码文件设置。

默认端口如下:

Expand All @@ -37,10 +38,44 @@ flowchart LR

### 1.2 运行方法

> [!DETAILS]- Helm:与 HugeGraph、Hubble 一起部署 Vermeer
> HugeGraph Helm Chart 支持一键拉起原生 Vermeer 内存图计算引擎,默认保持关闭。
> 在 HugeGraph 仓库根目录下,开启 Vermeer 并启动:
>
> ```bash
> helm install hugegraph ./helm/hugegraph -n hugegraph --create-namespace \
> -f helm/hugegraph/values-single.yaml \
> --set vermeer.enabled=true --set vermeer.mode=standalone \
> --wait --timeout 20m
> ```
>
> ```filetree {wrap=true title="Vermeer 核心文件与配置结构"}
> helm/hugegraph/
> examples/
> values-vermeer-standalone.yaml # 单机预设(单个 Pod 同时运行 Master 与 Worker 容器)
> values-vermeer-cluster.yaml # 集群预设(独立 Master Pod + 多 Worker Pods 分布式计算)
> templates/
> vermeer-master.yaml # Master 调度节点编排
> vermeer-worker.yaml # Worker 内存计算节点编排
> vermeer-auth-secret.yaml # 管理员密码与 Hubble 内部调用服务令牌
> docs/
> vermeer.md # Vermeer 算法调用、参数映射与运维指引
> ```
>
> **架构与运行模式**:
> - **单机模式(standalone)**:Master 与 Worker 运行在同一个 Pod 中,开销小,适合小规模图计算测试。
> - **集群模式(cluster)**:设 `vermeer.mode=cluster` 与 `vermeer.worker.replicas=3`,提供独立的 Master 协调节点与多个分布式 Worker 计算节点。
> - **图服务协同**:Master 通过 gRPC 向 PD 查询分区信息,Worker 直连 Store 扫描图数据切片;Hubble 会自动注入 Master 地址与通信令牌,在可视化界面中一键加载图并执行 15+ 种图算法。
>
> **核心注意事项**:
> 1. **保持元数据命名空间一致**:保留 Chart 默认的 `metadataCluster: hg-test`。该值统一了 Server 的 `HG_SERVER_CLUSTER` 与 Store 的 `PD_CLUSTER`,确保 Schema 正确读取;切勿随意修改该值,以免计算加载时报 `Schema missing`。
> 2. **访问原生 Web 控制台**:原生 UI 默认以私有 ClusterIP 运行。如需直连管理,可通过 `kubectl port-forward svc/<release>-vermeer-master 6688:6688` 转发,并在 **Admin credential** 处填入 `<release>-vermeer-admin` Secret 中的 `password`(无需用户名),登录后获得 24 小时有效会话。
> 3. 详细镜像固定策略、持久卷配置及运维命令可参考 [Helm 可选引擎指南](/cn/docs/quickstart/hugegraph/hugegraph-helm/#optional-engines) 与 [Vermeer 部署指南](https://github.com/hugegraph/hugegraph/blob/master/helm/hugegraph/docs/vermeer.md)。

> [!WARNING]
> 生产环境必须启用 HugeGraph Server [认证与授权](/cn/docs/config/config-authentication/)、IP 白名单和最小权限授权,并保留 `audit-*.log` 审计记录。Server Auth 不会保护 Vermeer、PD 和 Store 的独立接口;这些 HTTP、gRPC 端口必须限制在可信网络及调用方范围内,Vermeer 对外入口需配置访问控制。
>
> Vermeer 的 `master.ini` 默认 `auth=none`,普通及管理 API 均未启用鉴权。本机快速上手只发布回环端口;远程访问前必须启用 `auth=token`,或通过受保护网络、网关将访问限制到可信调用方。
> 独立手动部署时,默认 `master.ini` 配置为 `auth=none`,下方 Docker 示例仅发布至回环地址;若需远程访问,务必在配置文件中启用 `auth=token`。Helm 部署则已默认开启 Token 鉴权与私有 Service 隔离。

下面两种 Docker 启动方式都需要先准备一个宿主机配置目录。请在 Vermeer 仓库根目录执行,将项目提供的 [`master.ini`](https://github.com/apache/hugegraph-computer/blob/master/vermeer/config/master.ini) 和 [`worker.ini`](https://github.com/apache/hugegraph-computer/blob/master/vermeer/config/worker.ini) 模板复制到该目录;挂载会覆盖镜像里的 `/go/bin/config`,所以不要把空目录或整个用户主目录挂进去:

Expand Down
35 changes: 32 additions & 3 deletions content/cn/docs/quickstart/hugegraph/hugegraph-helm-operations.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ search_keywords: [HugeGraph Helm 运维, local PV, NetworkPolicy, PD, Store]

## 1 存储和内网镜像 {#1-storage-and-private-images}

默认安装需要七个持久卷。动态存储需要正常的 provisioner,静态 local 存储需要预建目录和绑定节点的匹配 PV。
基础安装需要七个持久卷。动态存储需要正常的 provisioner,静态 local 存储需要预建目录和绑定节点的匹配 PV。
[完整例子](https://github.com/apache/hugegraph/tree/master/helm/hugegraph/examples)包含七个 local PV、`WaitForFirstConsumer`、镜像仓库和 GitOps Secret。
`WaitForFirstConsumer` 的 PVC 初期 Pending 可以是正常等待;持续 Pending 应检查 PVC/Pod 事件和 PV 匹配。
PVC 已绑定但目录不存在或权限不匹配时可能挂载失败,不能把故障 PVC 静默替换成临时目录。
Expand All @@ -25,6 +25,11 @@ kubectl get pv,storageclass

出现 `ImagePullBackOff` 时检查 Pod 事件、仓库连通性和拉取凭据。默认只需四个组件镜像,等待 Store/Helm test 复用已包含 curl 的组件镜像。
如显式覆盖 helper 镜像,该镜像也需要同步到内网仓库。
启用 SeaTunnel 还需配置的 `apache/seatunnel` 镜像;启用 Vermeer 使用按 digest 固定的 `hugegraph/vermeer:helm-30b67d93e7d0`,
Master、Worker 和令牌初始化共用它。[官方发布运行](https://github.com/hugegraph/actions/actions/runs/40653109759)记录源码与镜像 digest,
详见 [Vermeer 部署指南](https://github.com/hugegraph/hugegraph/blob/e0f6b071c31e645127226ee5c1217a4fb4196732/helm/hugegraph/docs/vermeer.md)。
自定义镜像覆盖还需同步更新 `vermeer.image.digest`,或显式清空以按标签选择;非空 digest 优先。
基础 local PV 示例不包含 Vermeer 卷:单机增加两个,集群增加一个 Master 卷及每 Worker 一个卷,默认增加四个。

## 2 端口和健康检查 {#2-ports-and-health}

Expand All @@ -34,6 +39,26 @@ PD `/v1/ready` 需要 Raft leader,`/v1/health` 只说明监听器已启动,S
Server 等待存储的默认上限为 300 秒,可以用 `server.storageWaitTimeoutSeconds` 调整。
本地模板渲染不能验证集群连通性、卷挂载或 JVM 运行容量。

### 保留元数据命名空间 {#metadata-namespace}

`metadataCluster: hg-test` 用于声明 Server 和 Store 访问 PD 时的元数据前缀(注入至 Server 的 `HG_SERVER_CLUSTER` 与 Store 的 `PD_CLUSTER`)。
它并非 Raft 分组名,修改该值不会自动迁移历史元数据。**切勿**为了启用 Vermeer 将已有集群的前缀随意变更。若遇到 Server 查询正常但 Vermeer 扫描 Store 报 `Schema missing` 或 `no such vertex label`,应优先核查各组件的元数据前缀是否完全一致。

若历史自建环境使用了非默认前缀,升级前需在 Server Deployment 显式标注确认:

```bash
kubectl -n hugegraph annotate deployment hugegraph-server \
hugegraph.apache.org/metadata-cluster='<已核准的历史前缀>'
```

并在 values 中将 `metadataCluster` 设为同一值。对于采用 `store.updateStrategy.type=OnDelete` 策略的 Store 节点,需按[受控滚动升级流程](#6-rolling-store-images-safely)逐个重建 Pod,新配置方可生效。

> [!DETAILS]- 可选引擎运维:探针、凭据与拓扑切换
> - **端口与健康状态**:SeaTunnel HTTP/UI 端口为 `8080`;Vermeer Master HTTP/gRPC 为 `6688/6689`,Worker 为 `6788/6789`。两款引擎的原生接口在两种模式下均保持私有 ClusterIP。
> - **密码与会话**:初次部署生成的管理密码在 easy 模式下为 6 位字符,strict 模式下为 16 位;后续升级与模式切换均自动保留既有凭据。Vermeer 原生控制台直接在 **Admin credential** 填入 `<release>-vermeer-admin` Secret 的 `password` 即可登录;Hubble 内部服务凭据已自动注入。
> - **拓扑与副本切换**:修改 `seatunnel.mode` 或 `vermeer.mode` 前,请确保所有计算与导入批任务已结束并卸载内存图副本。单机与集群使用独立的数据卷声明,拓扑切换不会自动迁移本地文件。
> - 完整恢复指引与进阶参数详见 [Vermeer 部署指南](https://github.com/apache/hugegraph/blob/master/helm/hugegraph/docs/vermeer.md) 与 [SeaTunnel 部署指南](https://github.com/apache/hugegraph/blob/master/helm/hugegraph/docs/seatunnel.md)。

### Helm test 检查范围 {#helm-test-coverage}

`helm test` 逐 Server Pod 检查图绑定(默认检查 `DEFAULT-hugegraph`,可通过 `server.testGraphAlias` 指定图别名),并要求当前可见关联索引处于 `CREATED` 状态。
Expand Down Expand Up @@ -87,10 +112,11 @@ PD 会持久化分区设置,初始化后修改 chart 值不会覆盖已有元

## 5 NetworkPolicy {#5-networkpolicy}

easy 模式及普通集群预设默认关闭,strict 模式默认开启;显式 `networkPolicy.enabled` 在任何模式都优先。
基础服务的完整隔离在 easy 和普通集群预设下默认关闭,strict 下开启。
SeaTunnel 和 Vermeer 的私有 ClusterIP、登录及原生 HTTP/RPC 入口限制始终生效,`networkPolicy.enabled=false` 也不例外。
集群网络插件必须支持策略执行,才有实际隔离效果。
生成策略允许组件间通信和 DNS,外部客户端、Ingress 控制器需要适当的 `networkPolicy.<component>.extraIngress`,
外部发现地址可能还需要 `extraEgress`。空列表合法但可能阻止外部访问;支持 Kubernetes 原生规则,包括允许全部的 `{}`,不要求额外来源确认。
外部发现地址可能还需要 `extraEgress`。基础服务规则的空列表合法但可能阻止外部访问,并支持 Kubernetes 原生规则,包括允许全部的 `{}`。
按实际来源地址或 selector 配置,并考虑 NodePort SNAT 和控制器行为。

```yaml
Expand All @@ -114,6 +140,9 @@ networkPolicy:
port: 8088
```

原生引擎的 ingress 只接受显式内部 Pod/namespace selector,拒绝 IP block 和允许全部的规则。
上面的基础服务示例用于 Server,不用于对外暴露原生引擎;外部数据源可按需配置引擎 `extraEgress`,strict 进一步限制出站流量。

## 6 逐个升级 Store {#6-rolling-store-images-safely}

集群预设使用 `store.updateStrategy.type=OnDelete` 便于维护时控制逐个替换。
Expand Down
Loading
Loading