MinIO para os menores

MinIO — uma excelente solução para organizar facilmente um armazenamento de objetos. A configuração simples, a compatibilidade com várias plataformas e o bom desempenho conquistaram o coração dos usuários. Portanto, não tivemos outra opção senão anunciar, há um mês, a compatibilidade. Veeam Backup & Replication e MinIO. Incluindo uma função tão importante como a Imutabilidade. Na verdade, o MinIO possui toda uma seção na documentação dedicada à nossa integração.

Portanto, hoje vamos falar sobre como:

  • Configurar o MinIO rapidamente.
  • Configurar o MinIO um pouco mais devagar, mas de forma significativamente melhor.
  • Usá-lo como Archive Tier para um repositório escalável Veeam SOBR.

MinIO para os menores

O que é isso?

Uma breve introdução para aqueles que ainda não se depararam com o MinIO. É um armazenamento de objetos de código aberto, compatível com a API Amazon S3. É lançado sob a licença Apache v2 e segue a filosofia do minimalismo espartano.

Ou seja, não há uma interface gráfica extensa com painéis, gráficos e muitos menus. O MinIO simplesmente inicia seu servidor com um único comando, onde você pode armazenar dados usando toda a potência da API S3. Mas deve-se notar que essa simplicidade pode ser enganosa quando se trata dos recursos utilizados. RAM e CPU são consumidos de maneira eficaz, mas as razões estarão abaixo. A propósito, sistemas como FreeNAS e TrueNAS utilizam precisamente o MinIO.

Com isso, podemos encerrar a introdução.

Configurar o MinIO rapidamente

A configuração é tão rápida que a veremos para Windows e Linux. Existem opções para Docker, Kubernetes e até mesmo para macOS, mas o sentido será o mesmo em todos eles.

Portanto, no caso do Windows, acesse o site oficial https://min.io/download#/windows e baixe a versão mais recente. Lá você também encontrará as instruções de inicialização:

 minio.exe server F:Data

E lá também está o link para um Guia de início rápido. Não faz sentido desconfiar das instruções, então vamos iniciar e obter uma resposta semelhante a esta.

MinIO para os menores
É isso! O armazenamento está funcionando e você pode começar a utilizá-lo. Não estava brincando quando disse que o MinIO é minimalista e simplesmente funciona. Se você seguir o link sugerido ao iniciar, a única função disponível lá é criar um bucket. E você pode começar a gravar dados.

Para os amantes do Linux, tudo continua igualmente simples. Instruções básicas:


wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data

O resultado será indistinguível do que foi visto anteriormente. 

A configuração do MinIO é um pouco mais lógica

Como entendemos, o parágrafo anterior é apenas uma brincadeira para fins de teste. E, sejamos honestos, usamos o MinIO de maneira muito extensa para testes, o que não temos vergonha de admitir. Claro, funciona, mas seria vergonhoso usá-lo além de bancos de teste. Portanto, pegamos uma lixa e começamos a aprimorar.

HTTPS

O primeiro passo obrigatório em direção à produção é a criptografia. Já existem milhões de manuais na internet sobre como adicionar certificados ao MiniIO, mas o plano geral é este:

  • Criar um certificado
  • No caso do Windows, colocá-lo em C:Users%User%.miniocerts
  • No caso do Linux, em ${HOME}/.minio/certs 
  • Reiniciar o servidor

O banal Let’s Encrypt é maçante e descrito em todo lugar, então nosso caminho é o caminho do samurai, por isso, no caso do Windows, baixamos Cygwin, e no caso do Linux, verificamos se o openssl está instalado. E fazemos um pouco de mágica no console:

  • Criar chaves: openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key
  • Criar um certificado a partir da chave: openssl req -new -x509 -days 3650 -key private.key -out public.crt
  • Copiar private.key e public.crt para a pasta mencionada acima
  • Reiniciar o MinIO

Se tudo correu como deveria, o status mostrará linhas aproximadamente assim.

MinIO para os menores

