Skip to main content

Instalación de MooseFS

Sistema distribuido: MooseFS

MODELO 1:

HA con 3 Masters + 4 Chunks + 2 Metadata

Arquitectura:

  • 3 Master servers
  • 4 Chunk servers
  • 2 Metaloggers
  • VIP gestionada por Keepalived con VRRP
  • HAProxy como frontend TCP
Direccionamiento
  • VIP: 10.200.3.50
    Masters: 10.200.3.51 / 10.200.3.52 / 10.200.3.53
    Chunks: 10.200.3.55 / 56 / 57 / 58
    Metaloggers: 10.200.3.71 / 72

Instalación (común para todo el stack)

mkdir -p /etc/apt/keyrings
curl https://repository.moosefs.com/moosefs.key | gpg -o /etc/apt/keyrings/moosefs.gpg --dearmor

Ejecutamos apt update

apt update

E instalamos

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/moosefs.gpg] http://repository.moosefs.com/moosefs-4/apt/debian/trixie trixie main" > /etc/apt/sources.list.d/moosefs.list

MASTER ACTIVO (10.200.3.51)

/etc/mfs/mfsmaster.cfg

PERSONALITY = master
WORKING_USER = mfs
WORKING_GROUP = mfs
DATA_PATH = /var/lib/mfs
BACK_META_KEEP_PREVIOUS = 3
REPLICATIONS_DELAY_INIT = 300

/etc/mfs/mfsexports.cfg

10.200.3.0/24 / rw,alldirs,admin,maproot=0

Inicializar:

mfsmaster -a
systemctl enable moosefs-master
systemctl start moosefs-master

SHADOW MASTERS (.52 y .53)
PERSONALITY = shadow
MASTER_HOST = 10.200.3.50
MASTER_PORT = 9419
DATA_PATH = /var/lib/mfs

CHUNK SERVERS
apt install moosefs-chunkserver -y

Inicializamos las carpetas o discos de los chunks

mkdir -p /data/mfschunk
chown mfs:mfs /data/mfschunk

Editamos el fstab para añadir el resto de discos

mkdir -p /mnt/disk[X]/mfschunk
chown mfs:mfs /mnt/disk[X]/mfschunk

/etc/mfs/mfschunkserver.cfg

MASTER_HOST = 10.200.3.50
MASTER_PORT = 9420
DATA_PATH = /data/mfschunk, /mnt/disk[X]/mfschunk
WORKING_USER = mfs
WORKING_GROUP = mfs

/etc/mfs/mfshdd.cfg

/data/mfschunk
/mnt/disk[X]/mfschunk

En este apartado añadiremos los diferentes discos que tengan los servidores de chunk

systemctl enable moosefs-chunkserver
systemctl start moosefs-chunkserver

Repetir en .55, .56, .57, .58.


Metadata backup servers (10.200.3.71 y .72)
apt install moosefs-master -y


/etc/mfs/mfsmaster.cfg

PERSONALITY = metalogger
MASTER_HOST = 10.200.3.50
MASTER_PORT = 9419
DATA_PATH = /var/lib/mfs
systemctl enable moosefs-master
systemctl start moosefs-master

Keepalived (nodo principal)
vrrp_instance MFS_VIP {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 200
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass mfscluster
    }

    virtual_ipaddress {
        10.200.3.50/24
    }
}
Nodo secundario (52)
vrrp_script chk_haproxy {
    script "/usr/local/bin/check_haproxy.sh"
    interval 2
    weight 2
}

vrrp_instance MFS_VIP {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 150
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass mfscluster
    }

    virtual_ipaddress {
        10.200.3.50/24
    }

    track_script {
        chk_haproxy
    }
}
Tercer nodo (53)
vrrp_script chk_haproxy {
    script "/usr/local/bin/check_haproxy.sh"
    interval 2
    weight 2
}

vrrp_instance MFS_VIP {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1

    authentication {
        auth_type PASS
        auth_pass mfscluster
    }

    virtual_ipaddress {
        10.200.3.50/24
    }

    track_script {
        chk_haproxy
    }
}

HAProxy

frontend mfs_master_front
    bind 0.0.0.0:9419
    default_backend mfs_master_back

backend mfs_master_back
    option tcp-check
    tcp-check connect port 9419
    server master1 10.200.3.51:9419 check
    server master2 10.200.3.52:9419 check
    server master3 10.200.3.53:9419 check

En la versión pro los nodos master, se promocionan solos, en la versión community, hay que hacer un script.

#!/bin/bash
MASTER_IP="10.200.3.50"
MASTER_PORT="9419"

timeout 2 bash -c "</dev/tcp/${MASTER_IP}/${MASTER_PORT}" &>/dev/null
if [ $? -ne 0 ]; then
    systemctl stop moosefs-master
    sed -i 's/PERSONALITY *= *shadow/PERSONALITY = master/' /etc/mfs/mfsmaster.cfg
    mfsmaster -o
    systemctl start moosefs-master
fi

Y lo dejamos como ejecutable

chmod +x /usr/local/bin/mfs-auto-promote.sh

MODELO 2 - 1 Master + 4 Chunks

Master: 10.200.3.51
Chunks: 10.200.3.55 / 56 / 57 / 58


MASTER
PERSONALITY = master
WORKING_USER = mfs
WORKING_GROUP = mfs
DATA_PATH = /var/lib/mfs

10.200.3.0/24 / rw,alldirs,admin,maproot=0

CHUNKS

MASTER_HOST = 10.200.3.51
MASTER_PORT = 9420
DATA_PATH = /data/mfschunk
WORKING_USER = mfs
WORKING_GROUP = mfs

Cliente

mfsmount /mnt/mfs -H 10.200.3.51

Replicación recomendada

mfssetgoal 2 /


2026-02-19 16.52.04.jpg


2026-02-19 16.52.13.jpg


2026-02-19 16.53.15.jpg

2026-02-19 16.53.20.jpg