我正在尝试在 Debian 11 上创建一个小型 3 节点 ha 集群,其中包含 apache2、php、mariadb、galera、glusterfs、haproxy 和 keepalived。我想同步大多数配置文件(内容相同),并在受监控目录的内容发生更改时使用 systemd.path 单元在其他节点上重新启动特定服务。在此特定情况下,它是 apache2 服务及其配置文件夹。
/etc/apache2 目录已移至 glusterfs brick,该 brick 安装在所有节点的 /mnt/apache2 上。然后,所有节点上的 /etc/apache2 目录均被删除,并在所有节点上创建从 /mnt/apache2 到 /etc/apache2 的符号链接。Systemd 会监控 /mnt/apache2 目录的更改。
如果我在 node1 上的 /mnt/apache2 中创建一个文件,apache2 服务只会在 node1 上重新启动,尽管更改已复制到所有节点。服务只会在监控目录中进行更改的节点上重新启动,尽管内容已更改到所有节点,但我不知道为什么服务不会在其他节点上重新启动。
我已尝试使用 csync2 和 lsyncd 实现实时同步,但 csync2 经常会报告某些文件或目录“脏”,并且同步不会发生,而且在内容更改时使用 csync2 重新启动服务我也无法使其工作。
以下是单元文件内容:
#/etc/systemd/system/apache2monitor.path
[Unit]
Description="Monitor /mnt/apache2 folder for changes"
[Path]
PathChanged=/mnt/apache2
Unit=apache2monitor.service
[Install]
WantedBy=multi-user.target
#/etc/systemd/system/apache2monitor.service
[Unit]
Description="Restarts apache2 service based on .path unit"
[Service]
ExecStart=/etc/init.d/apache2 restart