Ativar a codificação de erros do MinIO

Primeiro, algumas palavras sobre o assunto. Em resumo: essa é uma proteção de software contra danos e perdas de dados. É como RAID, mas muito mais confiável. Enquanto um RAID6 clássico pode perder dois discos, o MinIO suporta a perda de até metade. A tecnologia é descrita em mais detalhes no guia oficial. Mas se pegarmos a essência, trata-se da implementação dos códigos de Reed-Solomon: todas as informações são armazenadas em blocos de dados, para os quais existem blocos de paridade. E parece que isso já foi feito muitas vezes, mas há uma importante "mas": podemos especificar explicitamente a proporção de blocos de paridade em relação aos blocos de dados para os objetos armazenados.
Quer 1:1? Por favor!
Quer 5:2? Sem problemas!

Uma função muito importante, se você estiver usando várias nodes e quiser encontrar seu próprio equilíbrio entre a máxima segurança dos dados e os recursos utilizados. O MinIO, por padrão, utiliza a fórmula N/2 (onde N é o número total de discos), ou seja, divide seus dados entre N/2 discos de dados e N/2 discos de paridade. Traduzindo para uma linguagem mais simples: é possível perder metade dos discos e recuperar os dados. Essa proporção é definida através de Classe de Armazenamento, permitindo que você escolha o que é mais importante: confiabilidade ou capacidade.

No guia, é apresentado o seguinte exemplo: suponha que você tenha uma instalação com 16 discos e precise armazenar um arquivo de 100 MB. Se as configurações padrão forem utilizadas (8 discos para dados, 8 para paridade), o arquivo acabará ocupando um volume quase duplicado, ou seja, 200 MB. Se a proporção dos discos for 10/6, será necessário 160 MB. Para 14/2, serão 114 MB.

Outra diferença importante em relação aos RAID: em caso de falha dos discos, o MinIO funcionará ao nível de objetos, recuperando um por um, sem interromper o funcionamento de todo o sistema. Enquanto isso, um RAID comum terá que recuperar todo o volume, o que levará um tempo imprevisível. Na memória do autor, uma prateleira de discos levou uma semana e meia para ser recalculada após a falha de dois discos. Foi bastante desagradável.

E, uma observação importante: o MinIO divide todos os discos para Erasure Coding em conjuntos de 4 a 16 discos, utilizando o tamanho máximo possível do conjunto. E, no futuro, um elemento de informação será armazenado apenas dentro de um único conjunto.

Tudo isso soa muito bem, mas quão complicada será a configuração? Vamos dar uma olhada. Pegamos o comando para iniciar e simplesmente listamos os discos onde precisamos criar o armazenamento. Se tudo for feito corretamente, veremos no relatório a quantidade de discos utilizados. E um conselho: não é apropriado adicionar metade dos discos em um único host, pois isso pode resultar na perda de dados.

c:minio>minio.exe server F: G: H: I: J: K:

MinIO para os menores
Em seguida, para gerenciar e configurar o servidor MinIO, precisaremos de um agente, que pode ser baixado tudo lá mesmo do site oficial.

Para não ficar digitando o endereço e as chaves de acesso toda vez (e isso não é seguro), é conveniente criar um alias logo na primeira execução, usando a fórmula mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]

mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKE

Ou você pode adicionar seu host imediatamente:

mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEY

Em seguida, criaremos um bucket imutável com um belo comando

mc mb --debug -l veeamS3/immutable

