Назад | Перейти на главную страницу

glusterfs монтируется при загрузке на кластерных серверах - RHEL 7

Я настроил gluserfs на паре серверов, и я могу установить его на свои клиентские машины. Я также хочу иметь возможность монтировать файловую систему glusterfs на обоих серверах glusterfs при загрузке, когда я отключаю обе машины и запускаю их с нуля.

Эти серверы настроены как кластер с помощью кардиостимулятора. В дополнение к общей базе данных, pacemaker также предоставляет виртуальный IP-адрес для монтирования файловой системы gluster.

Я могу вручную смонтировать файловую систему на каждом из них после того, как оба сервера заработают, с помощью команды:

mount -t glusterfs nodea:/gv0 /data

Что здорово. Но я хочу, чтобы это происходило автоматически при загрузке.

Итак, я попытался добавить запись в fstab:

nodea:/gv0  /data       glusterfs   _netdev 0 0

Что работает, когда я запускаю команду «mount -a» после того, как кластер запущен и работает. Однако при загрузке он не работает. (Именно так клиентские машины монтируют glusterfs при загрузке, но кластер запущен и работает. Конечно, он работает для них при загрузке.)

Я также попытался создать файл systemd unit для монтирования glusterfs при загрузке. Мой файл модуля находится в / etc / systemd / system с именем "data.mount" и выглядит так:

# Mounting gluster fs at /data

[Unit]
Description = Automount gluster filesystem
After=pcsd.service

[Mount]
What=nodea:/gv0
Where=/data
Type=glusterfs

[Install]
WantedBy = pcsd.service

Опять же, это работает, когда оба сервера запущены и работают с помощью команды «systemctl start data.mount». Это также работает, если я перезагружаю только одну из машин в кластере. Но при перезагрузке обоих серверов не работает.

Если оба узла в кластере выходят из строя или мне хочется перезагрузить оба одновременно по какой-либо причине, я хочу быть уверен, что когда обе машины вернутся обратно, glusterfs будет смонтирован на / data.

В качестве обходного пути я добавил следующие строки в crontab root на обеих машинах:

@reboot sleep 60 && mount -t glusterfs nodea:/gv0 /data
@reboot sleep 300 && mount -t glusterfs nodea:/gv0 /data

Это сработает, если я запустил оба сервера с нуля. Но меня беспокоит то, что если служба кардиостимулятора запускается дольше 5 минут, то файловая система gluster у меня все равно не смонтирована на сервере в / data.

Есть ли способ, чтобы файл модуля systemd проверял, действительно ли он смонтировал файловую систему, и если не повторять попытку, пока это не произойдет?

Есть ли другой способ смонтировать glusterfs при загрузке и проверить, действительно ли он смонтирован?

При необходимости у вас должна быть возможность автоматически монтировать systemd. У меня также были проблемы с установкой Ubuntu 16.04 при загрузке. На основе это сообщение я добавил noauto,x-systemd.automount к моему fstab линия:

gluster1:/volume1   /storage-pool   glusterfs   defaults,_netdev,noauto,x-systemd.automount 0 0

Я перезагружал серверы приложений по несколько раз каждый, и все они успешно смонтированы. Надеюсь, это вам тоже поможет!

Я взламывал эту проблему, учитывая отношение LP:

файл: /etc/systemd/system/glusterfsmounts.service:

[Unit]
Description=Glustermounting
Requires=glusterfs-server.service

[Service]
Type=simple
RemainAfterExit=true
ExecStartPre=/usr/sbin/gluster volume list
ExecStart=/bin/mount -a -t glusterfs
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

тогда вы бы:

systemctl демон-перезагрузка

systemctl включить glusterfsmounts

и перезагрузка ... была для меня самой лучшей / стабильной

Вы можете использовать сценарий, чтобы поддерживать статус «запущен» службы systemd glusterfs, пока тома не будут готовы.

systemctl edit glusterd.service

[Service]
ExecStartPost=/usr/local/sbin/glusterfs-wait

Создайте файл /usr/local/sbin/glusterfs-wait со следующим:

#!/bin/bash 
FAIL=1
until [ $FAIL -eq 0 ]; do
    gluster volume status all
    FAIL=$?
    test $FAIL -ne 0 && sleep 1
    done
exit 0

Убедитесь, что этот файл исполняемый.

Затем создайте переопределение монтирования, например, для /mnt/storage это было бы mnt-storage.mount, косая черта становится дефисом.

systemctl edit mnt-storage.mount

Если это не сработает, и вы только что добавили запись fstab, перезагрузите systemd, чтобы он увидел обновление (systemctl daemon-reload).

[Unit]
After=glusterd.service
Wants=glusterd.service