在 VM 上建立部署項目

本文說明如何在虛擬機器 (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 或其他檔案傳輸工具,將二進位檔複製到 VM。

  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:與部署作業互動

部署作業完成後,您可以使用任何 VM 或本機電腦的 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

    輸出看起來類似以下內容:

    名稱 狀態 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 伺服器會透過通訊埠 15012 匯出 Prometheus 格式的指標。在 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 UI 中建立資訊主頁,或使用 provisioning/dashboards 佈建資訊主頁。

設定快訊

使用 Grafana UI 或設定檔設定快訊。舉例來說,如果交易延遲時間的第 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
    

後續步驟