VM にデプロイを作成する

このドキュメントでは、仮想マシン(VM)に Spanner Omni をデプロイする方法について説明します。このデプロイメントには暗号化がありません。Spanner Omni を評価するためのテスト環境または概念実証環境を迅速に設定する場合は、mTLS などのセキュリティ対策を構成する必要がないため、安全でないデプロイメントを作成するのが最も簡単な方法です。ただし、暗号化されていないネットワーク トラフィックやオープン アクセスなどのセキュリティ リスクがあるため、本番環境ではこの構成はおすすめしません。単一サーバーまたは複数のゾーンにまたがるリージョン デプロイを選択できます。

Spanner Omni のプレビュー版では TLS 暗号化がサポートされておらず、デプロイメントの作成から 90 日後にデータの書き込みが停止します。すべての機能を備えたエディションに早期アクセスするには、 Google にお問い合わせください

始める前に

安全でないデプロイメントを設定する前に、次の要件を満たしていることを確認してください。

  • SSH アクセス: Spanner Omni バイナリをダウンロードして実行するには、デプロイメント内のすべてのマシンに SSH アクセスできる必要があります。

  • 接続: デプロイメント内のすべてのマシンが 相互に接続できる。

  • ネットワーク: ネットワーク構成で、 ポート 1500015025 での TCP 通信が許可されている。

  • ストレージ: 各マシンに、 デプロイメントが処理するデータをホストするのに十分なストレージがある。

  • システム要件: セットアップがすべての システム要件を満たしていることを確認する。

  • vSphere の構成: vSphere 仮想化プラットフォームで Spanner Omni を実行している場合は、タイムスタンプ カウンタ(TSC)の仮想化を無効にします。 仮想マシンの .vmx 構成ファイルに monitor_control.virtual_rdtsc = FALSE を追加します。

ステップ 1: デプロイ トポロジを決定する

Spanner Omni は、ロケーション、ゾーン、サーバーの階層を使用してデプロイ トポロジを定義します。可用性の目標に応じて、次のトポロジから選択できます。

  • 単一サーバー: デプロイメントには、 1 台のマシンで実行される単一のサーバーがあります。

  • 単一ゾーン: デプロイメントは、 単一ゾーンに分散された複数のサーバーで実行されます。

  • 単一ロケーション、複数ゾーン (レプリケートされたデプロイメント): デプロイメントは、1 つのロケーション内の複数のゾーンに分散された複数のサーバーで実行されます。

  • 複数ロケーション、複数ゾーン: デプロイメントは、複数のロケーションと複数のゾーンに分散された複数の サーバーで実行されます。

詳細については、 Spanner Omni の主な用語Spanner Omni のデプロイ構成をご覧ください。

単一サーバー以外のデプロイメントの場合は、トポロジを定義する deployment.yaml という名前の YAML 構成ファイルを作成します。このファイルでは、ルートサーバーのみを指定します。ルート以外のサーバーは後で追加します。

例: レプリケートされたマルチゾーン デプロイメント

次の例は、3 つのゾーンにまたがるリージョン デプロイの構成を示しています。

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

例: マルチロケーション デプロイメント

次の例は、3 つのロケーションにまたがるデプロイメントの構成を示しています。

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 フラグで使用するポート)
ヘルスチェック URL http://SERVER_IP:15012/healthz
負荷分散戦略 ラウンドロビン

マルチロケーション デプロイメントの場合は、ロケーションごとに 1 つのロードバランサと、すべてのロケーションにトラフィックを分散するプライマリ ロードバランサを設定できます。

ステップ 6: デプロイメントを操作する

デプロイメントの準備ができたら、任意の VM またはローカルマシンから CLI を使用して操作できます。デベロッパー ラップトップなどの別のマシンから CLI を実行する場合は、CLI パッケージをダウンロードして抽出します。詳細については、 以下 の Spanner Omni CLI を使用したクイックスタートをご覧ください。

デプロイメントを操作する手順は次のとおりです。

  1. データベースを作成します。

    spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAME
    
  2. SQL シェルを開きます。

    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 READY 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.ymlscrape_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
    

次のステップ