Cluster de armazenamento XtreemFS

Instalação e configuração do cluster de Armazenamento XtreemFS

Este é um tutorial hands on para a instalação e configuração do cluster de armazenamento XtreemFS.
Mas antes seguem algumas características do cluster XtreemFS.

XtreemFS é um sistema de armazenamento distribuído, replicável, escalável e tolerante a falhas.

Veja a página do produto: http://www.xtreemfs.org/
Blog: http://xtreemfs.blogspot.com.br/

Réplica de arquivos
O XtreemFS replica os arquivos para múltiplos servidores de armazenamento, para qualquer localidade.

Tolerância a falhas
Arquivos distribuídos em múltiplos storages. O XtreemFS automaticamente distribuí os arquivos entre as replicas de storage, então em caso de qualquer falha em uma das réplicas, o próprio gerenciador do XtreemFS irá eleger uma nova réplica de forma transparente.

Leitura e Escrita
Fora o tradicional Read and Write, o XtreemFS permite a replicação de dados do tipo Read-Only, Que pode servir como um cache.

Escalável
Você pode aumentar ou diminuir o número de servidores de armazenamento possibilitando elasticidade e escalabilidade.

Permissões
Permite o controle de leitura e escrita por usuários.

Look&Feel
XtreemFS é um filesystem fácil de usar, o intuíto é montar uma partição via rede, com o mínimo de configuração.

Segurança
Suporte a certificados SSL, assim você pode distribuir arquivospela internet com segurança.

Desempenho
Dados distribuidos entre os storages, aumentando a banda de I/O, similar a configuração RAID 0.

Cache
O cliente XtreemFS permite a configuração de cache local, aumentando a velocidade de leitura de dados.

Backup
Criação de snapshots de metadados, lhe garantindo um backup full de toda a estrutura.

Suporte
Pode ser montado em Windows, Linux e OSX pois utiliza o padrão POSIX.

Visite o site do XtreemFS para outras caracterísca, aqui eu listei apenas algumas, mas a documentação é muito mais detalhada.

1. Componentes do cluster XtreemFS.

O cluster XtreemFS possuí 3 componentes para o funcionamento, no caso o DIR, MRC e OSD.

DIR – Directory service
Diretório de Serviços, usado pelo MRC, OSD e Clientes para encontrar os servidores que fazem parte do cluster e mapeamento dos volumes.

MRC – Metadata and Replica catalog
Metadados e replicação de catálogos, é neste servidor que a árvore de diretórios e todos os metadados dos arquivos serão mapeaedos, é o MRC que sabe em quais OSDs estão os arquivos carregados pelos clientes. Se você perder o MRC, você basicamente perdeu todo o ambiente, é impossível recuperar os dados mesmo tendo os storages de armazenamento intactos pois somente o MRC sabe onde estão todos os binários que formam o arquivo completo.
Por exemplo, você carregou um arquivo de 100MB, este arquivo será particionado em vários arquivos menores de 128K, distribuídos em uma árvore de diretórios espalhados pelos OSDs, somente o MRC sabe quais são os diretórios corretos do arquivo.

OSD – Objedct Sorage Device
É o storage propriamente dito, será nos OSDs que tudo será armazenado, então é no OSD que você vai provisionar os discos para armazenamento, podendo ser um disco local, ou em outro storage via rede como ISCSI ou Fibra, enfim, é onde os dados brutos serão armazenados.

2. Arquitetura

 

Sistema Operacional Centos 7 – 64 bits instalação minima.
1 DIR – xtreemfs-dir01.devopslab.com.br
1 MRC – xtreemfs-mrc01.devopslab.com.br
3 OSD – xtreemfs-osd01.devopslab.com.br, xtreemfs-osd2.devopslab.com.br, xtreemfs-osd3.devopslab.com.br
1 cliente – xtreemfs-cli01.devopslab.com.br

 

3. Pré requisitos

Configuração do File Descriptor.

vi /etc/security/limits.conf

*		 soft	 nofile		4096
*		 hard	 nofile		63536

Selinux desativado

# vi /etc/selinux/config

SELINUX=disabled

Firewall desativado

systemctl disable firewalld.service

Reinicie os servidores DIR, MRC, OSD para que as modificações façam efeito. Não necessáriamente precisa reiniciar, tem como fazer tudo isto online, mas vamos facilitar as coisas.

4. Adicionar o repositório XtreemFS

cd /etc/yum.repos.d/

wget http://download.opensuse.org/repositories/home:/xtreemfs/CentOS_7/home:xtreemfs.repo

5. Instalação do Servidor e Cliente

Cliente

yum install xtreemfs-client xtreemfs-tools

Servidores – DIR, MRC, OSD

yum install xtreemfs-server

Para Debian e Ubuntu:
http://www.xtreemfs.org/download_pkg.php

6. Configuração do cluster

