Docker-compose容器服务异常重启脚本
  6FOKnKX7A0pt 2023年11月02日 31 0

前言:

有些企业可能并没有足够的能力或者没必要搭建(云上租用)一个K8S集群,会考虑使用Docker。

公司今年有个项目,一部分服务就是使用原来的,改改配置就能用,然后再配合实际的场景再新上1、2个服务。在云上再租用一个K8S集群或者自己搭建一个K8S集群就显得尤为浪费。但是有几个都是之前的服务就迁移一下就行了,所以我还是考虑容器,毕竟迁移方便嘛。所以采用了Docker-compose来管理Docker容器的方式。

在K8S中,可以配置健康检测探针,但是Docker-compose里面并没有。所以编辑了SHELL脚本来实现异常重启。


SHELL脚本:

#!/bin/bash

# docker-compose.yml 文件所在目录
COMPOSE_DIR="/opt/software/dun-tools-server"

while true; do
  # 检查所有容器状态
  for CONTAINER_NAME in $(docker-compose -f $COMPOSE_DIR/docker-compose.yml ps --services); do
    HEALTH_STATUS=$(docker inspect --format='{{json .State.Health}}' $(docker-compose -f $COMPOSE_DIR/docker-compose.yml ps -q $CONTAINER_NAME))
    if [[ "$HEALTH_STATUS" == *"\"Status\":\"unhealthy\""* ]]; then
      echo "$(date +%Y-%m-%d\ %H:%M:%S) - $CONTAINER_NAME is unhealthy, restarting..."
      docker-compose -f $COMPOSE_DIR/docker-compose.yml stop $CONTAINER_NAME
      docker-compose -f $COMPOSE_DIR/docker-compose.yml up -d $CONTAINER_NAME
    fi
  done

  # 每隔2分钟检查一次
  sleep 120
done


脚本作用展示:

使用nohup后台启动即可,看异常重启日志时可以查看nohup.out日志。

Docker-compose容器服务异常重启脚本_SHELL

因为这个程序对CPU资源消耗很大,都是关于计算的操作,但是该服务被开发出来时,最大又只能使用一个CPU,因此使用了多个节点,当某一个节点掉线时,通过上边的脚本能检测到(每120s检测一次),然后进行重启。只有我这边运维这边通过日志能看到哪个节点什么时间进行了重启,客户方无感。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月11日   32   0   0 Dockercentos
  MCWYWqSAMsot   2023年12月11日   33   0   0 Docker
  DnoStTHsc0vp   2023年12月11日   27   0   0 Docker
  wwLZeziuqjLR   2023年12月08日   103   0   0 Dockercentosbash
  wwLZeziuqjLR   2023年12月07日   36   0   0 Dockercentos