本文說明如何在虛擬機器 (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或其他檔案傳輸工具,將二進位檔複製到 VM。解壓縮二進位檔:
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:與部署作業互動
部署作業完成後,您可以使用任何 VM 或本機電腦的 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輸出看起來類似以下內容:
名稱 狀態 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 伺服器會透過通訊埠 15012 匯出 Prometheus 格式的指標。在 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 UI 中建立資訊主頁,或使用
provisioning/dashboards佈建資訊主頁。
設定快訊
使用 Grafana UI 或設定檔設定快訊。舉例來說,如果交易延遲時間的第 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