Configuração dos servidores DIR e OSD.

Fuse
O módulo “fuse” precisa estar carregado em todos os servidores (DIR, MRC, OSD).

Configuração persistente do módulo fuse. Faça isto nos servidores do cluster.

echo 'fuse' > /etc/modules-load.d/fuse.conf

Carregar em tempo de execução.

modprobe fuse
lsmod | grep fuse

Configurações
Servidor DIR: xtreemfs-dir01.devopslab.com.br

systemctl enable  xtreemfs-dir.service
systemctl start  xtreemfs-dir.service

Servidor MRC: xtreemfs-mrc01.devopslab.com.br

vi  /etc/xos/xtreemfs/mrcconfig.properties
dir_service.host = xtreemfs-dir01.devopslab.com.br

systemctl enable xtreemfs-mrc.service
systemctl start xtreemfs-mrc.service

Servidores OSDs: xtreemfs-osd01.devopslab.com.br, xtreemfs-osd02.devopslab.com.br e xtreemfs-osd03.devopslab.com.br

vi  /etc/xos/xtreemfs/osdconfig.properties
dir_service.host = xtreemfs-dir01.devopslab.com.br

systemctl enable xtreemfs-osd.service
systemctl start xtreemfs-osd.service

Por padrão todos os objetos serão armazenados na pasta “/var/lib/xtreemfs/objs” dos servidores OSD. Este caminho pode ser alterado no arquivo osdconfig.properties, e apontar para uma partição separada, um storage e etc.

7. Startup

O módulo fuse precisa estar carregado

lsmod | grep  fuse

Servidor DIR: xtreemfs-dir01.devopslab.com.br

/etc/init.d/xtreemfs-dir start

Servidor MRC: xtreemfs-mrc01.devopslab.com.br

/etc/init.d/xtreemfs-mrc start

Servidores OSDs: xtreemfs-osd01.devopslab.com.br, xtreemfs-osd01.devopslab.com.br

/etc/init.d/xtreemfs-osd start

8. Status dos serviços

Acesse pelo navegador os endereços e respectivas portas para a consulta do status dos serviços MRC, DIR e OSD.
Portas: 30636 (MRC), 30638 (DIR), 30640 (OSD)

MRC
http://xtreemfs-mrc01.devopslab.com.br:30636

DIR
http://xtreemfs-dir01.devopslab.com.br:30638

OSD
http://xtreemfs-osd01.devopslab.com.br:30640

O cluster já está pronto para o uso, a configuração básica é super fácil, então vamos montar a partição do cluster no cliente e fazer alguns testes.

9. Cliente

No cliente crie um volume com o nome de sua preferência no servidor de Metadados MRC.

Comando para a criação do volume.

