O mundo viu o primeiro protótipo de armazenamento de objetos em 1996. Após 10 anos, o Amazon Web Services lançará o Amazon S3 e o mundo começará a enlouquecer sistematicamente com um espaço de endereço plano. Devido ao trabalho com metadados e sua capacidade de escalar sem ceder sob carga, o armazenamento de objetos rapidamente se tornou o padrão para a maioria dos serviços de armazenamento em nuvem e muito mais. Outro recurso importante é a boa capacidade de armazenar arquivos e arquivos similares raramente usados. Todos os envolvidos no armazenamento de dados se alegraram e carregaram a nova tecnologia na mão.

Mas o boato das pessoas era cheio de rumores de que o armazenamento de objetos é apenas sobre nuvens grandes, e se você não precisar de soluções dos capitalistas condenados, será muito difícil criar o seu. Muito já foi escrito sobre a implantação de sua nuvem, mas não há muita informação sobre a criação das chamadas soluções compatíveis com S3.
Portanto, hoje descobriremos quais são as opções "Para torná-lo mais parecido com adultos, não com CEPH e com arquivos maiores", expandiremos um deles e verificaremos com o Veeam Backup & Replication para verificar se tudo funciona. Ele alega suporte ao trabalho com repositórios compatíveis com S3 e verificaremos esta declaração.
E os outros?
Sugiro começar com uma breve visão geral do mercado e opções para armazenamento de objetos. Um líder e padrão reconhecidos é o Amazon S3. Os dois perseguidores mais próximos são o Microsoft Azure Blob Storage e o IBM Cloud Object Storage.
Isso é tudo? Realmente não existem outros concorrentes? Obviamente, existem concorrentes, mas alguém segue seu próprio caminho, como Google Cloud ou Oracle Cloud Object Storage, com suporte incompleto à API S3. Alguém está usando versões mais antigas da API, como o Baidu Cloud. E alguns, como a Hitachi Cloud, exigem o uso de lógica especial, o que certamente causará suas dificuldades. De qualquer forma, todos são comparados com a Amazon, que pode ser considerada um padrão industrial.
Mas as soluções locais têm muito mais opções, então vamos identificar critérios que são importantes para nós. Em princípio, apenas dois são suficientes: suporte para a API S3 e o uso da assinatura v4. De coração, nós, como futuros clientes, estamos interessados apenas em interfaces para interação, e a cozinha interna do armazenamento em si não é tão interessante para nós.
Bem, muitas soluções são adequadas para essas condições simples. Por exemplo, pesos pesados corporativos clássicos:
- DellEMC ECS
- NetApp S3 StorageGrid
- Caçambas Nutanix
- Pure Storage FlashBlade e StorReduce
- Huawei FusionStorage
Há um nicho de soluções de software puro que funcionam imediatamente:
- Ceph de chapéu vermelho
- SUSE Enterprise Storage
- Cloudian
E mesmo aqueles que gostam de processar cuidadosamente o arquivo após a montagem não se ofendem:
- Ceph puro
- Minio (versão Linux, para a versão Windows, há muitas perguntas)
A lista está longe de estar completa, pode ser discutida nos comentários. Lembre-se de verificar o desempenho do sistema, além da API de compatibilidade antes da implementação. A última coisa que você precisa é a perda de terabytes de dados devido a solicitações suspensas. Portanto, sinta-se livre para fazer testes de estresse. Em geral, todo software adulto que trabalha com grandes quantidades de dados possui pelo menos relatórios de compatibilidade. No caso da Veeam, existe um programa completo para testes mútuos, que permite declarar com segurança a compatibilidade total de nossos produtos com equipamentos específicos. Já é um trabalho de mão dupla, nem sempre rápido, mas estamos constantemente expandindo a lista de soluções testadas.
Juntando nossa posição
Eu gostaria de falar um pouco sobre como escolher um assunto de teste.
Em primeiro lugar, eu queria encontrar uma opção que funcionasse imediatamente imediatamente. Bem, ou pelo menos com a probabilidade máxima que ele ganhará sem ter que fazer gestos extras. Dançar com um pandeiro e escolher o console à noite é muito emocionante, mas às vezes eu quero que ele funcione imediatamente. E a confiabilidade geral de tais soluções é geralmente mais alta. E sim, o espírito aventureiro desapareceu em nós, paramos de subir pelas janelas de nossas amadas mulheres, etc. (c).
Em segundo lugar, para ser sincero, surge a necessidade de trabalhar com armazenamento de objetos para empresas muito grandes; portanto, esse é o caso quando se olha para soluções de nível corporativo não apenas não é embaraçoso, mas até incentivado. De qualquer forma, ainda não conheço exemplos de alguém demitido por comprar essas soluções.
Com base no exposto, minha escolha recaiu sobre o Dell EMC ECS Community Edition . Este é um projeto muito interessante, e considero necessário falar sobre isso.
A primeira coisa que vem à mente quando se olha para o complemento Community Edition é que ele é apenas um papel vegetal de um ECS completo com algumas restrições removidas pela compra de uma licença. Então não!
Lembre-se:
!!! Community Edition é um projeto separado, projetado para teste e sem o suporte técnico da Dell !!
E não pode ser transformado em um ECS completo, mesmo que você realmente queira.
Vamos entender
Muitas pessoas pensam que o Dell EMC ECS é quase a melhor solução se você precisar de armazenamento de objetos. Todos os projetos da marca ECS, incluindo comerciais e corporativos, estão no github . Um tipo de gesto de boa vontade da Dell. Além do software executado em seu hardware de marca, existe uma versão de código aberto que pode ser implantada mesmo na nuvem, pelo menos em uma máquina virtual, pelo menos no contêiner, pelo menos em qualquer hardware. Olhando para o futuro - existe até uma versão OVA, que usaremos.
O próprio DELL ECS Community Edition é uma mini-versão do software completo em execução nos servidores da marca Dell EMC ECS.
Eu destaquei quatro diferenças principais:
- Sem suporte de criptografia. É uma pena, mas não crítico.
- Camada de tecido ausente. Isso é responsável pela criação do cluster, gerenciamento de recursos, atualizações, monitoramento e armazenamento de imagens do Docker. Aqui já é muito decepcionante, mas a Dell também pode ser entendida.
- A consequência mais desagradável do parágrafo anterior: o tamanho do nó não pode ser expandido após a conclusão da instalação.
- Sem suporte técnico. Este é um produto para teste, que não é proibido para uso em pequenas instalações, mas pessoalmente não me atreveria a carregar petabytes de dados importantes lá. Mas tecnicamente ninguém pode impedi-lo de fazer isso.

