Spanner Omni デプロイを維持する

このドキュメントでは、Spanner Omni デプロイメントを維持する方法について説明します。Spanner Omni デプロイメントの維持には、定期的なヘルスチェック、異常な要素の廃止、サーバーノードまたは障害のあるディスクの交換が含まれます。これにより、クラスタの安定性と一貫性が確保されます。データベースの健全性を管理することで、データベースを計画外の停止から保護し、基盤となる Paxos コンセンサス グループの冗長性を維持できます。

メンテナンスを行うと、次のことが可能になります。

  • 高可用性を確保する: 異常な仮想マシン(VM) または Pod を再プロビジョニングして、データベース サーバーの冗長性を維持します。これにより、ハードウェアに障害が発生した場合でもアプリケーションを実行し続けることができます。

  • データの安全性と整合性を保護する: 障害のあるディスクを持つノードを廃止して ストレージ障害がデータベースの他の部分に広がるのを防ぎます。 これにより、切断されたサーバーが競合する更新を記録しないようにすることもできます。

始める前に

Kubernetes デプロイメントでメンテナンスを行う前に、次の操作を行う必要があります。

サーバーを置き換える

システムまたはストレージの障害を解決するために、デプロイメント内のサーバーを置き換える必要がある場合があります。

ルートサーバーを置き換える

ルートサーバーを置き換えるには、環境のタブを選択します。

Kubernetes

Kubernetes デプロイメントでルートサーバーを置き換えるには、次の手順を行います。既存の Kubernetes デプロイメントにルートサーバーを追加することはできませんが、既存のルートサーバーを置き換えて、回復不能なエラーを解決できます。

  1. 置き換えるサーバーを削除します。

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

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

    • SERVER_ENDPOINT: 削除するサーバー Pod エンドポイント。形式は SERVER.pod.NAMESPACE:PORT(例: spanner-a-1.pod.spanner-ns:15000)です。デプロイメント内のサーバー エンドポイント を確認するには、デプロイメント サーバーを一覧表示して spanner deployment servers list --zone=ZONEを実行します。
    • ZONE: サーバーを含むゾーン(例: us-central1-a)。

    この手順は、サーバー上のデータの量に応じて数分かかることがあります。Spanner Omni は、このサーバーからデプロイメント内の他のサーバーにデータを再配置します。次のステップに進む前に、サーバーの削除が完了していることを確認してください。

    削除の進行状況を追跡するには、サーバーのステータスを確認します。

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    コマンドが NOT_FOUND エラーを返すか、サーバーが登録されていないことを示すまで待ちます。

  2. サーバーをホストする Pod の永続ボリューム クレーム(PVC)を削除します。

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

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

    • DATA_VOLUME_NAME: データボリューム名(例: data-volume-spanner-a-1)。データボリューム名を確認するには、 `kubectl get pvc -n NAMESPACE` を実行して、Namespace 内の PVC を一覧表示します。 kubectl get pvc -n NAMESPACE
    • NAMESPACE: デプロイメントの Namespace(例: spanner-ns)。
  3. Pod を削除します。

    kubectl delete pod POD_NAME -n NAMESPACE
    

    POD_NAME は、削除するサーバー Pod の名前に置き換えます(例: spanner-a-1)。

    Kubernetes は、置き換え Pod で新しいサーバーを自動的に起動し、新しい PVC を接続します。

  4. 新しいサーバーをデプロイメントに追加します。

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    引数が新しい Pod エンドポイントとゾーンに一致していることを確認します(例: エンドポイントとして spanner-a-1.pod.spanner-ns:15000、ゾーンとして us-central1-a を使用)。

VM

