VM にデプロイを作成する

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

Spanner Omni のプレビュー バージョンは、TLS 暗号化をサポートしていません。TLS 暗号化を使用してデプロイを作成できる機能を取得するには、Google にお問い合わせのうえ、Spanner Omni のフル バージョンの早期アクセスをリクエストしてください。

始める前に

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

  • SSH アクセス: Spanner Omni バイナリをダウンロードして実行するために、デプロイ内のすべてのマシンへの SSH アクセス権が必要です。

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

  • ネットワーキング: ネットワーク構成で、ポート 15000 から 15025 への TCP 通信が許可されています。

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

  • システム要件: システム要件をすべて満たしていることを確認します。

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

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

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

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

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

  • 単一のロケーション、複数のゾーン(レプリケートされたデプロイ): デプロイは、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

    出力は次のようになります。

    名前 状態 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: (省略可)デプロイをスケーリングする

ゾーン内の容量をスケーリングするには、非 root サーバーを追加します。新しい各サーバーで次のコマンドを実行します。

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
    

次のステップ