チュートリアル4: ブロックストレージボリュームがマウントされたサービスを作成する¶
概要¶
このチュートリアルでは、ブロックストレージボリュームを使用するシンプルなサービスを作成するためのステップバイステップの手順を説明します。また、ストレージボリュームのスナップショットを取得し、スナップショットの使用方法を検討します。
サービスの作成¶
チュートリアル1 に従って、サンプルサービスのコードをダウンロードし、Dockerイメージを作成し、Snowflakeアカウントのリポジトリにアップロードします。
リポジトリに
my_echo_service_image
イメージがあることを確認します。SHOW IMAGES IN IMAGE REPOSITORY tutorial_db.data_schema.tutorial_repository;
サービスを作成します。サービスが実行されると、コンテナには10 Giブロックボリュームストレージがマウントされます。
CREATE SERVICE my_service IN COMPUTE POOL tutorial_compute_pool FROM SPECIFICATION $$ spec: containers: - name: echo image: /tutorial_db/data_schema/tutorial_repository/my_echo_service_image:latest volumeMounts: - name: block-vol1 mountPath: /opt/block/path readinessProbe: port: 8080 path: /healthcheck endpoints: - name: echoendpoint port: 8080 public: true volumes: - name: block-vol1 source: block size: 10Gi $$;
注釈
このチュートリアルでは、ブロックストレージボリュームでサービスを作成する方法のみを説明します。サービスコード(チュートリアル1コードの検証)はボリュームを使用しません。
サービスステータスの確認:
SELECT SYSTEM$GET_SERVICE_STATUS('my_service');
スナップショットを取る¶
CREATE SNAPSHOT コマンドを使用して、サービスインスタンス0にアタッチされているブロックストレージボリュームのスナップショットを取ります。インスタンス0を指定したのは、1つのサービスインスタンスしか実行していないからです。
VOLUME パラメーターの名前は、サービス仕様の名前の大文字と小文字を一致させるために、二重引用符で囲んでください。
CREATE SNAPSHOT my_snapshot FROM SERVICE my_service VOLUME "block-vol1" INSTANCE 0 COMMENT='new snapshot';
スナップショットを確認する
SHOW SNAPSHOTS を使用して、スナップショットを一覧表示します。
SHOW SNAPSHOTS;
DESCRIBE SNAPSHOT を使用して、特定のスナップショットの情報を取得します。
DESC SNAPSHOT my_snapshot;
ALTER SNAPSHOT コマンドを実行して、スナップショットを変更します。
ALTER SNAPSHOT my_snapshot SET comment='updated comment';
スナップショットを使用する¶
スナップショットは次の2つの方法で使用できます。
新しいサービスを作成するためにスナップショットを使用する: 新しいサービスの作成時に、スナップショットをブロックストレージボリュームの初期コンテンツとして使用することができます。以下の CREATE SERVICE コマンドは、50 Giブロックストレージボリュームを持つ別のサービス(
new_service
)を作成します。インライン仕様には、ブロックストレージボリュームの初期化に使用するスナップショット名が含まれます。CREATE SERVICE new_service IN COMPUTE POOL tutorial_compute_pool FROM SPECIFICATION $$ spec: containers: - name: echo image: /tutorial_db/data_schema/tutorial_repository/my_echo_service_image:tutorial volumeMounts: - name: fromsnapshotvol mountPath: /opt/block/path readinessProbe: port: 8080 path: /healthcheck endpoints: - name: echoendpoint port: 8080 public: true volumes: - name: fromsnapshotvol source: block size: 50Gi blockConfig: initialContents: fromSnapshot: MY_SNAPSHOT $$ min_instances=3 max_instances=3;
既存サービスのストレージボリューム上のスナップショットを復元する: この例では、元のブロックボリュームのコンテンツをスナップショットのコンテンツに置き換えることで、最初に作成したサービス(
my_service
)を再起動します。サービスを一時停止して、ブロックストレージボリューム上のスナップショットを復元できるようにします。
ALTER SERVICE my_service SUSPEND;
new_serviceインスタンスのコンテナにマウントされたブロックストレージボリューム上のスナップショットを復元します。Echoサービスのインスタンスを1つだけ実行しているので、インスタンス ID 0を指定します。
ALTER SERVICE my_service RESTORE -- this will auto RESUME the service. VOLUME "block-vol1" INSTANCES 0 FROM SNAPSHOT my_snapshot;
サービスステータスを確認します。
call SYSTEM$GET_SERVICE_STATUS('my_service');
DROP SNAPSHOT コマンドを使用して、スナップショットをドロップします。
DROP SNAPSHOT my_snapshot;
クリーンアップする¶
作成したリソースを削除します。
作成した2つのサービスをドロップします。
DROP SERVICE my_service; DROP SERVICE new_service;
チュートリアル1 の手順に従って、チュートリアル1で作成した他のリソースをクリーンアップしてください。
次の内容¶
このチュートリアルを完了したため、 上級チュートリアル に戻って他のトピックを調べることができます。