在虚拟机上创建部署

本文档介绍了如何在虚拟机 (VM) 上部署 Spanner Omni。此部署没有加密。如果您想快速设置测试或概念验证环境来评估 Spanner Omni,那么创建不安全的部署是快速入门的最佳方式,因为它不需要您配置 mTLS 或其他安全措施。不过,由于存在安全风险(例如未加密的网络流量和开放式访问),我们不建议在生产环境中使用此配置。您可以选择单服务器部署或跨多个可用区的区域部署。

Spanner Omni 的 预览版 不支持 TLS 加密,并且会在您 创建部署 90 天后停止写入数据。如需提前使用具有完整功能的版本, 请与 Google 联系

准备工作

在设置不安全的部署之前,请确保满足以下要求:

  • SSH 访问权限:拥有对部署中每台机器的 SSH 访问权限 ,以便下载和运行 Spanner Omni 二进制文件。

  • 连接:部署中的所有机器都可以相互连接。

  • 网络:您的网络配置允许在 端口 1500015025 上进行 TCP 通信。

  • 存储空间:每台机器都有足够的存储空间来托管 部署处理的数据。

  • 系统要求:确保您的设置满足所有 系统要求

  • vSphere 配置:如果您在 vSphere 虚拟化平台上运行 Spanner Omni,请停用时间戳计数器 (TSC) 的虚拟化。将 monitor_control.virtual_rdtsc = FALSE 添加到虚拟机的 .vmx 配置文件。

第 1 步:确定部署拓扑

Spanner Omni 使用位置、可用区和服务器的层次结构来定义其部署拓扑。您可以根据可用性目标选择以下拓扑:

  • 单服务器:部署具有在 单台机器上运行的单个服务器。

  • 单可用区:部署在分布于 单个可用区的多台服务器上运行。

  • 单位置、多可用区 (复制部署):部署在分布于一个位置的多个可用区的多台服务器上运行。

  • 多位置、多可用区:部署在分布于多个位置和多个可用区的多台 服务器上运行。

如需了解详情,请参阅 Spanner Omni 关键术语Spanner Omni 部署配置

对于单服务器以外的任何部署,请创建一个名为 deployment.yaml 的 YAML 配置文件,用于定义拓扑。在此文件中仅指定根服务器。稍后添加非根服务器。

示例:复制的多可用区部署

以下示例展示了跨三个可用区的区域部署的配置。

name: regional-deployment
location:
  - name: us-central1
zone:
  - name: us-central1-a
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver1
  - name: us-central1-b
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver2
  - name: us-central1-c
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver3

示例:多位置部署

以下示例展示了跨三个位置的部署的配置。

name: multi-location-deployment
location:
  - name: us-central1
  - name: europe-west2
  - name: asia-southeast1
zone:
  - name: us-central1-a
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver1
  - name: europe-west2-a
    location: europe-west2
    single_server: false
    root_server:
      - host: rootserver2
  - name: asia-southeast1-a
    location: asia-southeast1
    single_server: false
    root_server:
      - host: rootserver3

第 2 步:下载并设置二进制文件

对部署中的每台机器重复执行以下步骤:

  1. 为二进制文件创建一个目录,然后导航到该目录。

  2. 下载二进制文件:

    gsutil cp gs://spanner-omni/VERSION/spanner-omni-VERSION-linux-x86_64.tar.gz .
    

    您还可以使用 scp 或其他文件传输工具将二进制文件复制到虚拟机。

  3. 提取二进制文件:

    tar -xvf spanner-omni-VERSION-linux-x86_64.tar.gz
    

第 3 步:启动服务器

在每台服务器上创建一个基本目录,用于存储数据、元数据和日志。如果服务器需要重启,请指定同一目录以确保连续性。

选项 A:单服务器部署

对于单服务器部署,请运行以下命令:

spanner start-single-server --base-dir=SPANNER_BASE_DIR

服务器启动后,请继续执行第 6 步:与部署互动

选项 B:横向扩容部署

对于横向扩容部署,请在每台机器上启动服务器。--server-address--zone 标志与部署配置中的值匹配。网络会解析 server_address

spanner start --root --server-address=RESOLVABLE_HOSTNAME --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR

例如:

spanner start --root --server-address=rootserver1 --zone=us-central-1a --base-dir=./spanbasedir

第 4 步:创建部署

如需创建部署,请按照下列步骤操作:

  1. 将您在 第 1 步:确定部署拓扑 中创建的 deployment.yaml 文件复制到其中一个根服务器。

  2. 在该根服务器上,运行以下命令以创建部署:

    spanner deployment create --config-file=deployment.yaml
    

    每台机器的控制台都会显示消息,表明部署已准备就绪。

  3. 通过列出可用区来验证部署:

    spanner deployment zones list
    

    输出会列出您在 deployment.yaml 中指定的位置、可用区和服务器。