E o que há na versão grande?
Galopamos pela Europa em busca de soluções de ferro para ter uma visão mais completa do ecossistema.
Não vou confirmar ou negar a afirmação de que o DELL ECS é o melhor armazenamento de objetos no local, mas se você tiver algo a dizer sobre esse assunto, vou ler nos comentários com prazer. De qualquer forma, de acordo com o IDC MarketScape 2018, a Dell EMC é um dos cinco líderes no mercado de OBS. Embora as soluções baseadas na nuvem não sejam levadas em consideração, esse é um problema separado.
Do ponto de vista técnico, o ECS é um armazenamento de objeto que fornece acesso aos dados por meio de protocolos de armazenamento em nuvem. Suporta AWS S3 e OpenStack Swift. Para o balde ativado por arquivo, o ECS suporta o NFSv3 para recursos de exportação de arquivos.
O processo de gravação de informações é bastante incomum, especialmente após os sistemas clássicos de armazenamento em bloco.
- Quando novos dados chegam, é criado um novo objeto com um nome, os próprios dados e metadados.
- Os objetos vencem em blocos de 128 MB e cada bloco é gravado imediatamente em três nós.
- O arquivo de índice é atualizado, onde são identificados os identificadores e os locais de armazenamento.
- O arquivo de log (registro de log) é atualizado e também é gravado em três nós.
- Uma mensagem sobre a gravação bem-sucedida é enviada ao cliente
Todas as três cópias dos dados são gravadas em paralelo. A gravação é considerada bem-sucedida apenas se todas as três cópias tiverem sido gravadas com sucesso.

A leitura é mais simples:
- O cliente solicita dados.
- O índice procura um local para armazenar dados.
- Os dados são lidos em um nó e enviados ao cliente.

