glusterfs在群集服务器上启动时挂载 – RHEL 7

我在一对服务器上configuration了gluserfs,我可以在我的客户机上安装它。 我希望在两台机器都处于脱机状态并从头开始启动时,也能够在启动时在两台glusterfs服务器上安装glusterfs文件系统。

这些服务器使用起搏器设置为一个群集。 除了共享数据库之外,起搏器还提供了一个虚拟IP地址来安装gluster文件系统。

我可以手动挂载两个服务器上的文件系统:

mount -t glusterfs nodea:/gv0 /data 

这是伟大的。 但是我希望这在启动时自动发生。

所以我尝试添加一个条目到fstab:

 nodea:/gv0 /data glusterfs _netdev 0 0 

在集群启动并运行后运行“mount -a”命令时,这是有效的。 但是,启动时不起作用。 (这是客户端机器在启动时挂载glusterfs的方式,但是集群已经启动并运行了,所以它当然可以在启动时运行)。

我也尝试创build一个systemd单元文件来处理启动时glusterfs的安装。 我的单元文件位于名为“data.mount”的/ etc / systemd / system中,如下所示:

 # 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”,这将起作用。 如果我只重启群集中的一台机器,它也可以工作。 但是两台服务器都不能重启。

如果集群中的两个节点都closures了,或者因为某种原因想要同时重启,那么我想确保当两台机器都恢复正常时,glusterfs被挂载在/ data上。

作为解决办法,我已经在两台机器的root用户的crontab中添加了以下几行:

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

如果我从头开始两个服务器,这将起作用。 但我担心的是,如果起搏器服务需要花费超过5分钟的时间才能启动,那么我仍然没有在/ data上的服务器上安装gluster文件系统。

有没有办法让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

并重新启动…迄今为止最好/最稳定的我