Nos dias que correm cada vez se torna mais relevante fazer cópias dos dados, não só por motivos de segurança, mas principalmente pela disponibilidade dos mesmos.
O GlusterFS é um sistema de armazenamento distribuído e descentralizado, que agrega múltiplas unidades de armazenamento remotas num único volume. As unidades, bricks, são distribuídas pela rede num único sistema de ficheiros paralelo, permitindo escalabilidade de milhares de bricks e vários petabytes!
Neste tutorial iremos explicar, passo a passo, como instalar o Glusterfs no Xubuntu e criar um sistema de armazenamento de alta disponibilidade. Para tal serão usados 2 máquinas servidor e um 1 cliente, sendo que os servidores replicam os ficheiros que o cliente guarda em determinado directório.
Vamos considerar que as máquinas têm os seguintes endereços:
- servidor1 – 192.168.1.161
- servidor2 – 192.168.1.162
- cliente – 192.168.1.163
Considerando que vamos implementar o Glusterfs numa LAN, sem serviço de DNS para a rede local, devem começar por mapear os endereços IPs nos nomes definidos. Para isso devem realizar o passo 1
Passo 1 – Configurar o ficheiro hosts da seguinte forma em todas as máquinas de modo a estas se “conheçam” por nome.
nano /etc/hosts
Passo 2 – Mudar o nome da cada máquina de acordo com a configuração anterior.
nano /etc/hostname
Instalação do GlusterFS
Download e instalação do GlusterFS (efectuar este passo para ambos os servidores)
Dado a última versão do GlusterFS estar disponível num pacote Debian adicionamos a chave pública deste:
wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/rsa.pub | apt-key add -
De seguida basta adicionar o repositório do GlusterFS:
echo deb http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/Debian/jessie/apt jessie main > /etc/apt/sources.list.d/gluster.list
Atualizamos a lista de repositórios:
apt-get update
Por fim instalamos o servidor de GlusterFS:
apt-get -y install glusterfs-server
Para confirmar que tudo foi instalado corretamente basta usar o seguinte comando:
glusterfs --version
Vamos agora criar um directório onde os ficheiros serão guardados (efectuar este passo em ambos os servidores)
mkdir /data
O próximo passo é atribuir os IP definidos acima definidos a cada um dos servidores:
ifconfig enp0s3 192.168.1.161/24
ifconfig enp0s3 192.168.1.162/24
Vamos agora adicionar o servidor2 ao servidor1 como armazenamento fidedigno, ou seja, ligar os bricks entre si para que estes possam sincronizar mutuamente.
gluster peer probe servidor2
gluster peer status
Após estes comandos deverão obter o seguinte resultado:
Podemos verificar que o a ligação ao servidor2 foi bem sucedida e que este tem os serviços ativos.
Criar Volume
O próximo passo é criar um volume (que será partilhado pelos 2 servidores).
gluster volume create pplware replica 2 transport tcp servidor1:/data/pplware servidor2:/data/pplware force
Inicializar o volume criado no passo anterior:
gluster volume start pplware
Para verificar que a volume foi bem iniciado e que a ligação está estabelecida podemos usar o seguinte comando:
netstat -tap | grep glusterfsd
Nota: Caso não consigam realizar este passo voltem a inicializar os serviços em ambos os servidores com o seguinte comando:
service glusterfs-server restart
Dado isto verifiquem se a ligação está bem estabelecida com o comando:
netstat -tap | grep glusterfsd
Para ver mais informações sobre o volume poderão recorrer ao seguinte comando:
gluster volume info
O resultado deverá ser o seguinte:
Regra de acesso
Restringir o acesso ao volume para apenas o nosso cliente ser o único com acesso (por omissão todas as máquinas na rede poderão utilizar o serviço):
A partir do servidor1 basta inserir o seguinte comando:
gluster volume set pplware auth.allow 192.168.1.163
Após receberem uma mensagem de sucesso poderão verificar nas informações do volume que por baixo de ‘Options Reconfigured:’ está o IP da máquina que acabamos de introduzir
Instalação do GlusterFS nocliente
Download e instalação do GlusterFS no cliente.
Os 3 primeiros comandos são os mesmos que foram usado no servidor.
wget -O - http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/rsa.pub | apt-key add -
echo deb http://download.gluster.org/pub/gluster/glusterfs/3.7/3.7.9/Debian/jessie/apt jessie main > /etc/apt/sources.list.d/gluster.list
apt-get update
Por fim instalamos o cliente de GlusterFS:
apt-get -y install glusterfs-client
Criar directório onde os ficheiros serão guardados e automaticamente sincronizados comos servidores:
mkdir /mnt/glusterfs
Atribuir o IP definido acima ao cliente:
ifconfig enp0s3 192.168.1.163/24
Associar o directório aos servidores:
mount.glusterfs servidor1:/pplware /mnt/glusterfs
mount
Para confirmar que a ligação foi estabelecida podemos usar o comando:
df –h
Testes
Finalmente com tudo está operacional podemos realizar alguns testes.
Criar um ficheiro no directório do cliente e verificar se este foi copiado para os servidores:
Efectuar o seguinte comando no cliente:
touch /mnt/glusterfs/primeiroTeste
Verificar em ambos os servidores se este foi replicado:
ls -l /data/pplware
Vamos agora eliminar um ficheiro no diretório do cliente e verificar se este também foi eliminado nos servidores:
Efetuar o seguinte comando no cliente:
rm -f /mnt/glusterfs/primeiroTeste
Verificar em ambos os servidores se este foi eliminado com o seguinte comando:
ls -l /data/pplware
Desligue um dos servidores, crie um ficheiro no directório do cliente e verifique que este foi criado no servidor activo. De seguida volte a ligar o servidor e verifique que é feita a sincronização dos ficheiros entre os servidores.
Efectuar o seguinte comando no cliente:
touch /mnt/glusterfs/terceiroTeste
Verificar no servidor se este foi replicado com o seguinte comando:
ls -l /data/pplware
Voltar a ligar o outro servidor e voltar a inicializa o serviço com os seguintes comandos:
service glusterfs-server restart
Verificar que a sincronização entre os servidores foi feita com o seguinte comando:
ls -l /data/pplware
E está feito. Esperamos que tenham gostado deste tutorial e que vos sirva para criarem gratuitamente , se tiverem necessidade, um sistema de armazenamento distribuído.