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

news2024/11/24 16:49:19

文章目录

    • 一、背景
    • 二、方案总结
    • 三、方案实施
      • 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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于协程和事件循环的c++网络库

完整资料进入【数字空间】查看——baidu搜索"writebug" 介绍 开发服务端程序的一个基本任务是处理并发连接,现在服务端网络编程处理并发连接主要有两种方式: 当“线程”很廉价时,一台机器上可以创建远高于CPU数目的“线程”。这时…

紧跟国家“新能源+”模式!涂鸦智慧能源方案助力夏季用电节能提效

“今天的你是几分熟?” 今年夏天,高温来得比往年更早,五六月份就提前开启了滚滚热浪模式,京津冀和山东等地最高气温也一度突破了历史极值。在提前到来的高温“烤”验下,全社会供电能力面临着极大挑战。 中国电力网预…

rce题目

<?php include "flag.php"; highlight_file(__FILE__); if(isset($_GET[HECTF])) { if (; preg_replace(/[^\W]\((?R)?\)/, NULL, $_GET[HECTF])) { if (!preg_match(/pos|high|op|na|info|dec|hex|oct|pi/i, $_GET[HECTF])) { eval(…

进阶C语言——字符串和内存函数

今天我们学点库函数 字符函数和字符串函数 求字符串长度函数->strlen strlen需要的头文件是string.h ,那它的作用是什么呢&#xff1f;&#xff1f; 他是来求字符串长度的&#xff0c;统计的是’\0’前的字符串长度 #include<stdio.h> #include<string.h> int …

office CVE-2022-30190 RCE 复现

简介: 当用户点击word等应用程序时&#xff0c;会使用URL协议调用MSDT,随即启动msdt.exe程序造成远程代码执行漏洞。简单来说就是攻击者可以恶意构造一个word文档&#xff0c;诱骗受害者点击&#xff0c;从而导致系统被黑。 0x01 环境部署 1. 测试版本 Microsoft Office LTSC …

FPGA XDMA 中断模式实现 PCIE3.0 视频采集 OV5640摄像头 提供2套工程源码和QT上位机源码

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案视频采集和缓存XDMA简介XDMA中断模式QT上位机及其源码 5、vivado工程1-->单路视频采集6、vivado工程2-->双路视频采集7、上板调试验证8、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI …

springboot整合feign实现RPC调用

目录 一、服务提供者 二、服务消费者 三、测试效果 feign/openfeign和dubbo是常用的微服务RPC框架&#xff0c;由于feigin内部已经集成ribbon&#xff0c;自带了负载均衡的功能&#xff0c;当有多个同名的服务注册到注册中心时&#xff0c;会根据ribbon默认的负载均衡算法将…

用 perfcollect 洞察 Linux 上.NET程序CPU爆高

一&#xff1a;背景 1. 讲故事 如果要分析 Linux上的 .NET程序 CPU 爆高&#xff0c;按以往的个性我肯定是抓个 dump 下来做事后分析&#xff0c;这种分析模式虽然不重但也不轻&#xff0c;还需要一定的底层知识&#xff0c;那有没有傻瓜式的 CPU 爆高分析方式呢&#xff1f;…

使用testify包辅助Go测试指南

我虽然算不上Go标准库的“清教徒”&#xff0c;但在测试方面还多是基于标准库testing包以及go test框架的&#xff0c;除了需要mock的时候&#xff0c;基本上没有用过第三方的Go测试框架。我在《Go语言精进之路》[2]一书中对Go测试组织的讲解也是基于Go testing包和go test框架…

【Java|golang】415. 字符串相加

给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库&#xff08;比如 BigInteger&#xff09;&#xff0c; 也不能直接将输入的字符串转换为整数形式。 示例 1&#xff1a; 输入&#xff…

五笔衰落,PC和OCR惹得祸?

许多人认为五笔输入法的衰落主要因素是败给了拼音输入法&#xff0c;是被拼音输入法给“打残”了&#xff0c;取代了&#xff0c;其实这只是表面原因&#xff0c;笔者认为&#xff0c;其关键因素是PC的衰落和OCR技术的不断改进和发展&#xff0c;理由如下&#xff1a; 1、PC出…

TCP/IP详解

目录 一、OSI参考模型 1.图示 2.OSI七层模型各自作用 3.七层通信过程 二、IP协议 1.IPv4首部 2.IPv6首部 三、TCP协议 1.tcp首部格式 2.握手挥手图示 3.握手流程 4.为什么要三次握手&#xff1f; 5.四次挥手流程 6.为什么要四次分手&#xff1f; 7.为什么要等待…

kafka接收外部接口的数据,并实现转发

目录 一、什么是kafka 二、kafka接收外部接口数据 三、kafka收到数据后转发 四、kafka总结 一、什么是kafka Kafka是一种分布式流式处理平台&#xff0c;最初由LinkedIn开发。它设计用于高吞吐量、低延迟的数据处理&#xff0c;能够处理大规模的实时数据流。Kafka采用发布…

[PHP]解决exec执行unzip出现中文文件名乱码的问题

查看Linux编码&#xff0c;例如下图可看出Linx编码是zh_CN.UTF-8 问题截图&#xff1a; 以下代码都会产生乱码 exex(unzip -d /xxx /x/test.zip); exex(unzip -O zh_CN.UTF-8 -d /xxx /x/test.zip); exex(unzip -I zh_CN.UTF-8 -d /xxx /x/test.zip); 解决方法&#xff1a; …

Java线程的创建和使用

目录 基本概念 线程的创建和使用 线程的生命周期 基本概念 程序(program) 程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码&#xff0c;静态对象。 进程(process) 进程(process)是程序的一次执行过程&#xff0c;或是正在运行的一个程…

ESP32+MQTT+MySQL实现发布订阅【气味数据收集】

ESP32MQTTMySQL实现发布订阅【气味数据收集】 &#x1f52e;&#x1f52e;&#x1f52e;&#x1f52e;&#x1f52e;相关文章&#x1f52e;&#x1f52e;&#x1f52e;&#x1f52e;&#x1f52e; ESP32连接MQ Sensor实现气味反应 &#x1f517; https://blog.csdn.net/ws1516…

指针知多少

作者简介&#xff1a;დ旧言~&#xff0c;目前大一&#xff0c;现在学习Java&#xff0c;c&#xff0c;Python等 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 望小伙伴们点赞&#x1f44d;收藏✨加关注哟&#x1f495;&#x1f495; ⛵前言 不知道大家还记…

avi格式怎么转换成mp4?教你几种简单转换小技巧

由于 AVI 格式的文件结构&#xff0c;它们不适合用于流式传输。这意味着&#xff0c;如果你想在线观看一个 AVI 格式的视频&#xff0c;你需要等待整个文件下载完成后才能开始观看。这对于那些希望尽快开始观看视频的人来说可能是一个问题。那么我们怎么将AVI格式的视频转换成M…

【C语言】memcpy,memmove,memcmp,memset函数详解

memcpy,memmove,memcmp,memset函数详解 memcpy函数一、 memcpy函数的定义&#xff1a;二、memcpy函数的功能&#xff1a;三、memcpy函数模拟memcpy注意事项 memmove函数一、memmove函数简介二、memmove函数的模拟1.两种情况2模拟实现 memcmp函数memecmp函数介绍 memset函数mems…