このドキュメントでは、仮想マシン(VM)に Spanner Omni をデプロイする方法について説明します。このデプロイメントには暗号化がありません。Spanner Omni を評価するためのテスト環境または概念実証環境を迅速に設定する場合は、mTLS などのセキュリティ対策を構成する必要がないため、安全でないデプロイメントを作成するのが最も簡単な方法です。ただし、暗号化されていないネットワーク トラフィックやオープン アクセスなどのセキュリティ リスクがあるため、本番環境ではこの構成はおすすめしません。単一サーバーまたは複数のゾーンにまたがるリージョン デプロイを選択できます。
Spanner Omni のプレビュー版では TLS 暗号化がサポートされておらず、デプロイメントの作成から 90 日後にデータの書き込みが停止します。すべての機能を備えたエディションに早期アクセスするには、 Google にお問い合わせください。
始める前に
安全でないデプロイメントを設定する前に、次の要件を満たしていることを確認してください。
SSH アクセス: Spanner Omni バイナリをダウンロードして実行するには、デプロイメント内のすべてのマシンに SSH アクセスできる必要があります。
接続: デプロイメント内のすべてのマシンが 相互に接続できる。
ネットワーク: ネットワーク構成で、 ポート
15000~15025での 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: バイナリをダウンロードして設定する
デプロイメント内のマシンごとに次の手順を繰り返します。
バイナリのディレクトリを作成し、そのディレクトリに移動します。
バイナリをダウンロードします。
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 フラグで使用するポート) |
| ヘルスチェック URL | http://SERVER_IP:15012/healthz |
| 負荷分散戦略 | ラウンドロビン |
マルチロケーション デプロイメントの場合は、ロケーションごとに 1 つのロードバランサと、すべてのロケーションにトラフィックを分散するプライマリ ロードバランサを設定できます。
ステップ 6: デプロイメントを操作する
デプロイメントの準備ができたら、任意の VM またはローカルマシンから CLI を使用して操作できます。デベロッパー ラップトップなどの別のマシンから CLI を実行する場合は、CLI パッケージをダウンロードして抽出します。詳細については、 以下 の Spanner Omni CLI を使用したクイックスタートをご覧ください。
デプロイメントを操作する手順は次のとおりです。
データベースを作成します。
spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAMESQL シェルを開きます。
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 READY 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: 10mGrafana UI でダッシュボードを作成するか、
provisioning/dashboardsを使用してプロビジョニングします。
アラートを設定する
Grafana UI または構成ファイルを使用してアラートを構成します。たとえば、トランザクション レイテンシの 95 パーセンタイル(p95)が 100 ミリ秒を超えた場合にアラートをトリガーできます。使用可能なアラートの一覧については、 Prometheus アラートを使用して Spanner Omni をモニタリングするをご覧ください。
トレースを収集して分析する
OTLP 形式で分散トレース情報を収集し、 Jaegerなどのツールで可視化します。
OTLP 互換のトレース コレクタを設定します。Jaeger の場合:
export COLLECTOR_OTLP_ENABLED=true jaeger-all-in-oneOTLP ポートで、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