Skip to content

v1.27.0

Choose a tag to compare

@erikwang2013 erikwang2013 released this 31 Oct 09:30
· 221 commits to main since this release

v1.27.0

分布式存储与升级安全版:feature level 8 交付账户硬配额配置与动态 VPC 端点注册表,跨版本 MPU 增加 wire-1 有界回退,Level C 落地 Ext 类型能力协商,AP 增加 attested-proxy 端点身份,Raft 快照分块与日志压缩/分段,并补上停写蓝绿升级闸门与单机→集群工具。

新增

  • feature level 8:AccountHardQuotaSet 让 Raft 模式的账户硬配额配置(PUT /accounts/{id}/hard-quota)不再 501;VpcEndpointUpsert / VpcEndpointDelete 把动态 VPC 端点注册表纳入 OSSCTL3 快照,新增管理员 /api/v1/vpc-endpoints 列表/注册/删除。全 peer ≥8 才启用,旧节点单向门。
  • 跨版本 MPU:wire-1 属主走有界回退——预落盘、5 GiB 上限、本地 MD5 与属主 ETag 核对后经既有 UploadPart RPC 转发(v1.16+);裸 UUID 上传的 ListParts/Complete/Abort 归属发现与 Complete 幂等重放;≤v1.15 无 MPU RPC,明确不支持。
  • Level C:Ext 类型能力协商(x-oss-raft-ext-types 握手头;leader 在 append 前按 REGISTERED_EXT_TYPES 与全体当前 voter/learner 宣告集双重校验;成员变更 preflight 拒绝缺类型节点);在途 MPU 的 sse_kind 计入 CMK 引用,cmk scan --json 暴露 mpu_references,删除守卫在引用归零前拒绝。生产 REGISTERED_EXT_TYPES 仍为空,任意双向混写未支持。
  • AP 端点身份:新增可插拔 EndpointIdentityVerifier 与 trusted-proxy 验证器;attested-proxy 由可信网段内终止 mTLS/PrivateLink 的代理签发 HS256 短期 JWT(vpce/vpc/account/iat/exp),服务端验签、校验时效、要求可信直连 peer 并核对声明;证据写入审计,registry 检查不放宽。配置:OSS_AP_ENDPOINT_VERIFIER=attested-proxy、OSS_AP_ATTESTATION_SECRET(≥32 B)、OSS_AP_TRUSTED_PEER_CIDRS、OSS_AP_ATTESTATION_MAX_AGE_SECS(默认 60)。
  • Raft 存储:快照 >256 KiB 分块(旧整行透明读);日志 ≥1024 B entry 压缩为 z1:,append 事务内把连续 ≥256 条压成 raft_log_segment,读/truncate/purge 透明合并/切分;写事务先读后写改用 BEGIN IMMEDIATE,修复 WAL 下并发 apply 的 BUSY_SNAPSHOT 误报。
  • 运维与升级:upgrade-preflight.sh 新增 --health-json(强制 data_wire_version >= 2、data_plane_compatible: true)与 --require-no-mpu(任一在途 MPU 即 BLOCK);新增只读 blue-green-preflight.sh(冷备非空、旧服务仍响应即 BLOCK、新二进制版本校验、输出停写蓝绿手册与回滚边界);新增 oss-server --version/-V。
  • 单机→集群工具:single-to-cluster.sh 支持 plan/resume/verify、include/exclude 桶过滤、versioned/object-lock fail-closed 与 JSON 输出;新增 single-to-cluster-verify.sh 与网络无关自检。

兼容性 / 升级前置

  • feature 8 是单向门:v1.26.0 及更早节点 advertise ≤7,全集群升级并移除/升级旧节点前 effective 停在 7,AccountHardQuotaSet / VpcEndpoint* 在 append 前被拒。配置 [raft].feature_level=8 后逐节点重启。
  • Raft 日志新格式单向:新二进制写过压缩/分段日志后,旧二进制无法读取(fail-closed);数据面升级按停写蓝绿执行,写后不可回退。快照格式仍为 OSSCTL3,旧整行快照透明读回。
  • CMK 激活为不归点:DARE AAD 绑定 key_id,不存在 meta-only 降级;cmk rewrap 只能在同一 CMK 内升版本。回滚到 pre-CMK 二进制需要完整重加密或迁移到新集群,绝不删除 CMK 强降。
  • ≤v1.15 不支持跨版本 MPU:v1.16+ 走有界回退/wire-2 流式;升级/降级前必须 Complete/Abort/排空在途 MPU,并用 upgrade-preflight.sh --require-no-mpu --health-json 强制门槛。
  • 真实 PrivateLink/mTLS 端点身份未实现:attested-proxy 依赖可信网段内的终止代理与共享密钥;没有“证书→vpce”注册表,不把“有证书”当成“是该端点”,也不伪造 AWS API 身份。

验证

  • cargo fmt --all --check、clippy -p oss-server -p xl-store -p xl-s3 --all-targets -D warnings 通过。
  • 合并后 oss-server --lib 265/0、xl-s3 --lib 202/0、xl-store --lib 376/0/1。
  • 集成:m8_ap_trust 18/0、raft_cutover 7/0、raft_inventory_replication 12/0、raft_jobs_replication 11/0、raft_lifecycle_cursor_replication 8/0、raft_restore_lease_replication 3/0。
  • 脚本自检:upgrade-preflight 109/0、blue-green-preflight 78/0;真实二进制 --version 输出 oss-server 1.27.0。
  • 完整 cargo test --workspace 未在宿主高负载下聚合运行,发布以分 crate/分套件闸门为准。

仍未交付

任意双向混写、CMK→legacy 全量迁移、真实 AWS PrivateLink/mTLS 证书映射、≤v1.15 MPU、Raft 日志格式的 feature-level 门控(当前按停写蓝绿约束)。