Existem alguns servidores, por isso, vejamos o menor Dell EMC ECS EX300. Começa em 60Tb, com a capacidade de crescer para 1.5Pb. E seu irmão mais velho, Dell EMC ECS EX3000, já pode armazenar até 8.6Pb por rack.
Implantar
Tecnicamente, o Dell ECS CE pode ser implantado arbitrariamente grande. De qualquer forma, não encontrei nenhuma restrição explícita. No entanto, todo o dimensionamento é feito convenientemente, clonando o primeiro nó, para o qual precisamos:
- 8 vCPU
- 64GB RAM
- 16 GB para sistemas operacionais
- 1 TB diretamente para armazenamento
- Última versão mínima do CentOS
Esta é uma opção para o caso em que você deseja instalar tudo sozinho desde o início. Para nós, essa opção não é relevante, porque Vou usar a imagem OVA para implantação.
Mas, em qualquer caso, os requisitos são muito ruins, mesmo para um nó, e se você seguir rigorosamente a letra da lei, existem quatro nós.
No entanto, os desenvolvedores do ECS CE vivem no mundo real, e a instalação é bem-sucedida, mesmo com um único nó, e os requisitos mínimos são os seguintes:
- 4 vCPU
- 16 GB de RAM
- 16 GB para sistemas operacionais
- 104 GB de armazenamento próprio
São esses recursos que são necessários para implantar uma imagem OVA. Já é muito mais humano e realista.
O próprio nó de instalação pode ser acessado no github oficial. Também há documentação detalhada sobre a implantação do multifuncional , mas você ainda pode ler nos readthedocs oficiais. Portanto, não vamos nos concentrar na implantação do OVA em detalhes, não há truques. A principal coisa - não se esqueça antes de iniciá-lo, expanda o disco para o volume desejado ou anexe os necessários.
Iniciamos o carro, abrimos o console e usamos os melhores créditos padrão:
- login: admin
- senha: ChangeMe
Então começamos o sudo nmtui e configuramos a interface de rede - IP / máscara, DNS e gate. Tendo em mente que o CentOS minimal não possui ferramentas de rede, verificamos as configurações via endereço IP.

E como os mares apenas se submetem com ousadia, atualizamos yum, após o qual reinicializamos. De fato, é bastante seguro, porque toda a implantação é feita por meio de playbooks e todos os pacotes importantes do docker estão bloqueados na versão atual.
Agora é hora de editar o script de instalação. Não há janelas bonitas ou pseudo interface do usuário para você - tudo através do seu editor de texto favorito. Tecnicamente, existem duas maneiras: você pode iniciar cada comando com alças ou iniciar imediatamente o configurador videploy. Ele simplesmente abrirá a configuração no vim e, ao sair, execute sua verificação. Mas simplificar deliberadamente sua vida não é interessante, por isso, faremos mais duas equipes. Embora não faça sentido, eu te avisei =)
Portanto, vim o ECS-CommunityEdition / deploy.xml e fazemos as alterações mínimas ideais para que o ECS seja ativado e funcione. A lista de parâmetros pode ser reduzida, mas fiz o seguinte:
- license_accepted: true Você não pode alterá-lo, ao implantar você será solicitado explicitamente a aceitá-lo e exibirá uma boa frase. Talvez seja até um ovo de páscoa.

- Remova o comentário das linhas de nomes automáticos: e personalizado: digite pelo menos um nome desejado para o nó - o nome do host será substituído por ele durante o processo de instalação.
- install_node: 192.168.1.1 Especifique os nós IP reais. No nosso caso, indicamos o mesmo que em nmtui
- dns_domain: insira seu domínio.
- dns_servers: insira seu dns.
- ntp_servers: você pode especificar qualquer. Peguei o primeiro do pool 0.pool.ntp.org (tornou-se 91.216.168.42)
- autonaming: custom Se você não remover o comentário, a lua será chamada Luna.
- ecs_block_devices:
/ dev / sdb
Por alguma razão desconhecida, pode haver um dispositivo de armazenamento em bloco inexistente / dev / vda - storage_pools:
membros:
192.168.1.1 Aqui, novamente, indicamos os nós IP reais - ecs_block_devices:
/ dev / sdb Repita a operação de corte de dispositivos inexistentes.
Em geral, o arquivo inteiro é descrito em detalhes na documentação , mas quem o lerá em um período tão agitado. Também diz que o mínimo é suficiente para especificar o IP e a máscara, mas no meu laboratório essa configuração não foi boa e tive que expandir para o acima.

Após sair do editor, execute update_deploy /home/admin/ECS-CommunityEdition/deploy.yml e, se tudo for feito corretamente, isso será relatado explicitamente.