mkfs.xtreemfs xtreemfs-MRC01.devopslab.com.br/vol-clusterx
[root@xtreemfs-cli01 vol-clusterx]# mkfs.xtreemfs xtreemfs-mrc01.devopslab.com.br/vol-clusterx
Trying to create the volume: xtreemfs-mrc01.devopslab.com.br/vol-clusterx
Using options:
  Owner:			root
  Owning group:			root
  Mode:				777
  Access Control Policy:	POSIX
  Quota:			0
  Default striping policy:		RAID0
  Default stripe size (object size):	128
  Default stripe width (# OSDs):	1
Successfully created volume "vol-clusterx" at MRC: xtreemfs-mrc01.devopslab.com.br/vol-clusterx

Verifique o status do serviço MRC. Existirá na url várias informações do MRC e algumas informações do volume “vol-clusterx”.
http://xtreemfs-mrc01.devopslab.com.br:30636

Crie um ponto de montagem e monte o volume mapeado no servidor DIR.

[root@xtreemfs-cli01 vol-clusterx]# mkdir /vol-clusterx
[root@xtreemfs-cli01 vol-clusterx]# mount xtreemfs-DIR01.devopslab.com.br/vol-clusterx /vol-clusterx

Como estamos utilizando 3 servidores OSD e queremos que os arquivos sejam replicados para os 3, vamos definir a política de Striping, então caso seu cluster tenha mais de 3 volumes, aumente o “–replication-factor”.

xtfsutil --set-drp --replication-policy WqRq --replication-factor 3 /vol-clusterx
[root@xtreemfs-cli01 vol-clusterx]#xtfsutil --set-drp --replication-policy WqRq --replication-factor 3 /vol-clusterx
Updated default replication policy to: WQRQ with 3 replicas

Verificando o ponto de montagem.

[root@xtreemfs-cli01 vol-clusterx]# df -h
Filesystem                                             Size  Used Avail Use% Mounted on
/dev/mapper/centos-root                                4.0G  1.3G  2.8G  31% /
devtmpfs                                               910M     0  910M   0% /dev
tmpfs                                                  920M     0  920M   0% /dev/shm
tmpfs                                                  920M  8.3M  912M   1% /run
tmpfs                                                  920M     0  920M   0% /sys/fs/cgroup
/dev/sda1                                              497M  152M  346M  31% /boot
tmpfs                                                  184M     0  184M   0% /run/user/0
xtreemfs@xtreemfs-dir01.devopslab.com.br/vol-clusterx  4.0G  1.2G  2.9G  29% /vol-clusterx

FSTAB
Configure o fstab para a auto-montagem.

vi /etc/fstab
xtreemfs-dir01.devopslab.com.br/vol-clusterx /vol-clusterx xtreemfs defaults,_netdev,allow_other, -d=INFO,log-file-path=/tmp/xtreemfs.log 0 0

TESTES
Vou fazer um upload para o volume “/vol-clusterx” e ver se foi replicado.

root@Desktop:~#du -hs Filme.avi
1.2G	Filme.avi

root@Desktop:~#scp Filme.avi.avi root@xtreemfs-cli01:/vol-clusterx/Filme.avi

O arquivo está no ponto de montagem “vol-clusterx”.

[root@xtreemfs-cli01 /]# ls /vol-clusterx/; du -hs /vol-clusterx/Filme.avi 
Filme.avi
1.2G	/vol-clusterx/Filme.avi

Vamos verificar a replicação do arquivo com a ferramenta “xtfsutil”. O “xtfsutil” já foi instalado no client em um passo anterior na instalação do pacote “xtreemfs-tools”.

 
[root@xtreemfs-cli01 vol-clusterx]# xtfsutil  Filme.avi
Path (on volume)     /Filme.avi
XtreemFS file Id     9c492d5e-70cc-4ae7-b22d-17e8a3035065:21
XtreemFS URL         pbrpc://xtreemfs-dir01.devopslab.com.br:32638/vol-clusterx/Filme.avi
Owner                root
Group                root
Type                 file
Replication policy   WqRq
XLoc version         0
Replicas:
  Replica 1
     Striping policy     STRIPING_POLICY_RAID0 / 1 / 128kB
     OSD 1               0ec904e2-cdc5-4c9e-9d5f-1792e0d07893 (10.0.0.135:32640)
  Replica 2
     Striping policy     STRIPING_POLICY_RAID0 / 1 / 128kB
     OSD 1               0d7b7906-734c-4885-8594-97318eaebbef (10.0.0.133:32640)
  Replica 3
     Striping policy     STRIPING_POLICY_RAID0 / 1 / 128kB
     OSD 1               d94909c3-9b16-4449-8163-b69048117756 (10.0.0.132:32640)

Veja que a política de stripping está funcionando.

Vamos verificar se o arquivo existe nos OSDs.

Servidor 1: xtreemfs-osd01.devopslab.com.br

[root@xtreemfs-osd01 /]# du -hs /var/lib/xtreemfs/objs/
1.2G	/var/lib/xtreemfs/objs/
[root@xtreemfs-osd01 /]# ls /var/lib/xtreemfs/objs/
C1  flease_lock.1115684804
[root@xtreemfs-osd01 /]# 

Servidor 2: xtreemfs-osd02.devopslab.com.br

[root@xtreemfs-osd2 /]# du -hs /var/lib/xtreemfs/objs/
1.2G	/var/lib/xtreemfs/objs/
[root@xtreemfs-osd2 /]# ls /var/lib/xtreemfs/objs/
C1  flease_lock.1911808723
[root@xtreemfs-osd2 /]#

Servidor 3: xtreemfs-osd03.devopslab.com.br

[root@xtreemfs-osd3 objs]# du -hs /var/lib/xtreemfs/objs/
1.2G	/var/lib/xtreemfs/objs/
[root@xtreemfs-osd3 objs]# ls /var/lib/xtreemfs/objs/
C1  flease_lock.663390777
[root@xtreemfs-osd3 objs]#

Para finalizar …
Algumas observações ou dicas se você assim preferir.

Aumento do cluster
Crie um novo servidor OSD, por exemplo xtreemfs-osdNN.devopslab.com.br, após configurado o novo servidor automaticamente começará a receber os novos arquivos.

Tolerância a falha
Os servidores DIR e MRC suportam a replicação de dados para se ter uma tolerância a falhas, logo se por ventura um destes 2 servidores morrerem, simplesmente uma outra réplica assumirá o cluster continuando todo o trabalho.

Disco separado nos OSDs
Neste tutorial optei por utilizar a pasta padrão de armazeamento de dados, no caso a pasta “/var/lib/xtreemfs/objs/”, no entanto você pode criar uma partição separada (fdisk …) nos servidores OSD, para o armazenamento dos arquivos. Neste caso você vai criar uma partição comum ext4 com o fdisk, montar e alterar o arquivo “osdconfig.properties” para que os objetos passem a ser gravados no novo local.

Att

Leonardo

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *