web-dev-qa-db-fra.com

Glusterfs omettant de monter au démarrage avec Ubuntu 14.04

Auparavant, j'ai demandé à propos de montage Glusterfs au démarrage dans un serveur Ubuntu 12.04 et la réponse était que c'était Buggy en 12.04 et travaillé en 14.04. Curieux, je l'ai essayé sur une machine virtuelle en cours d'exécution sur mon ordinateur portable et en 14.04, cela fonctionnait. Comme cela était essentiel pour moi, j'ai décidé de mettre à niveau mes serveurs en cours d'exécution à 14.04 uniquement pour découvrir que Glusterfs ne monte pas automatiquement les volumes localhost automatiquement.

Ceci est un serveur Linode et FSTAB ressemble à ceci:

# <file system> <mount point>          <type>    <options>                 <dump>  <pass>
proc        /proc                        proc    defaults                       0       0
/dev/xvda   /                            ext4    noatime,errors=remount-ro      0       1
/dev/xvdb   none                         swap    sw                             0       0
/dev/xvdc   /var/lib/glusterfs/brick01   ext4    defaults                       1       2
koraga.int.example.com:/public_uploads /var/www/shared/public/uploads glusterfs defaults,_netdev 0 0

Le processus de démarrage aime comme ceci (autour de la partie de montage de réseautage, qui sont les seuls échoués):

 * Stopping Mount network filesystems                                    [ OK ]
 * Starting set sysctls from /etc/sysctl.conf                            [ OK ]
 * Stopping set sysctls from /etc/sysctl.conf                            [ OK ]
 * Starting configure virtual network devices                            [ OK ]
 * Starting Bridge socket events into upstart                            [ OK ]
 * Starting Waiting for state                                            [fail]
 * Stopping Waiting for state                                            [ OK ]
 * Starting Block the mounting event for glusterfs filesystems until the [fail]k interfaces are running
 * Starting Waiting for state                                            [fail]
 * Starting Block the mounting event for glusterfs filesystems until the [fail]k interfaces are running
 * Stopping Waiting for state                                            [ OK ]
 * Starting Signal sysvinit that remote filesystems are mounted          [ OK ]
 * Starting GNU Screen Cleanup                                           [ OK ]

Je crois que le fichier journal /var/log/glusterfs/var-www-shared-public-uploads.log contient l'indice principal du problème, car c'est le seul qui est vraiment différent entre ce serveur, où le montage ne fonctionne pas, et mon serveur virtuel local, où il s'agit:

