Tutorial 4: Crie um serviço com um volume de armazenamento em bloco montado¶
Introdução¶
Este tutorial fornece instruções passo a passo para você criar um serviço simples que usa um volume de armazenamento em bloco. Você também tira um instantâneo do volume de armazenamento e explora maneiras de usá-lo.
Criação de um serviço¶
Siga o Tutorial 1 para baixar o código do serviço de exemplo, crie uma imagem do Docker e carregue-a em um repositório na sua conta Snowflake.
Verifique se você tem a imagem
my_echo_service_image
no repositório.SHOW IMAGES IN IMAGE REPOSITORY tutorial_db.data_schema.tutorial_repository;
Crie um serviço. Quando o serviço for executado, o contêiner terá um armazenamento de volume em bloco de 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 $$;
Nota
Este tutorial mostra apenas como criar um serviço com um volume de armazenamento em bloco. O código de serviço (Análise do código do tutorial 1) não usa o volume.
Verifique o status do serviço:
SELECT SYSTEM$GET_SERVICE_STATUS('my_service');
Tire um instantâneo¶
Use o comando CREATE SNAPSHOT para tirar um instantâneo do volume de armazenamento em bloco anexado à instância de serviço 0. Você especifica a instância 0 porque está executando apenas uma instância de serviço.
Use aspas duplas em torno do nome no parâmetro VOLUME para corresponder à caixa do nome na especificação do serviço.
CREATE SNAPSHOT my_snapshot FROM SERVICE my_service VOLUME "block-vol1" INSTANCE 0 COMMENT='new snapshot';
Revise o instantâneo
Liste instantâneos usando SHOW SNAPSHOTS.
SHOW SNAPSHOTS;
Recupere informações de um instantâneo específico usando DESCRIBE SNAPSHOT.
DESC SNAPSHOT my_snapshot;
Execute o comando ALTER SNAPSHOT para modificar o instantâneo.
ALTER SNAPSHOT my_snapshot SET comment='updated comment';
Use o instantâneo¶
Você pode usar o instantâneo de duas maneiras:
Use o instantâneo para criar um novo serviço: ao criar um novo serviço, você pode usar o instantâneo como o conteúdo inicial para um volume de armazenamento em bloco, conforme mostrado. O seguinte comando CREATE SERVICE cria outro serviço (
new_service
) com um volume de armazenamento em bloco 50 Gi. A especificação inline inclui o nome do instantâneo a ser usado para inicializar o volume de armazenamento em bloco.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;
Restaure um instantâneo em um volume de armazenamento de um serviço existente: este exemplo reinicia o primeiro serviço (
my_service
) que você criou substituindo o conteúdo do volume do bloco original pelo conteúdo do instantâneo.Suspenda o serviço para que você possa restaurar o instantâneo no volume de armazenamento em bloco.
ALTER SERVICE my_service SUSPEND;
Restaure o instantâneo no volume de armazenamento em bloco montado no contêiner da instância new_service. Você está executando apenas uma instância do Echo Service, então você especifica o ID da instância como 0.
ALTER SERVICE my_service RESTORE -- this will auto RESUME the service. VOLUME "block-vol1" INSTANCES 0 FROM SNAPSHOT my_snapshot;
Verifique o status do serviço.
call SYSTEM$GET_SERVICE_STATUS('my_service');
Use o comando DROP SNAPSHOT para descartar o instantâneo.
DROP SNAPSHOT my_snapshot;
Limpeza¶
Remova os recursos que você criou.
Descarte os dois serviços que você criou:
DROP SERVICE my_service; DROP SERVICE new_service;
Siga as etapas do Tutorial 1 para limpar outros recursos criados no tutorial 1.
Qual é o próximo passo?¶
Agora que concluiu este tutorial, você pode retornar aos tutoriais avançados para explorar outros tópicos.