Ainda é necessário iniciar o videploy, aguardar a atualização do ambiente e iniciar a instalação com o comando ova-step1 e, após sua execução bem-sucedida, o comando ova-step2. Importante: não pare de criar scripts com as mãos! Algumas etapas podem levar um tempo considerável, não realizado na primeira tentativa, e parecem que tudo está quebrado. De qualquer forma, você deve aguardar a conclusão do script de maneira natural. No final, você deve ver algo assim.

Agora, finalmente, podemos abrir o painel de controle da WebUI pelo IP que conhecemos. Se você não alterou o estágio de configuração, a conta padrão será root / ChangeMe. Você pode até usar imediatamente nosso armazenamento compatível com S3. Está disponível nas portas 9020 para HTTP e 9021 para HTTPS. Novamente, se você não alterou nada, acesse_key: object_admin1 e secret_key: ChangeMeChangeMeChangeMeChangeMeChangeMe.
Mas não vamos nos antecipar e começar em ordem.

No primeiro login, você será forçado a alterar a senha para uma senha adequada, o que é absolutamente correto. O painel principal é extremamente compreensível, então vamos fazer algo mais interessante do que explicar as métricas óbvias. Por exemplo, crie um usuário que usaremos para acessar o repositório. No mundo dos provedores de serviços, eles são chamados de inquilino. Isso é feito em Gerenciar> Usuários> Novo Usuário de Objeto.

Ao criar um usuário, somos solicitados a especificar um espaço para nome. Tecnicamente, nada nos impede de obter o maior número possível de usuários. E vice-versa. Isso permite gerenciar recursos de forma independente para cada inquilino.
Assim, selecionamos as funções que precisamos e geramos as chaves do usuário. S3 / Atmos será suficiente para mim. E não se esqueça de salvar a chave;)

O usuário foi criado, agora é hora de selecionar o balde. Vá para Gerenciar> Balde e preencha os campos obrigatórios. Tudo é simples aqui.

Agora, estamos prontos para um uso total do nosso armazenamento S3 em combate.
Personalizar Veeam
Portanto, como lembramos, um dos principais usos do armazenamento de objetos é o armazenamento a longo prazo de informações que raramente são acessadas. Um exemplo ideal é a necessidade de armazenar backups em um site remoto. No Veeam Backup & Replication, esse recurso é chamado de Nível de capacidade.
Vamos começar a instalação adicionando nosso Dell ECS CE à interface Veeam. Na guia Infraestrutura de backup, inicie o Assistente para Adicionar Novo Repositório e selecione o item Armazenamento de Objeto.

Escolhemos do que se tratava - Compatível com S3.

Na janela exibida, escreva o nome desejado e vá para a etapa Conta. Aqui você precisa especificar o ponto de serviço no formato https: // your_IP: 9021 , pode deixar a região como está e adicionar o usuário criado. Um servidor de porta é necessário se o seu armazenamento estiver localizado em um site remoto, mas este já é um tópico de otimização da infraestrutura e um artigo separado, para que você possa pular com segurança aqui.

Se tudo estiver especificado e configurado corretamente, um aviso de certificado será exibido e, em seguida, uma janela com um balde onde você poderá criar uma pasta para nossos arquivos.

Passamos pelo assistente até o final e aproveitamos o resultado.

Na próxima etapa, é necessário criar um novo repositório de backup em expansão ou adicionar nosso S3 ao existente - ele será usado como camada de capacidade para armazenamento de arquivo morto. As funções para usar repositórios compatíveis com S3 diretamente, como um repositório regular, não estão no release atual. Muitos problemas bastante óbvios devem ser resolvidos para isso, mas tudo pode ser.
Entramos nas configurações do repositório e ativamos o Capacity Tier. Tudo é transparente lá, mas há uma nuance interessante: se você deseja que todos os dados sejam enviados para o armazenamento de objetos o mais rápido possível, basta definir 0 dias.

Depois de passar no assistente, se você não quiser esperar, pressione ctrl + RMB no repositório, force o trabalho de Camada em camadas a iniciar e assista o rastreamento dos gráficos.

Por enquanto é tudo. Considero a tarefa de mostrar que o armazenamento em bloco não é tão assustador quanto é habitual pensar, eu consegui. Sim, existem soluções e opções para uma carroça e um carrinho pequeno, mas você não pode cobrir tudo em um artigo. Então, vamos compartilhar a experiência nos comentários.