[2014-07-10 05:51:49.762162] I [glusterfsd.c:1959:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.5.1 (/usr/sbin/glusterfs --volfile-server=koraga.int.example.com --volfile-id=/public_uploads /var/www/shared/public/uploads)
[2014-07-10 05:51:49.774248] I [socket.c:3561:socket_init] 0-glusterfs: SSL support is NOT enabled
[2014-07-10 05:51:49.774278] I [socket.c:3576:socket_init] 0-glusterfs: using system polling thread
[2014-07-10 05:51:49.775573] E [socket.c:2161:socket_connect_finish] 0-glusterfs: connection to 192.168.134.227:24007 failed (Connection refused)
[2014-07-10 05:51:49.775634] E [glusterfsd-mgmt.c:1601:mgmt_rpc_notify] 0-glusterfsd-mgmt: failed to connect with remote-Host: koraga.int.example.com (No data available)
[2014-07-10 05:51:49.775649] I [glusterfsd-mgmt.c:1607:mgmt_rpc_notify] 0-glusterfsd-mgmt: Exhausted all volfile servers
[2014-07-10 05:51:49.776284] W [glusterfsd.c:1095:cleanup_and_exit] (-->/usr/lib/x86_64-linux-gnu/libgfrpc.so.0(rpc_transport_notify+0x23) [0x7f6718bf3f83] (-->/usr/lib/x86_64-linux-gnu/libgfrpc.so.0(rpc_clnt_notify+0x90) [0x7f6718bf7da0] (-->/usr/sbin/glusterfs(+0xcf13) [0x7f67192bbf13]))) 0-: received signum (1), shutting down
[2014-07-10 05:51:49.776314] I [Fuse-bridge.c:5475:fini] 0-Fuse: Unmounting '/var/www/shared/public/uploads'.

Le statut du volume est:

Volume Name: public_uploads
Type: Distribute
Volume ID: 52aa6d85-f4ea-4c39-a2b3-d20d34ab5916
Status: Started
Number of Bricks: 1
Transport-type: tcp
Bricks:
Brick1: koraga.int.example.com:/var/lib/glusterfs/brick01/public_uploads
Options Reconfigured:
auth.allow: 127.0.0.1,192.168.134.227
client.ssl: off
server.ssl: off
nfs.disable: on

Si je cours mount -a Après avoir démarré, le volume est monté correctement:

koraga.int.example.com:/public_uploads on /var/www/shared/public/uploads type Fuse.glusterfs (rw,default_permissions,allow_other,max_read=131072)

Quelques fichiers journaux connexes montrent ceci:

/var/log/upstart/mounting-glusterfs-_var_www_shared_public_uploads.log:

start: Job failed to start

/var/log/upstart/wait-for-state-mounting-glusterfs-_var_www_shared_public_uploadsstatic-network-up.log:

status: Unknown job: static-network-up
start: Unknown job: static-network-up

mais sur mon serveur de test, cela montre exactement la même chose, donc je ne pense pas que cela soit pertinent.

Des idées qu'est-ce qui ne va pas maintenant?

Mise à jour : J'ai essayé le changement de wait_for du réseau statique à la mise en réseau et qu'il n'a toujours pas fonctionné, mais tous les messages [échec] au démarrage disparaître. Celles-ci sont la contient des fichiers journaux dans ces conditions:

/var/log/glusterfs/var-www-shared-public-uploads.log contient:

wait-for-state stop/waiting

/var/log/upstart/wait-for-state-mounting-glusterfs-_var_www_shared_public_uploadsstatic-network-up.log contient:

start: Job is already running: networking

/var/log/glusterfs/var-www-shared-public-uploads.log contient:

[2014-07-11 17:19:38.000207] I [glusterfsd.c:1959:main] 0-/usr/sbin/glusterfs: Started running /usr/sbin/glusterfs version 3.5.1 (/usr/sbin/glusterfs --volfile-server=koraga.int.example.com --volfile-id=/public_uploads /var/www/shared/public/uploads)
[2014-07-11 17:19:38.029421] I [socket.c:3561:socket_init] 0-glusterfs: SSL support is NOT enabled
[2014-07-11 17:19:38.029450] I [socket.c:3576:socket_init] 0-glusterfs: using system polling thread
[2014-07-11 17:19:38.030288] E [socket.c:2161:socket_connect_finish] 0-glusterfs: connection to 192.168.134.227:24007 failed (Connection refused)
[2014-07-11 17:19:38.030331] E [glusterfsd-mgmt.c:1601:mgmt_rpc_notify] 0-glusterfsd-mgmt: failed to connect with remote-Host: koraga.int.example.com (No data available)
[2014-07-11 17:19:38.030345] I [glusterfsd-mgmt.c:1607:mgmt_rpc_notify] 0-glusterfsd-mgmt: Exhausted all volfile servers
[2014-07-11 17:19:38.030984] W [glusterfsd.c:1095:cleanup_and_exit] (-->/usr/lib/x86_64-linux-gnu/libgfrpc.so.0(rpc_transport_notify+0x23) [0x7fd9495b7f83] (-->/usr/lib/x86_64-linux-gnu/libgfrpc.so.0(rpc_clnt_notify+0x90) [0x7fd9495bbda0] (-->/usr/sbin/glusterfs(+0xcf13) [0x7fd949c7ff13]))) 0-: received signum (1), shutting down
[2014-07-11 17:19:38.031013] I [Fuse-bridge.c:5475:fini] 0-Fuse: Unmounting '/var/www/shared/public/uploads'.

Mise à jour 2 : J'ai également essayé cela dans le fichier UPSTART:

start on (started glusterfs-server and mounting TYPE=glusterfs)

mais l'ordinateur n'a pas pu démarrer (ne sait pas pourquoi).

6
pupeno

J'ai rencontré le même problème sur AWS sur Ubuntu 12.04. Voici certaines choses que vous pouvez faire cela a fonctionné pour moi:

  • ajouter plus de tentatives de récupération dans votre fstab

Cela vous permettra de réessayer le serveur Volfile pendant que le réseau est indisponible.

  • ajouter un serveur Volfile de sauvegarde dans votre fstab

Cela vous permettra de monter le système de fichiers à partir d'un autre membre du serveur Gluster si le primaire est en panne pour une raison quelconque.

  • ajouter nobootwait dans votre fstab

Cela permet à l'instance de continuer à démarrer pendant que ce système de fichiers n'est pas monté.

Un exemple d'entrée de mon fstab actuel est:

10.20.30.40:/fs1 /example glusterfs defaults,nobootwait,_netdev,backupvolfile-server=10.20.30.41,fetch-attempts=10 0 2

Je n'ai pas testé ceci sur 14.04, mais cela fonctionne correctement pour mes instances 12.04.

4
dialt0ne

Merci pour l'explication détaillée, je pense que je comprends beaucoup plus qu'auparavant. La dernière solution fonctionne presque. Les problèmes (en réalité, depuis le premier implique la seconde):

  • actions locales (127.0.0.1:/share) toujours non monté
  • mounted TYPE=glusterfs jamais satisfait, donc les services qui dépendent de la montée TYPE=glusterfs Etat

/etc/fstab:

127.0.0.1:/control-share /mnt/glu-control-share glusterfs defaults,_netdev 0 0

/etc/init/mounting-glusterfs.conf: copié d'en haut

/etc/init/salt-master.conf:

description "Salt Master"

start on (mounted TYPE=glusterfs
          and runlevel [2345])
stop on runlevel [!2345]
limit nofile 100000 100000
...

La part locale doit être montée à la main, ou par certains automatismes, le maître de sel doit être démarré à la main après tous les redémarrages.

Remarqué plus tard: le script d'attente ci-dessus dans le montage-GLUSTERFS ... Bloque toute la procédure de démarrage, semble que GLUSTERFS-Server State n'atteint jamais.

1
Attila Heidrich

J'ai également rencontré cela aussi, et je veux préférer cette réponse avec la déclaration que je ne suis pas expert dans ce domaine, il est donc possible qu'il y ait une meilleure solution à cela!

Mais le problème semble être celui statique-Network-up est un événement, pas le nom d'un emploi à la place. Cependant, le script d'attente-état s'attend à ce qu'un nom de travail soit passé en tant que valeur WAIT_FOR. Ainsi, l'erreur de "travail inconnu" comme vous l'avez découverte ci-dessus.

Pour résoudre le problème, j'ai changé /etc/init/mounting-glusterfs.conf, changeant:

exec start wait-for-state WAIT_FOR=static-network-up WAITER=mounting-glusterfs-$MOUNTPOINT

dans:

exec start wait-for-state WAIT_FOR=networking WAITER=mounting-glusterfs-$MOUNTPOINT

la mise en réseau est le nom d'un travail réel (/etc/init/networking.conf) et je pense que le travail qui émet généralement un réseau statique.

Ce changement a fonctionné pour moi sur Ubuntu 14.04.

1
Dan Pisarski

J'ai réussi cela avec une solution vraiment simple:

  1. ajouter un point de montage sur/etc/fstab

    gluster:/VOLUME_NAME/local/mount/point glusterfs defaults,_netdev 0 0
    
  2. ajoutez une ligne à votre / etc/rc.local, il ressemblera donc à:

    mount -a
    exit 0
    

Maintenant, tous GLUSTERFS volumes seraient montés sur une startup.

0
Vladislav Kulbatski