Skip to main content

Configuração GlusterFS Docker2

ChatGPT

Perfeito! Vamos criar uma configuração de GlusterFS replicada entre os três servidores:

  • server04147.93.176.48

  • server02212.56.34.241

  • server03212.56.34.172

Com os diretórios locais:

swift
/opt/swarm/npm/volumes/data /opt/swarm/npm/volumes/letsencrypt /opt/swarm/npm/volumes/mysql

Você quer que cada um desses diretórios seja um volume replicado entre os três nós — ou seja, 3 volumes distintos replicados 3x. Vamos fazer isso em etapas bem claras.


✅ 1. Configure /etc/hosts (em todos os servidores)

Para facilitar o uso de nomes ao invés de IPs diretos:

bash
echo "147.93.176.48 server04" | sudo tee -a /etc/hosts echo "212.56.34.241 server02" | sudo tee -a /etc/hosts echo "212.56.34.172 server03" | sudo tee -a /etc/hosts

✅ 2. Instale o GlusterFS (em todos os servidores)

Ubuntu/Debian:

bash
sudo apt update sudo apt install glusterfs-server -y sudo systemctl enable --now glusterd

CentOS/RHEL:

bash
sudo yum install centos-release-gluster sudo yum install glusterfs-server -y sudo systemctl enable --now glusterd

✅ 3. Verifique a conectividade entre os nós

Em todos os servidores, teste:

bash
ping server02 ping server03 ping server04

✅ 4. No server04: pareie os outros nós

No server04:

bash
gluster peer probe server02 gluster peer probe server03

Verifique:

bash
gluster peer status

Todos devem estar com status: Peer in Cluster (Connected)


✅ 5. Crie os diretórios de dados (em todos os 3 nós)

bash
sudo mkdir -p /opt/swarm/npm/volumes/data sudo mkdir -p /opt/swarm/npm/volumes/letsencrypt sudo mkdir -p /opt/swarm/npm/volumes/mysql

Recomendo garantir permissões para UID 1000 (usado por containers):

bash
sudo chown -R 1000:1000 /opt/swarm/npm/volumes

✅ 6. No server04: crie os volumes GlusterFS replicados

🔁 Volume npm-data:

bash
gluster volume create npm-data replica 3 \ server04:/opt/swarm/npm/volumes/data \ server02:/opt/swarm/npm/volumes/data \ server03:/opt/swarm/npm/volumes/data force gluster volume start npm-data

🔁 Volume npm-letsencrypt:

bash
gluster volume create npm-letsencrypt replica 3 \ server04:/opt/swarm/npm/volumes/letsencrypt \ server02:/opt/swarm/npm/volumes/letsencrypt \ server03:/opt/swarm/npm/volumes/letsencrypt force gluster volume start npm-letsencrypt

🔁 Volume npm-mysql:

bash
gluster volume create npm-mysql replica 3 \ server04:/opt/swarm/npm/volumes/mysql \ server02:/opt/swarm/npm/volumes/mysql \ server03:/opt/swarm/npm/volumes/mysql force gluster volume start npm-mysql

✅ 7. Verifique se os volumes foram criados corretamente

bash
gluster volume info

Você deve ver os 3 volumes com Status: Started e Number of Bricks: 3 x 1 = 3.


✅ 8. Monte os volumes no cliente Docker Swarm

No(s) nó(s) Swarm onde você quer usar os dados, monte os volumes:

bash
sudo mkdir -p /mnt/npm-swarm/data sudo mkdir -p /mnt/npm-swarm/letsencrypt sudo mkdir -p /mnt/npm-swarm/mysql sudo mount -t glusterfs server04:/npm-data /mnt/npm-swarm/data sudo mount -t glusterfs server04:/npm-letsencrypt /mnt/npm-swarm/letsencrypt sudo mount -t glusterfs server04:/npm-mysql /mnt/npm-swarm/mysql

✅ 9. (Opcional) Automatize com /etc/fstab

Adicione ao /etc/fstab para montar automaticamente no boot:

fstab
server04:/npm-data /mnt/npm-swarm/data glusterfs defaults,_netdev 0 0 server04:/npm-letsencrypt /mnt/npm-swarm/letsencrypt glusterfs defaults,_netdev 0 0 server04:/npm-mysql /mnt/npm-swarm/mysql glusterfs defaults,_netdev 0 0

Teste com: sudo mount -a


✅ Conclusão

Você agora terá:

Volume GlusterFS Diretório local montado Usado por
npm-data /mnt/npm-swarm/data Nginx Proxy Mgr
npm-letsencrypt /mnt/npm-swarm/letsencrypt Nginx Proxy Mgr
npm-mysql /mnt/npm-swarm/mysql MariaDB

Se quiser, posso agora gerar seu docker-stack.yml já com esses volumes configurados para Swarm. Deseja?