VM デプロイメントでルートサーバーを置き換えるには、次の手順を行います。

  1. 置き換えるサーバーを削除します。

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

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

    • SERVER_ENDPOINT: サーバーの IP アドレスまたはホスト名とポート(例: spanner-vm-1.example.com:15000)。サーバー エンドポイントを確認するには、 `spanner deployment servers list --zone=ZONE` を実行してデプロイメント サーバーを一覧表示します。 spanner deployment servers list --zone=ZONE
    • ZONE: サーバーを含むゾーン(例: us-central1-a)。

    この手順は、サーバー上のデータの量に応じて数分かかることがあります。Spanner Omni は、このサーバーからデプロイメント内の他のサーバーにデータを再配置します。次のステップに進む前に、サーバーの削除が完了していることを確認してください。

    削除の進行状況を追跡するには、サーバーのステータスを確認します。

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    コマンドが NOT_FOUND エラーを返すか、サーバーが登録されていないことを示すまで待ちます。

  2. VM に Spanner Omni のデプロイメントを作成する の説明に沿って、クリーン ストレージでサーバーを再プロビジョニングします。

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

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

    • HOSTNAME: 新しい VM の解決可能な FQDN またはホスト名(例: spanner-vm-1.example.com)。
    • ZONE: ターゲット ゾーン(例: us-central1-a)。
    • BASE_DIR: データが保存されるパス(例: ./span-dir)。
  3. 新しいサーバーをデプロイメントに追加します。

    spanner deployment servers create SERVER_ENDPOINT --zone=ZONE
    

    引数が新しいサーバーのパラメータに一致していることを確認します(例: エンドポイントとして spanner-vm-1.example.com:15000、ゾーンとして us-central1-a を使用)。

ルート以外のサーバーを置き換える

ルート以外のサーバーを置き換えるには、環境のタブを選択します。

Kubernetes

Kubernetes デプロイメントでルート以外のサーバーを置き換えるには、次の手順を行います。

  1. 置き換えるサーバーを削除します。

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

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

    • SERVER_ENDPOINT: 削除するサーバー Pod エンドポイント。形式は SERVER.pod.NAMESPACE:PORT(例: spanner-a-4.pod.spanner-ns:15000)です。デプロイメント内のサーバー エンドポイント を確認するには、デプロイメント サーバーを一覧表示して spanner deployment servers list --zone=ZONEを実行します。
    • ZONE: サーバーを含むゾーン(例: us-central1-a)。

    この手順は、サーバー上のデータの量に応じて数分かかることがあります。Spanner Omni は、このサーバーからデプロイメント内の他のサーバーにデータを再配置します。次のステップに進む前に、サーバーの削除が完了していることを確認してください。

    削除の進行状況を追跡するには、サーバーのステータスを確認します。

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    コマンドが NOT_FOUND エラーを返すか、サーバーが登録されていないことを示すまで待ちます。

  2. サーバーをホストする Pod の永続ボリューム クレーム(PVC)を削除します。

    kubectl delete pvc DATA_VOLUME_NAME -n NAMESPACE
    

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

    • DATA_VOLUME_NAME: データボリューム名(例: data-volume-spanner-a-4)。データボリューム名を確認するには、 `kubectl get pvc -n NAMESPACE` を実行して、Namespace 内の PVC を一覧表示します。 kubectl get pvc -n NAMESPACE
    • NAMESPACE: デプロイメントの Namespace(例: spanner-ns)。
  3. Pod を削除します。

    kubectl delete pod POD_NAME -n NAMESPACE
    

    POD_NAME は、削除するサーバー Pod の名前に置き換えます(例: spanner-a-4)。

    Kubernetes は、置き換え Pod で新しいサーバーを自動的に起動し、新しい PVC を接続します。Spanner Omni は、新しいルート以外のサーバーをデプロイメントに自動的に登録します。

VM

VM デプロイメントでルート以外のサーバーを置き換えるには、次の手順を行います。

  1. 置き換えるサーバーを削除します。

    spanner deployment servers delete SERVER_ENDPOINT --zone=ZONE
    

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

    • SERVER_ENDPOINT: サーバーの IP アドレスまたはホスト名とポート(例: spanner-vm-4.example.com:15000)。サーバー エンドポイントを確認するには、 `spanner deployment servers list --zone=ZONE` を実行してデプロイメント サーバーを一覧表示します。 spanner deployment servers list --zone=ZONE
    • ZONE: サーバーを含むゾーン(例: us-central1-a)。

    この手順は、サーバー上のデータの量に応じて数分かかることがあります。Spanner Omni は、このサーバーからデプロイメント内の他のサーバーにデータを再配置します。次のステップに進む前に、サーバーの削除が完了していることを確認してください。

    削除の進行状況を追跡するには、サーバーのステータスを確認します。

    spanner deployment servers describe SERVER_ENDPOINT --zone=ZONE
    

    コマンドが NOT_FOUND エラーを返すか、サーバーが登録されていないことを示すまで待ちます。

  2. ルート以外のサーバーを追加するの説明に沿って、クリーン ストレージでルート以外のサーバーを再プロビジョニングします。サーバーはデプロイメントに自動的に追加されます。

次のステップ