Docker Keepalived:检查 HAProxy(在另一个容器中)是否健康

问题描述 投票:0回答:3

我有两个 Docker 容器:

1 用于 Keepalived 1 个用于 Haproxy

问题是我的track_script

killall -0 haproxy
(检查haproxy是否还活着)无法到达haproxy的进程(因为它在另一个容器中..)

我该怎么办?

谢谢!

docker process haproxy keepalived
3个回答
0
投票

最后我安装并绑定了 docker 套接字以在我的容器中运行

docker exec othercontainer killall -0 haproxy

不是最好的方法,但是..它有效


0
投票

我有同样的情况,但我的 keepalived 不在容器中。我的场景:

  1. HAProxy 容器
  2. Keepalived 服务(不是基于容器的)

为了在keepalived中使用track_script来监控haproxy,不幸的是我无法处理docker命令,所以我使用了这个track_script:

#!/bin/bash

output=$(netstat -tlpn | grep <YOUR_PORT_NUMBER>) 

if [[ -n "$output" ]]; then
  exit 0
else
  exit 1
fi

当端口被 haproxy 容器使用时,此 track_script 返回 0。


-1
投票

什么也没有。如果容器中的主进程退出,容器也会退出; Docker 自动执行此操作,您不应该(并且在大多数情况下不能)检查另一个容器中的单个进程。

您可以使用重新启动策略让 Docker 自动重新启动容器及其包含的进程(如果容器恰好退出):

docker run -d --restart on-failure ... haproxy
© www.soinside.com 2019 - 2024. All rights reserved.