本文档介绍了如何在虚拟机 (VM) 上部署 Spanner Omni。此部署没有加密。如果您想快速设置测试或概念验证环境来评估 Spanner Omni,那么创建不安全的部署是快速入门的最佳方式,因为它不需要您配置 mTLS 或其他安全措施。不过,由于存在安全风险(例如未加密的网络流量和开放式访问),我们不建议在生产环境中使用此配置。您可以选择单服务器部署或跨多个可用区的区域部署。
Spanner Omni 的 预览版 不支持 TLS 加密,并且会在您 创建部署 90 天后停止写入数据。如需提前使用具有完整功能的版本, 请与 Google 联系。
准备工作
在设置不安全的部署之前,请确保满足以下要求:
SSH 访问权限:拥有对部署中每台机器的 SSH 访问权限 ,以便下载和运行 Spanner Omni 二进制文件。
连接:部署中的所有机器都可以相互连接。
网络:您的网络配置允许在 端口
15000到15025上进行 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 步:下载并设置二进制文件
对部署中的每台机器重复执行以下步骤:
为二进制文件创建一个目录,然后导航到该目录。
下载二进制文件:
gsutil cp gs://spanner-omni/VERSION/spanner-omni-VERSION-linux-x86_64.tar.gz .您还可以使用
scp或其他文件传输工具将二进制文件复制到虚拟机。提取二进制文件:
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 步:确定部署拓扑 中创建的
deployment.yaml文件复制到其中一个根服务器。在该根服务器上,运行以下命令以创建部署:
spanner deployment create --config-file=deployment.yaml每台机器的控制台都会显示消息,表明部署已准备就绪。
通过列出可用区来验证部署:
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 快速入门。
如需与部署互动,请按照下列步骤操作:
创建一个数据库:
spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAME打开 SQL shell:
spanner sql --database=DATABASE_NAME创建表并插入数据:
CREATE TABLE names ( nameId INT64 NOT NULL, name STRING(100) ) PRIMARY KEY (nameId); INSERT INTO names (nameId, name) VALUES (1, "Jack");验证数据库和数据:
如需列出数据库,请运行:
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运行以下 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 中查看监控数据,请执行以下操作:
通过在
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在 Grafana 界面中创建信息中心,或使用
provisioning/dashboards预配信息中心。
设置提醒
使用 Grafana 界面或配置文件配置提醒。例如,如果事务延迟时间的第 95 百分位数 (p95) 超过 100 毫秒,您可以触发提醒。如需查看可用提醒的列表,请参阅 使用 Prometheus 提醒监控 Spanner Omni。
收集和分析跟踪记录
以 OTLP 格式收集分布式跟踪信息,并使用 Jaeger等工具将其可视化。
设置与 OTLP 兼容的跟踪记录收集器。对于 Jaeger:
export COLLECTOR_OTLP_ENABLED=true jaeger-all-in-one确保 OTLP 端口允许 Spanner Omni 和收集器之间的网络流量。
设置
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