又卡了,大数据平台容器化运维走起

文章目录

    • 一、背景
    • 二、方案总结
    • 三、方案实施
      • 3.0 转移数据修改docker默认存储位置
      • 3.1 手动清理
      • 3.2 定时容器日志清理
      • 3.3 限制 Docker 容器日志大小


大家好,我是脚丫先生 (o^^o)

大数据基础平台的搭建,我采用的是全容器化Apache的大数据组件。

之前还很美滋滋的肝着。

某一天,我部署新服务的时候,突然提示我**「无法安装新的容器,提示磁盘占满 !」**

一、背景

Centos7的云服务器,内存16G,硬盘140G

实施大数据平台基础环境容器化部署。

因为大数据组件容器化的日志信息,没有定时清理,所以很快占满磁盘。

在这个云服务器资源寸土寸金的地方,没钱只能瞪眼的享受妥妥的无力感。

终不屈服的我,采用了不同的方案,以此分享给小伙伴们!!!

卡得我云服务器,真想给它一拳头。。。

  • 第一列 Filesystem 代表文件系统的名称。

  • 第二列 Size 表示文件系统的大小。

  • 第三列 Used 表示已占用多大的磁盘空间。

  • 第四列 Avail 表示可用磁盘空间的大小。

  • 第五列 Use% 表示磁盘使用率多大,100% 表示磁盘占满了。

  • 第六列 Mounted On 表示挂载在哪个目录。

二、方案总结

  • 方案零:转移数据修改docker默认存储位置,治标不治本,无法提供无限量磁盘。

  • 方案一:手动清理日志文件,可解燃眉之急,治标不治本。

  • 方案二:脚本定期清理日志文件,缺点是日志文件全丢了,无法追溯。

  • 方案三:限制所有容器的日志文件大小,治本,缺点是需要重新创建容器和启动 docker 镜像。

三、方案实施

3.0 转移数据修改docker默认存储位置

修改docker的默认存储位置

虽然有多种方式修改docker默认存储位置,但最好还是在docker安装完后,第一时间修改docker默认存储位置为其他大目录或者磁盘中。

规避迁移数据过程中造成的风险。

(1) 转移

  • 停止docker服务
systemctl stop docker
  • 创建新的docker目录

执行命令df -h,找一个大的磁盘,新建自己用于存储容器日志的目录

例如我在/home目录下面建了/home/modules/docker/lib目录

mkdir -p /home/modules/docker/lib
  • 迁移目录

把/var/lib/docker目录下面的文件到/home/modules/docker/lib目录里

迁移后的完成docker路径:/home/modules/docker/lib/docker

rsync -avz /var/lib/docker/ /home/modules/docker/lib/
  • 进行docker配置文件修改

配置文件网上很多,篇幅有限,不在此展开。

vim /etc/systemd/system/docker.service

添加如下:

ExecStart=/usr/bin/dockerd  --graph=/home/modules/docker/lib/docker
  • 重启docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker

3.1 手动清理

cat /dev/null > /var/lib/docker/containers/容器id/容器id-json.log

注意: 这里没有使用 rm 方式来删除文件。

使用 rm -rf 方式删除日志后,通过 df -h 会发现磁盘空间并没有释放。原因是在Linux或者Unix系统中,通过 rm -rf 或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。

如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。

正确姿势是cat /dev/null > *-json.log,当然你也可以通过rm -rf删除后重启docker。

3.2 定时容器日志清理

  • 编写清理docker日志文件脚本

在自己想在的目录下,编写清理脚本cleardockerlog.sh

#!/bin/sh 
echo "======== start clean docker containers logs ========"  
logs=$(find /var/lib/docker/containers/ -name *-json.log)  
for log in $logs  
        do  
                echo "clean logs : $log"  
                cat /dev/null > $log  
        done  
echo "======== end clean docker containers logs ========"
  • 加入定时任务,并设置立即生效
crontab -e
0 2 */1 * * sh /root/clean_docker_log.sh

3.3 限制 Docker 容器日志大小

新建 /etc/docker/daemon.json,若有就不用新建了。

vim /etc/docker/daemon.json

配置内容如下:

{
"log-driver":"json-file",
"log-opts": {"max-size":"500m", "max-file":"3"}
}

max-size=500m,表示容器的日志文件大小上限是 500M, max-file=3,表示容器有三个日志,第一个满了 500M之后就写第二个,第二个满了 500M就写第三个,如果第三个满了,就清空第一个日志文件,重新写第一个日志文件。如下图所示:

写了 3 个日志文件,最大不超过 500M
改完之后需要重启 docker 守护进程


systemctl daemon-reload
systemctl restart docker

注意:
「这种方式只对新建的容器有效的,之前的容器不生效。」

验证容器是否已应用日志设置(以 root 身份):

/var/lib/docker/containers//hostconfig.json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/39565.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java对象深拷贝、浅拷贝之枚举类型

问题:为什么属于引用类型的enum不会有深拷贝浅拷贝的问题? 解释: 在Java中,枚举类型是一种特殊的类类型。每个枚举值都是该枚举类型的一个实例,并且这些实例在枚举类型被初始化时就已经被创建。这些实例在程序的整个…

如何二次封装一个el-table组件并二次复用

