このドキュメントでは、Spanner Omni デプロイメントを維持する方法について説明します。Spanner Omni デプロイメントの維持には、定期的なヘルスチェック、異常な要素の廃止、サーバーノードまたは障害のあるディスクの交換が含まれます。これにより、クラスタの安定性と一貫性が確保されます。データベースの健全性を管理することで、データベースを計画外の停止から保護し、基盤となる Paxos コンセンサス グループの冗長性を維持できます。
メンテナンスを行うと、次のことが可能になります。
高可用性を確保する: 異常な仮想マシン(VM) または Pod を再プロビジョニングして、データベース サーバーの冗長性を維持します。これにより、ハードウェアに障害が発生した場合でもアプリケーションを実行し続けることができます。
データの安全性と整合性を保護する: 障害のあるディスクを持つノードを廃止して ストレージ障害がデータベースの他の部分に広がるのを防ぎます。 これにより、切断されたサーバーが競合する更新を記録しないようにすることもできます。
始める前に
Kubernetes デプロイメントでメンテナンスを行う前に、次の操作を行う必要があります。
Spanner Omni デプロイメントを作成します。詳細については、 Kubernetes にデプロイメントを作成するまたは VM にデプロイメントを作成するをご覧ください。
Kubernetes にデプロイする場合は、Helm をインストールして Helm チャート構成を作成します。
サーバーを置き換える
システムまたはストレージの障害を解決するために、デプロイメント内のサーバーを置き換える必要がある場合があります。
ルートサーバーを置き換える
ルートサーバーを置き換えるには、環境のタブを選択します。
Kubernetes
Kubernetes デプロイメントでルートサーバーを置き換えるには、次の手順を行います。既存の Kubernetes デプロイメントにルートサーバーを追加することはできませんが、既存のルートサーバーを置き換えて、回復不能なエラーを解決できます。
置き換えるサーバーを削除します。
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エラーを返すか、サーバーが登録されていないことを示すまで待ちます。サーバーをホストする 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 NAMESPACENAMESPACE: デプロイメントの Namespace(例:spanner-ns)。
Pod を削除します。
kubectl delete pod POD_NAME -n NAMESPACEPOD_NAMEは、削除するサーバー Pod の名前に置き換えます(例:spanner-a-1)。Kubernetes は、置き換え Pod で新しいサーバーを自動的に起動し、新しい PVC を接続します。
新しいサーバーをデプロイメントに追加します。
spanner deployment servers create SERVER_ENDPOINT --zone=ZONE引数が新しい Pod エンドポイントとゾーンに一致していることを確認します(例: エンドポイントとして
spanner-a-1.pod.spanner-ns:15000、ゾーンとしてus-central1-aを使用)。
VM
VM デプロイメントでルートサーバーを置き換えるには、次の手順を行います。
置き換えるサーバーを削除します。
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=ZONEZONE: サーバーを含むゾーン(例:us-central1-a)。
この手順は、サーバー上のデータの量に応じて数分かかることがあります。Spanner Omni は、このサーバーからデプロイメント内の他のサーバーにデータを再配置します。次のステップに進む前に、サーバーの削除が完了していることを確認してください。
削除の進行状況を追跡するには、サーバーのステータスを確認します。
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEコマンドが
NOT_FOUNDエラーを返すか、サーバーが登録されていないことを示すまで待ちます。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)。
新しいサーバーをデプロイメントに追加します。
spanner deployment servers create SERVER_ENDPOINT --zone=ZONE引数が新しいサーバーのパラメータに一致していることを確認します(例: エンドポイントとして
spanner-vm-1.example.com:15000、ゾーンとしてus-central1-aを使用)。
ルート以外のサーバーを置き換える
ルート以外のサーバーを置き換えるには、環境のタブを選択します。
Kubernetes
Kubernetes デプロイメントでルート以外のサーバーを置き換えるには、次の手順を行います。
置き換えるサーバーを削除します。
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エラーを返すか、サーバーが登録されていないことを示すまで待ちます。サーバーをホストする 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 NAMESPACENAMESPACE: デプロイメントの Namespace(例:spanner-ns)。
Pod を削除します。
kubectl delete pod POD_NAME -n NAMESPACEPOD_NAMEは、削除するサーバー Pod の名前に置き換えます(例:spanner-a-4)。Kubernetes は、置き換え Pod で新しいサーバーを自動的に起動し、新しい PVC を接続します。Spanner Omni は、新しいルート以外のサーバーをデプロイメントに自動的に登録します。
VM
VM デプロイメントでルート以外のサーバーを置き換えるには、次の手順を行います。
置き換えるサーバーを削除します。
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=ZONEZONE: サーバーを含むゾーン(例:us-central1-a)。
この手順は、サーバー上のデータの量に応じて数分かかることがあります。Spanner Omni は、このサーバーからデプロイメント内の他のサーバーにデータを再配置します。次のステップに進む前に、サーバーの削除が完了していることを確認してください。
削除の進行状況を追跡するには、サーバーのステータスを確認します。
spanner deployment servers describe SERVER_ENDPOINT --zone=ZONEコマンドが
NOT_FOUNDエラーを返すか、サーバーが登録されていないことを示すまで待ちます。ルート以外のサーバーを追加するの説明に沿って、クリーン ストレージでルート以外のサーバーを再プロビジョニングします。サーバーはデプロイメントに自動的に追加されます。