小编mr.*_*ski的帖子

HAproxy:在运行状况检查更改时运行脚本

我已经设置了一个 haproxy 配置,其后端有两台服务器,如下所示:

...
default
        option log-health-checks
...
mailers mta
        mailer smtp1 127.0.0.1:25
...
backend s_api
        balance roundrobin
        option httpchk GET /sites?site=q&limit=1

        http-check expect rstatus (2|3)[0-9][0-9]

        server s1_a 1.2.3.4:3600 check inter 5s fall 4 rise 1
        server s2_b 1.2.3.5:3600 check backup

        timeout queue 60s
        timeout server 60s
        timeout connect 60s

        email-alert mailers mta
        email-alert level notice
        email-alert from haproxy@example.com
        email-alert to ops@example.com
Run Code Online (Sandbox Code Playgroud)

现在,当服务器出现故障并再次启动时,我会通过电子邮件收到通知。我想要存档的是在服务器启动时启动本地 bash 脚本,在服务器关闭时启动另一个本地 bash 脚本。

怎么可能呢?

healthcheck haproxy alert

6
推荐指数
1
解决办法
1万
查看次数

NFS 共享上的 Docker 卷 - 空目录

我们的业务应用程序在两个节点(节点 1 和节点 2)上运行 Docker Swarm 部署。

应用程序需要一个卷来存储持久数据。由于尚不清楚容器部署在哪里(节点 1 或节点 2),并且应用程序的两个容器可能应该在两个节点上运行,因此我们需要一个解决方案来为所有节点提供共享卷。

为了共享卷,我们使用以下 /etc/exports 文件在第三个节点 3 上设置 NFS 服务器:

/srv          *(rw,sync,anonuid=1000,anongid=1000,all_squash,subtree_check,crossmnt,fsid=root)
Run Code Online (Sandbox Code Playgroud)

(我使用 anonuid/gid 为导出中的每个文件显式设置 node3 系统中已知用户的用户信息。 all_squash 用于确保所有访问用户的所有文件权限都重写给该本地用户)

在我们的 docker-compose.yml 中,我们使用以下设置来包含卷:

volumes:
  nfs-data:
    driver: local
    driver_opts:
      type: nfs
      o: nfsvers=4,addr=node3.example.com,rw,nolock,soft
Run Code Online (Sandbox Code Playgroud)

我们现在遇到了一个问题,容器只是不想启动,错误消息是:

failed to copy file info for /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: failed to chown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: lchown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: operation not permitted
Run Code Online (Sandbox Code Playgroud)

经过一番挖掘后,我发现问题在于 Node3 服务器上导出的 NFS 目录上的初始空文件夹。一旦我放入一个空文件,节点 1 和节点 2 中的容器启动就完全正常。

有人对此有解释吗?

nfs share nfs4 docker

1
推荐指数
1
解决办法
3008
查看次数

标签 统计

alert ×1

docker ×1

haproxy ×1

healthcheck ×1

nfs ×1

nfs4 ×1

share ×1