*注:示例使用的是vue3和element进行二次封装的 首先我们来看效果图(总共可以分为以下几个模块): 表格数据操作按钮区域表格信息提示区域表格主体内容展示区域表格分页区域 表单搜索没有封装在这里是为了降低代码的耦合性(有兴趣的可以查看我…

rt-thread构建含c++源码的工程

RT-Thread Components > C/C and POSIX layerscons构建项目会出错: vim libraries/SConscript ,删除 pico-sdk/src/rp2_common/pico_standard_link/new_delete.cpp(切记不要注释,要删除) 再次scons构建项目&#…

【FPGA】基于C5的第一个SoC工程

文章目录 前言SoC的Linux系统搭建 前言 本文是在毕业实习期间学习FPGA的SoC开发板运行全连接神经网络实例手写体的总结。 声明:本文仅作记录和操作指南,涉及到的操作会尽量细致,但是由于文件过大不会分享文件,具体软件可以自行搜…

手机定屏死机问题操作指南

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、定屏死机问题抓取 Log 要求二、 复现定屏死机问题后做什么三、检查adb是否可连的方法四、连接adb 抓取以下Log五、如果adb不可连,执行下…

多个信贷范围时客户主数据界面的定制(套头和信用缴纳范围=信贷范围)

客户主数据-销售范围-开票的界面有信贷范围,叫贷方控制范围。 但是默认是看不到的。需要进行配置。 但是SAP的配置里面的名字很奇怪,在客户账户组里面的销售数据中(OVT0)定制 双击后处理的这个界面,和界面的“”开票凭证“”对不上&#x…

SaleSmartly,客户满意度调查的绝对好助手

企业使用客户满意度调查来收集反馈并评估客户满意度水平,包括有关产品质量、服务、支持和整体满意度的问题。客户满意度调查的主要目标是直接从客户那里收集有价值的见解,以了解他们的需求、偏好和期望。这种反馈可以帮助企业确定需要改进的领域&#xf…

Fiddler抓包app(方便后端定位app调用的是那个接口?参数为何?)

一、抓http请求的包 1、设置Fiddler允许远程连接 选择Tools->Options 选择Connections选项卡,选中允许远程连接,如图所示 2、手机与电脑连接相同的wlan网络 3、手机wlan设置手动代理, 1)手动代理的主机名设为电脑ip&…

5分钟给你破解这套10万赞的生产教程,访谈乔布斯的AI对话数字人视频是怎么做的

本期是赤辰第16期AI项目拆解栏目; 底部准备了7月粉丝福利,看完可以领取; 上周给粉丝们讲解AI动图说话月涨粉20万的案例并给出保姆式教程,粉丝反馈很热烈,都觉得AI强大,有些学员给自己账号做视频&#xff…

PID算法

PID,就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种很常见的控制算法。 需要将一个物理量保持在稳定状态(比如维持平衡,温度、转速的…

安全开发-PHP应用留言板功能超全局变量数据库操作第三方插件引用后台模块SessionCookieToken身份验证唯一性

文章目录 开发环境数据导入-mysql架构&库表列数据库操作-mysqli函数&增删改查数据接收输出-html混编&超全局变量第三方插件引用-js传参&函数对象调用身份验证-Cookie使用身份验证-Session使用唯一性判断-Token使用具体安全知识点:Cookie和Session都…

数据库应用:CentOS 7离线安装MySQL与Nginx

目录 一、理论 1.安装依赖 二、实验 1.离线安装MySQL与Nginx 2.离线安装Nginx 三、问题 1.执行nginx -v命令报错 四、总结 一、理论 1.安装依赖 (1)概念 安装依赖是指在软件开发中,为了运行或者编译一个程序或者库,在计…

基于小波哈尔法(WHM)的一维非线性IVP测试问题的求解(Matlab代码实现)

💥1 概述 小波哈尔法(WHM)是一种求解一维非线性初值问题(IVP)的数值方法。它基于小波分析的思想,通过将原始问题转化为小波空间中的线性问题,然后进行求解。以下是一维非线性IVP测试问题的求解…

Android性能优化——启动优化

App 的启动速度是用户的第一体验,互联网中有一个八秒定律,如果用户等待八秒App 还没打开,70%的用户都会停止等待 一、启动分类 官方 App startup time 冷启动 耗时最多,衡量标准 热启动 最快。 后台~前台 温启动…

数据中心水浸事件,该如何找回安全?

数据中心是现代企业和组织中不可或缺的基础设施,承载着大量的敏感数据和关键业务运作。然而,水浸事件可能成为数据中心的巨大威胁,可能导致设备故障、数据丢失以及业务中断,给组织带来严重的损失和风险。 因此,为了保护…

linux之Ubuntu系列(八)用户管理 修改文件权限

修改文件权限 chown 修改拥有者 -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。 修改 文件|目录 的拥有者 sudo chown [-R] 用户名 文件名|目录 更改文件属主&…

pytest 参数化进阶

目录 前言: 语法 参数化误区 实践 简要回顾 前言: pytest是一个功能强大的Python测试框架,它提供了参数化功能,可以帮助简化测试用例的编写和管理。 语法 本文就赶紧聊一聊 pytest 的参数化是怎么玩的。 pytest.mark.par…

⛳ Java数组

Java数组的目录 ⛳ Java数组🎨 一,一维数组👣 1.1,概念📢 1.2,基本用法1,语法格式2,代码 💻 1.3,内存结构📝 1.4,练习 🎁 …

DB-Engines排名公布 GBASE南大通用入围国产数据库TOP 3

什么是DB-Engines排名? DB-Engines排名是数据库领域的流行度榜单,它对全球范围内的419款数据库(截至2023年7月)进行排名,每月更新一次,排名越靠前,则表示越流行。在很多技术选型的场合&#xf…

亚信科技荣任「DBL电信行业工作组」副组长单位,AntDB数据库连年入选《中国数据库产品图谱》

日前,“2023可信数据库发展大会”在京圆满召开。亚信科技凭借自研的电信级核心交易数据库AntDB在通信行业15年的技术积累和行业贡献,成功当选为数据库应用创新实验室(DBL)电信行业工作组副组长单位。AntDB数据库连续两年入选《全球…