VM デプロイをスケーリングする

データベース トラフィックのシフトを処理したり、パーティションをさらに保存したりするには、仮想マシン環境のサーバーノードの数を調整します。次の手順に沿って VM のデプロイを管理します。

始める前に

VM のデプロイをスケーリングする手順は次のとおりです。

ベスト プラクティスとして、水平方向にスケーリングするためにサーバーを追加する前に、サーバーあたり最大 32 GB のメモリまで垂直方向にスケーリングすることをおすすめします。

ルートサーバーを追加する

次の手順で、VM デプロイに新しいルートサーバーを追加します。

  1. 既存のゾーンの新しい VM で新しいサーバーを起動します。spanner start コマンドを使用してサーバーを初期化します。次の例では、ルートサーバーを起動します。

    spanner start \
      --root \
      --server-address=HOSTNAME \
      --zone=ZONE \
      --base-dir=BASE_DIR
    

    次のように置き換えます。

    • HOSTNAME: 新しい VM の解決可能な完全修飾ドメイン名(FQDN)またはホスト名(例: new-root-server.example.com)。
    • ZONE: ターゲット ゾーン(例: us-central1-a)。
    • BASE_DIR: データが保存されているディレクトリ パス(例: /spanner)。
  2. 既存のデプロイにサーバーを追加します。新しいルートサーバーをプライマリ デプロイに登録します。ホスト名とポートの引数が spanner start コマンドで使用されるパラメータと一致していることを確認し、ルートサーバーに割り当てるゾーンを指定します。

    spanner deployment servers create SERVER_ENDPOINT \
      --zone=ZONE \
      --deployment-endpoint=ENDPOINT
    

    次のように置き換えます。

    • SERVER_ENDPOINT: 新しいルートサーバーのアドレス(例: new-root-server.example.com:15000)。
    • ZONE: ターゲット ゾーン(例: us-central1-a)。
    • ENDPOINT: プライマリ デプロイのエンドポイント(例: my-spanner-deployment:15000)。

    spanner deployment servers create コマンドは、サーバーをデプロイに追加する長時間実行オペレーションを開始します。長時間実行オペレーションは、完了までにかなりの時間がかかることがあります。詳細については、Spanner ドキュメントの長時間実行オペレーションの管理とモニタリングをご覧ください。

  3. サーバーがデプロイに参加したことを確認します。サーバーを一覧表示して、サーバーが登録され、Ready 状態に移行したことを確認します。

    spanner deployment servers list \
      --zone=ZONE \
      --deployment-endpoint=ENDPOINT
    

非ルート サーバーを追加する

非 root サーバーを追加するには、VM で spanner プロセスを開始し、クラスタ内の 1 つ以上の root サーバーに接続してデプロイに参加するように構成します。

この例では、非 root サーバーを起動してデプロイに追加します。

spanner start \
  --server-address=HOSTNAME \
  --join-servers=JOIN_SERVERS \
  --zone=ZONE \
  --base-dir=BASE_DIR

次のように置き換えます。

  • HOSTNAME: 新しい VM のホスト名(例: new-non-root-server.example.com)。
  • JOIN_SERVERS: 既存のルートサーバー エンドポイントのカンマ区切りのリスト(例: root-server1.example.com:15000)。
  • ZONE: ゾーン名(例: us-central1-a)。
  • BASE_DIR: データが保存されているディレクトリ パス(例: /spanner)。

サーバーを削除する

同じ手順で、ルートサーバーまたは非ルートサーバーを削除します。ルートサーバーを削除する場合は、デプロイ内のルートサーバーの合計数が奇数(1 ~ 9)になるようにしてください。

VM サーバーを廃止する手順は次のとおりです。

  1. デプロイからサーバーを削除します。

    spanner deployment servers delete SERVER_ENDPOINT \
      --zone=ZONE \
      --deployment-endpoint=ENDPOINT
    

    次のように置き換えます。

    • SERVER_ENDPOINT: 削除するサーバーのアドレス(例: server-to-remove:15000)。
    • ZONE: サーバーを含むゾーン(例: us-central1-a)。
    • ENDPOINT: プライマリ デプロイのエンドポイント(例: my-spanner-deployment:15000)。
  2. データの再配置が完了するまで待ちます。パーティションの再配置には、サーバーでホストされているデータストアのサイズに応じて時間がかかります。サーバーが出力に表示されなくなるまで、サーバーのステータスをモニタリングします。

    spanner deployment servers list \
      --zone=ZONE \
      --deployment-endpoint=ENDPOINT
    
  3. サーバー プロセスをシャットダウンします。VM にログインし、spanner プロセスを停止します。

    データの破損や、切断されたサーバーが競合する更新を記録するのを防ぐため、古いデータフォルダを削除せずに、同じ base_dir を使用してこの VM の spanner プロセスを再起動しないでください。

次のステップ