第 5 步:(可选)配置负载均衡器

设置 TCP 负载均衡器,并提供以下详细信息:

设置
协议 TCP
后端 IP 服务器的 IP 地址
端口 15000(或您在 --server-address 标志中使用的端口)
健康检查网址 http://SERVER_IP:15012/healthz
均衡策略 轮循

对于多位置部署,您可以为每个位置设置一个负载均衡器,并设置一个主负载均衡器以在所有位置之间分配流量。

第 6 步:与部署互动

部署准备就绪后,您可以使用任何虚拟机或本地机器中的 CLI 与其互动。如果您从单独的机器(例如开发者笔记本电脑)运行 CLI,请下载并提取 CLI 软件包。如需了解详情, 请参阅 使用 Spanner Omni CLI 快速入门

如需与部署互动,请按照下列步骤操作:

  1. 创建一个数据库:

    spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAME
    
  2. 打开 SQL shell:

    spanner sql --database=DATABASE_NAME
    
  3. 创建表并插入数据:

    CREATE TABLE names (
      nameId INT64 NOT NULL,
      name STRING(100)
    ) PRIMARY KEY (nameId);
    
    INSERT INTO names (nameId, name) VALUES (1, "Jack");
    
  4. 验证数据库和数据:

    如需列出数据库,请运行: bash spanner databases list

    输出类似于以下内容:

    NAME 状态 VERSION_RETENTION_PERIOD EARLIEST_VERSION_TIME ENABLE_DROP_PROTECTION
    DATABASE_NAME 准备就绪 1 小时 2025-02-07T12:25:30Z false

    如需查询表,请运行: bash spanner sql --database=DATABASE_NAME

  5. 运行以下 SQL 命令:

    SHOW TABLES;
    SELECT * FROM names;
    

第 7 步:(可选)扩缩部署

如需扩缩可用区内的容量,您可以添加非根服务器。在每个新服务器上运行以下命令:

spanner start --server-address=NON_ROOT_HOSTNAME --join-servers=SERVER1:PORT1,SERVER2:PORT2,SERVER3:PORT3 --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR

第 8 步:(可选)观察部署

如需监控部署的健康状况和性能,您可以设置指标收集、可视化和提醒。您还可以收集分布式跟踪记录来分析请求延迟时间。

设置 Prometheus

Spanner Omni 服务器以 Prometheus 格式在端口 15012 上导出指标。将以下内容添加到 prometheus.yml 中的 scrape_configs

scrape_configs:
  - job_name: 'spanner'
    static_configs:
      - targets: ['HOST1:15012', 'HOST2:15012', 'HOSTN:15012']

设置 Grafana

如需在 Grafana 中查看监控数据,请执行以下操作:

  1. 通过在 provisioning/datasources 中创建一个文件来预配 Prometheus 数据源:

    apiVersion: 1
    datasources:
      - name: Prometheus
        uid: prometheus
        type: prometheus
        access: proxy
        url: http://PROMETHEUS_HOST:PROMETHEUS_PORT
        jsonData:
          httpMethod: POST
          manageAlerts: false
          prometheusType: Prometheus
          prometheusVersion: PROMETHEUS_VERSION
          cacheLevel: 'High'
          disableRecordingRules: false
          incrementalQueryOverlapWindow: 10m
    
  2. 在 Grafana 界面中创建信息中心,或使用 provisioning/dashboards 预配信息中心。

设置提醒

使用 Grafana 界面或配置文件配置提醒。例如,如果事务延迟时间的第 95 百分位数 (p95) 超过 100 毫秒,您可以触发提醒。如需查看可用提醒的列表,请参阅 使用 Prometheus 提醒监控 Spanner Omni

收集和分析跟踪记录

以 OTLP 格式收集分布式跟踪信息,并使用 Jaeger等工具将其可视化。

  1. 设置与 OTLP 兼容的跟踪记录收集器。对于 Jaeger:

    export COLLECTOR_OTLP_ENABLED=true
    jaeger-all-in-one
    

    确保 OTLP 端口允许 Spanner Omni 和收集器之间的网络流量。

  2. 设置 SPANNER_BOX_OTLP_TRACE_EXPORTER_ENDPOINT 环境变量并启动 Spanner Omni 服务器:

    export SPANNER_BOX_OTLP_TRACE_EXPORTER_ENDPOINT=COLLECTOR_HOST:COLLECTOR_PORT
    spanner start --root --server-address=RESOLVABLE_HOSTNAME --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR
    

后续步骤