mc:  PUT /immutable/ HTTP/1.1
Host: 172.17.32.52:9000
User-Agent: MinIO (windows; amd64) minio-go/v7.0.5 mc/2020-08-08T02:33:58Z
Content-Length: 0
Authorization: AWS4-HMAC-SHA256 Credential=minioadmin/20200819/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-bucket-object-lock-enabled;x-amz-content-sha256;x-amz-date, Signature=**REDACTED**
X-Amz-Bucket-Object-Lock-Enabled: true
X-Amz-Content-Sha256: UNSIGNED-PAYLOAD
X-Amz-Date: 20200819T092241Z
Accept-Encoding: gzip
mc:  HTTP/1.1 200 OK
Content-Length: 0
Accept-Ranges: bytes
Content-Security-Policy: block-all-mixed-content
Date: Wed, 19 Aug 2020 09:22:42 GMT
Location: /immutable
Server: MinIO/RELEASE.2020-08-16T18-39-38Z
Vary: Origin
X-Amz-Request-Id: 162CA0F9A3A3AEA0
X-Xss-Protection: 1; mode=block
mc:  Response Time: 253.0017ms

--debug permite ver não apenas a mensagem final, mas também informações mais detalhadas. 

--selector significa --with-lock, que significa imutável

Se agora voltarmos para a interface web, nosso novo bucket aparecerá lá.

MinIO para os menores
Por enquanto, isso é tudo. Criamos um armazenamento seguro e estamos prontos para integrar com Veeam.

Podemos ainda verificar se tudo está funcionando bem:

c:minio>mc admin info veeamS3

● 172.17.32.52:9000
   Uptime: 32 minutos
   Version: 2020-08-16T18-39-38Z
   Network: 1/1 OK
   Drives: 6/6 OK
0 B Usado, 1 Bucket, 0 Objetos
6 drives online, 0 drives offline

MinIO e Veeam

Atenção! Se por alguma razão incrível você quiser trabalhar via HTTP, crie a chave DWORD em HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication SOBRArchiveS3DisableTLS. Defina seu valor como 1 e lembre-se de que não aprovamos esse comportamento e não recomendamos a ninguém.

Atenção mais uma vez! Se por algum mal-entendido você ainda estiver usando Windows 2008 R2, ao tentar conectar o MinIO ao Veeam, você provavelmente receberá um erro como este: Falha ao estabelecer conexão com o endpoint Amazon S3. Isso pode ser resolvido com o patch oficial de Microsoft.

Bem, as preparações acabaram, vamos abrir a interface VBR e ir para a aba Backup Infrastructure, onde acionaremos o assistente de adição de um novo repositório.

MinIO para os menores
Claro, estamos interessados em Object storage, especificamente S3 Compatible. No assistente aberto, definimos o nome, passamos pelas etapas indicando o endereço e as credenciais. Se necessário, não esqueçamos de indicar o gateway através do qual as solicitações ao armazenamento serão proxy.

MinIO para os menores
Depois, escolhemos o bucket, a pasta e marcamos a opção Make recent backups immutable. Ou não. Mas já que criamos um armazenamento com suporte a essa função, seria um erro não aproveitá-la.

MinIO para os menores
Next > Finish e aproveite o resultado.

Agora é preciso adicioná-lo ao repositório SOBR como um Capacity Tier. Para isso, podemos criar um novo ou editar o existente. Estamos interessados na etapa do Capacity Tier.

MinIO para os menores
Aqui precisamos escolher qual cenário iremos utilizar. Todas as opções estão bem descritas em outro artigo, então não irei me repetir.

E, ao finalizar o assistente, serão iniciadas automaticamente as tarefas de cópia ou transferência de backups. Mas se você não planeja sobrecarregar todos os sistemas de imediato, defina intervalos aceitáveis para a execução clicando no botão Window.

MinIO para os menores
E, claro, é possível criar tarefas de Backup Copy separadas. Alguns acreditam que isso é até mais conveniente, pois são um pouco mais transparentes e previsíveis para o usuário que não deseja entrar em detalhes sobre o funcionamento do capacity tier. E há muitos detalhes, então mais uma vez recomendo o artigo correspondente no link acima.

E por último — a resposta para a pergunta traiçoeira: o que acontece se você tentar excluir um backup do armazenamento Immutable?

Aqui está a resposta:

MinIO para os menores
Por hoje é tudo. Seguindo a boa tradição, aqui está uma lista de tópicos úteis sobre o tema:

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster