我在一对服务器上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
并重新启动…迄今为止最好/最稳定的我