このドキュメントでは、仮想マシン(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: バイナリをダウンロードして設定する
デプロイ内の各マシンに対して次の手順を繰り返します。
バイナリのディレクトリを作成し、そのディレクトリに移動します。
バイナリをダウンロードします。
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出力は次のようになります。
名前 状態 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: (省略可)デプロイをスケーリングする
ゾーン内の容量をスケーリングするには、非 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.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