3. Introdução
Objetivos:
• Apresentar o panorama geral da arquitetura Openstack Swift
• Apresentar a arquitetura do protótipo de armazenamento em nuvem
GT-CNC
7. Ferramenta Selecionada
Openstack Swift
Benefícios
• Compatibilidade com protocolo S3; swift
• Acoplagem com nuvem de processamento;
• Replicação/backup de dados;
• Disponibiliza interfaces para acesso por meio de APIs;
• Autenticação/ Autorização;
• Comunicação segura entre cliente e servidor.
• Comunidade ativa
GT-CNC
8. Ferramenta Selecionada
Openstack Swift
Limitações
swift
• Não utiliza criptografia para proteger os dados dos clientes;
• Não possui autenticação federada;
• Suporte a limitação de armazenamento por usuários em
desenvolvimento pela comunidade;
• Suporte a Webdav em desenvolvimento pela comunidade.
GT-CNC
10. Composição do Swift: Conceitos iniciais
Nó:
• É um servidor que oferecerá um ou mais serviços do Swift
• Pode ser virtualizado
Objeto:
• É o arquivo armazenado na nuvem
• Possui forma binária (binary large object - blob)
• Armazenado junto com seus metadados
GT-CNC
11. Composição do Swift: Conceitos iniciais
Contêiner:
• É um compartimento de objetos
• Tem o objetivo de organizar objetos
• É comparável a diretórios e pastas
Peso (Weight):
• Usado para estabelecer prioridades entre dispositivos de
armazenamento
• Reequilibrar dispositivos sobrecarregados ou menos usados
GT-CNC
12. Composição do Swift: Conceitos iniciais
Zona:
• Agrupamento de dispositivos
• Objetivo de aumentar disponibilidade
• Pode ser definido por diferentes critérios, como:
• Localização física
• Unidades de energia
• Redes
• Datacenter, servidor, switch, etc
GT-CNC
13. Composição do Swift: Conceitos iniciais
Anel de hashing consistente (consistente hashing ring):
• Mapeia a localização física de cada objeto, conta e contêiner
• É o “Coração” da escalabilidade horizontal
• Usa técnica de hashing consistente
Conjunto de
mapeamentos
hash: <ID, Local>
Anel
GT-CNC
14. Composição do Swift: Servidores
Componentes macros:
•Servidor Proxy (Proxy Server)
•Servidor de Contas (Account Server)
•Servidor de Contêiner (Container Server)
•Servidor de Objetos (Object Server)
GT-CNC
15. Composição do Swift: Servidores
Componente macro: Servidor Proxy
• É o responsável pela comunicação com componentes do swift
• Disponibiliza API pública
• Trata certas falhas (ex.: falha de um nó)
• Intermediário em operações de envio e recebimento de arquivos
• Mantém os anéis de mapeamento, encaminhando requisições para
o nó de armazenamento correto
GT-CNC
16. Composição do Swift: Servidores
Componente macro: Servidor de Contas
•Lista contêineres pertencentes a cada conta
Componente macro: Servidor de Contêiner
• Lista objetos pertencentes a cada contêiner
• Não conhece a localização dos objetos
• Mantém estatística de armazenamento e quantidade de objetos
GT-CNC
17. Composição do Swift: Servidores
Componente macro: Servidor de Objetos
• Armazenamento dos blobs nos dispositivos de armazenamento
• Mantém metadados para cada objeto
• Mantém versionamento dos objetos
GT-CNC
19. Composição do Swift: Autenticação
Papéis de usuários:
• Usuário normal: capaz de realizar apenas funcionalidades gerais
• Administrador: gerencia usuários de um grupo
• Admin. “Revendedor”: gerencia qualquer grupo e qualquer usuário
• Super Admin.: Possui todos os privilégios, inclusive criar
administrador “revendedor”
GT-CNC
21. Composição do Swift: Autenticação
Forma de autenticação: tempAuth
• Primeiro middleware WSGI (Web Server Gateway Interface) criado
para o swift
• Usado para ambiente de teste e desenvolvimento:
• Armazena dados em um arquivo de configuração em texto
plano
• Recebe credenciais e retorna um token de autenticação
GT-CNC
22. Composição do Swift: Autenticação
Forma de autenticação: swAuth
• Middleware WSGI criado por terceiros.
• Usa a própria estrutura do swift para ser uma estrutura mais
escalável.
• Objeto Swift no formato JSON com restrições de leitura.
GT-CNC
23. Composição do Swift: Autenticação
Forma de autenticação: Keystone
• Integra os diversos projetos do Openstack
• Foi adotado como padrão apenas recentemente
• Papéis de usuário mais flexível (papéis customizáveis)
• Acoplável a alguns backends, como LDAP, SQL, dentre outros [2]
GT-CNC
24. Composição do Swift
Mecanismos para melhorar confiabilidade/consistência
[3]:
• Replicação
• Auditoria
• Atualizador (updater)
GT-CNC
25. Composição do Swift
Mecanismo para melhorar consistência: Replicação
Zona 1
Objeto Servidor Zona 2
Proxy
Zona 3
Zona 4
GT-CNC
27. Casos de Uso do Protótipo
Cópia de Arquivos
Sincronização de Arquivos Compartilhamento de Arquivos
Usuário A
Usuário B
28. Arquitetura do Protótipo
HTTPS
Armazenamento (UFPA)
Balanceador
de carga
Zona 1
Zona 3
Zona 2
UFPA
SSH UFSC
• Proxy
• Autenticação
Zona 4 Zona 5 • Autorização
Armazenamento (UFSC)
GT-CNC
29. Arquitetura do Protótipo
Componentes do Protótipo:
Balanceador de Carga: round-robin DNS
Nós:
• Cada nó possui os 3 serviços (Servidor de objetos, contas e
contêineres)
• Cada servidor possui 4 nós virtualizados
Zonas:
• 3 na UFPA
• 2 na UFSC
Interface compatível com protocolo S3
GT-CNC
30. Arquitetura do Protótipo
• 2 Servidores Proxy:
UFPA UFSC
Hardware Hardware
CPU: 2 CPU: 2
Memória RAM: 3 GB Memória RAM: 2 GB
HDD: 12 GB HDD: 12 GB
IP: 200.129.132.69 IP 150.162.66.40
Sistema Operacional Sistema Operacional
Ubuntu 12.04 Server Ubuntu 12.04 Server
Sistema Operacional: 8GB HDD Sistema Operacional: 10 GB HDD
Sistema de Arquivos: Ext4 Sistema de Arquivos: Ext4
Swap: 4GB HDD Swap: 2 GB HDD
GT-CNC
31. Arquitetura do Protótipo
• Servidores com os 3 tipos de serviço (contêiner, conta, objeto):
UFPA
Nós de Armazenamento - 1~3 Nós de Armazenamento - 4
Hardware Hardware
RAM: 768 MB RAM: 768 MB
CPU: 1 CPU: 1
HDD: 450 GB HDD: 148GB
Sistema Operacional Sistema Operacional
Ubuntu 12.04 Server
Sistema de Arquivos: Ext4 (raiz) e Ubuntu 12.04 Server
XFS (swift) Sistema de Arquivos: Ext4 (raiz) e XFS (swift)
Sistema Operacional: 48GB HDD Sistema Operacional: 48GB HDD
Swap: 2GB HDD Swap: 2GB HDD
Armazenamento Swift: 400GB Armazenamento Swift 1: 100GB HDD
HDD Armazenamento Swift 2: 2TB através de Storage Externo
GT-CNC
32. Arquitetura do Protótipo
• Servidores com os 3 tipos de serviço (contêiner, conta, objeto):
UFSC
Nós de Armazenamento – 1~4
Hardware
RAM: 1 GB
CPU: 1
HDD: 450 GB
IP: 150.162.66.41 ~ 44
Sistema Operacional
Ubuntu 12.04 Server
Sistema de Arquivos: Ext4 (raiz) e XFS (swift)
Sistema Operacional: 48GB HDD
Swap: 2GB HDD
Armazenamento Swift: 400 GB HDD
GT-CNC
33. Arquitetura do Protótipo
Configurações do protótipo:
Anel
• Um anel para cada serviço (objetos, contêineres, contas)
• Anel criado no proxy e distribuído para todos os nós
Replicação:
• 3 réplicas para cada objeto, contêiner e conta
Partições:
• 100 para cada drive
Autenticação: swAuth
GT-CNC
Modelos de serviços Software as a Service (SaaS) consumidor utiliza aplicativos do provedor rodando em uma infraestrutura de nuvem As aplicações são acessíveis a partir de diversos dispositivos clientes O consumidor não administra e nem controla a infra-estrutura de nuvem, nem o aplicativo Contorle sobre a configuração de aplicativos Plataforma como Serviço (PaaS ) A capacidade fornecida ao consumidor destina-se à infra-estrutura criada ou comprada pelo consumidor para a nuvem, criada usando linguagens de programação, bibliotecas, serviços e ferramentas suportadas pelo provedor. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, incluindo rede, servidores, sistemas operacionais ou armazenamento, mas tem controle sobre os aplicativos implementados e possivelmente sobre as configurações para o ambiente de hospedagem de aplicativos. Infra-estrutura como serviço (IaaS) O consumidor dispõe de provisionamento de processamento, armazenamento, redes e outros recursos de computação fundamentais onde o consumidor é capaz de implementar e executar softwares arbitrários, que podem incluir sistemas operacionais e aplicativos. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, mas tem controle sobre sistemas operacionais, armazenamento e aplicativos implementados, e possivelmente um controle limitado de componentes de rede selecionados (por exemplo, firewalls do host ).
Modelos de serviços Software as a Service (SaaS) consumidor utiliza aplicativos do provedor rodando em uma infraestrutura de nuvem As aplicações são acessíveis a partir de diversos dispositivos clientes O consumidor não administra e nem controla a infra-estrutura de nuvem, nem o aplicativo Contorle sobre a configuração de aplicativos Plataforma como Serviço (PaaS ) A capacidade fornecida ao consumidor destina-se à infra-estrutura criada ou comprada pelo consumidor para a nuvem, criada usando linguagens de programação, bibliotecas, serviços e ferramentas suportadas pelo provedor. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, incluindo rede, servidores, sistemas operacionais ou armazenamento, mas tem controle sobre os aplicativos implementados e possivelmente sobre as configurações para o ambiente de hospedagem de aplicativos. Infra-estrutura como serviço (IaaS) O consumidor dispõe de provisionamento de processamento, armazenamento, redes e outros recursos de computação fundamentais onde o consumidor é capaz de implementar e executar softwares arbitrários, que podem incluir sistemas operacionais e aplicativos. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, mas tem controle sobre sistemas operacionais, armazenamento e aplicativos implementados, e possivelmente um controle limitado de componentes de rede selecionados (por exemplo, firewalls do host ).
Modelos de serviços Software as a Service (SaaS) consumidor utiliza aplicativos do provedor rodando em uma infraestrutura de nuvem As aplicações são acessíveis a partir de diversos dispositivos clientes O consumidor não administra e nem controla a infra-estrutura de nuvem, nem o aplicativo Contorle sobre a configuração de aplicativos Plataforma como Serviço (PaaS ) A capacidade fornecida ao consumidor destina-se à infra-estrutura criada ou comprada pelo consumidor para a nuvem, criada usando linguagens de programação, bibliotecas, serviços e ferramentas suportadas pelo provedor. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, incluindo rede, servidores, sistemas operacionais ou armazenamento, mas tem controle sobre os aplicativos implementados e possivelmente sobre as configurações para o ambiente de hospedagem de aplicativos. Infra-estrutura como serviço (IaaS) O consumidor dispõe de provisionamento de processamento, armazenamento, redes e outros recursos de computação fundamentais onde o consumidor é capaz de implementar e executar softwares arbitrários, que podem incluir sistemas operacionais e aplicativos. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, mas tem controle sobre sistemas operacionais, armazenamento e aplicativos implementados, e possivelmente um controle limitado de componentes de rede selecionados (por exemplo, firewalls do host ).
Modelos de serviços Software as a Service (SaaS) consumidor utiliza aplicativos do provedor rodando em uma infraestrutura de nuvem As aplicações são acessíveis a partir de diversos dispositivos clientes O consumidor não administra e nem controla a infra-estrutura de nuvem, nem o aplicativo Contorle sobre a configuração de aplicativos Plataforma como Serviço (PaaS ) A capacidade fornecida ao consumidor destina-se à infra-estrutura criada ou comprada pelo consumidor para a nuvem, criada usando linguagens de programação, bibliotecas, serviços e ferramentas suportadas pelo provedor. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, incluindo rede, servidores, sistemas operacionais ou armazenamento, mas tem controle sobre os aplicativos implementados e possivelmente sobre as configurações para o ambiente de hospedagem de aplicativos. Infra-estrutura como serviço (IaaS) O consumidor dispõe de provisionamento de processamento, armazenamento, redes e outros recursos de computação fundamentais onde o consumidor é capaz de implementar e executar softwares arbitrários, que podem incluir sistemas operacionais e aplicativos. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, mas tem controle sobre sistemas operacionais, armazenamento e aplicativos implementados, e possivelmente um controle limitado de componentes de rede selecionados (por exemplo, firewalls do host ).
Modelos de serviços Software as a Service (SaaS) consumidor utiliza aplicativos do provedor rodando em uma infraestrutura de nuvem As aplicações são acessíveis a partir de diversos dispositivos clientes O consumidor não administra e nem controla a infra-estrutura de nuvem, nem o aplicativo Contorle sobre a configuração de aplicativos Plataforma como Serviço (PaaS ) A capacidade fornecida ao consumidor destina-se à infra-estrutura criada ou comprada pelo consumidor para a nuvem, criada usando linguagens de programação, bibliotecas, serviços e ferramentas suportadas pelo provedor. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, incluindo rede, servidores, sistemas operacionais ou armazenamento, mas tem controle sobre os aplicativos implementados e possivelmente sobre as configurações para o ambiente de hospedagem de aplicativos. Infra-estrutura como serviço (IaaS) O consumidor dispõe de provisionamento de processamento, armazenamento, redes e outros recursos de computação fundamentais onde o consumidor é capaz de implementar e executar softwares arbitrários, que podem incluir sistemas operacionais e aplicativos. O consumidor não administra e nem controla a infra-estrutura de nuvem subjacente, mas tem controle sobre sistemas operacionais, armazenamento e aplicativos implementados, e possivelmente um controle limitado de componentes de rede selecionados (por exemplo, firewalls do host ).
Um contêiner é um compartimento de armazenamento de objetos que possibilita a organização dos objetos; ele pode ser comparado a uma pasta do Windows , mas contêineres não podem ser aninhados tal como as pastas.
Uma zona é um agrupamento de dispositivos realizado dentro do anel. Este agrupamento pode ser por localização física, separação por unidades de energia, separação por redes ou de qualquer outro atributo que possa reduzir a chance de tornar indisponível múltiplas réplicas ao mesmo tempo. Uma zona pode representar um servidor, um switch ou um datacenter . A replicação de objetos é realizada em zonas separadas.
O anel determina onde os dados devem residir no cluster. Ele representa um mapeamento entre os nomes de entidades armazenadas em disco e sua localização física. Existem anéis separados para contas, contêineres e objetos. O anel mantém o mapeamento utilizando zonas, dispositivos, partições ou réplicas. Quando outros componentes precisam realizar qualquer operação em um objeto, contêiner ou conta, eles precisam interagir com um anel específico para determinar a localização no cluster.
Os dados no proxy são sincronizado entre todos os proxys
Metadado armazenado nos atributos extendidos do arquivo (nem todo sistema de arquivo dá suporte para isso) Deleta, recupera e insere blobs Cada objeto é armazenado utilizando um caminho derivado do nome do hash do objeto e de um timestamp .