大家好,我是冰河~~

估计年前祭拜服务器不灵了,年后服务器总是或多或少的出现点问题。不知是人的问题,还是风水问题。昨天下班时,跟运维小伙伴交代了好几遍:如果使用Docker安装Kafka集群的话,也需要把Kafka集群的服务器硬盘分配的大一些,公司业务量很大,很多服务的通信、数据的流转、日志采集的传输等,都是通过Kafka消息总线进行的。

没想到今天早上一到公司,刚刚做到工位上,打开我的电脑,邮件里瞬间收到大量服务器告警信息,紧接着看到监控大屏上显示,内网几台测试服务器挂了。此时,我的表情是这样的。

我靠,啥情况?刚一来就搞事情?哪些服务器出问题了?再定睛一看大屏,我去,这不是昨天跟运维小伙伴说的那几台Kafka集群服务器吗?

刚测试就挂了?不会这么衰吧?

于是,我赶紧走到运维小伙伴旁边,说:你昨天怎么配置的服务器啊?

他说:我没配置啊?不是测试环境吗?我就没怎么配置,我是每台服务器给了120G空间,按照默认设置安装的Kafka集群啊!

我:不是跟你说了让你把服务器磁盘空间设置的大一些吗?。。。

心里再怎么无语,也要解决问题啊!于是我赶紧登录服务器,在服务器命令行执行命令,将当前服务器终端所在的目录切换到Docker镜像默认的目录下。

[root@localhost ~]# cd /var/lib/docker

结果却报错了,报错信息如下所示。

[root@localhost ~]# ls -bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间
-bash: 无法为立即文档创建临时文件: 设备上没有空间

无法切换目录了。咋办?我下意识的看下服务器的磁盘情况,结果一看出事了。

[root@localhost ~]# df -lh
文件系统                      容量  已用  可用 已用% 挂载点
devtmpfs                      3.8G     0  3.8G    0% /dev
tmpfs                         3.9G     0  3.9G    0% /dev/shm
tmpfs                         3.9G   82M  3.8G    3% /run
tmpfs                         3.9G     0  3.9G    0% /sys/fs/cgroup
/dev/mapper/localhost-root   50G   50G   0G   100% /
/dev/sda1                     976M  144M  766M   16% /boot
/dev/mapper/localhost-home   53G   5G   48G   91% /home
tmpfs                         779M     0  779M    0% /run/user/0
overlay                        50G   50G   0G   100% /var/lib/docker/overlay2/d51b7c0afcc29c49b8b322d1822a961e6a86401f0c6d1c29c42033efe8e9f070/merged
overlay                        50G   50G   0G   100% /var/lib/docker/overlay2/0e52ccd3ee566cc16ce4568eda40d0364049e804c36328bcfb5fdb92339724d5/merged
overlay                        50G   50G   0G   100% /var/lib/docker/overlay2/16fb25124e9b85c7c91f271887d9ae578bf8df058ecdfece24297967075cf829/merged

我去,根目录磁盘空间占用率100%,果然跟我想的一样。 而且输出的结果信息中,显示了几个重要的信息,如下所示。

overlay                        50G   50G   0G   100% /var/lib/docker/overlay2/d51b7c0afcc29c49b8b322d1822a961e6a86401f0c6d1c29c42033efe8e9f070/merged
overlay                        50G   50G   0G   100% /var/lib/docker/overlay2/0e52ccd3ee566cc16ce4568eda40d0364049e804c36328bcfb5fdb92339724d5/merged
overlay                        50G   50G   0G   100% /var/lib/docker/overlay2/16fb25124e9b85c7c91f271887d9ae578bf8df058ecdfece24297967075cf829/merged

这不就是Docker的默认安装镜像吗?

下一步怎么办呢?我们看到/home目录还是比较空闲的,我们可以把Docker默认的镜像目录从 /var/lib/docker目录移动到 /home/docker目下,来临时缓解下服务器的压力,进行测试。其他的就等重新分配好服务器再切换吧。

马上开干,于是我开始迁移Docker默认镜像目录。

迁移Docker默认镜像目录,有两种方案,这里跟小伙伴们说下,一种方案是:软链接法;另一中方案是:修改配置法。 接下来,我们就分别看下这两种方法。

1.软链接法

(1)默认情况下Docker的存放位置为:/var/lib/docker,我们可以通过下面的命令来查看Docker默认镜像安装目录。

[root@localhost ~]# docker info | grep "Docker Root Dir"
Docker Root Dir: /var/lib/docker

(2)接下来,我们执行如下命令停掉Docker服务器。

systemctl stop docker

或者

service docker stop

(3)然后将 /var/lib/docker 目录整体移动到 /home 目录下。

mv /var/lib/docker /home

这个过程可能时间比较长。

(4)接下来,再创建软链接,如下所示。

ln -s /home/docker /var/lib/docker

(5)最后,我们启动Docker服务器。

systemctl start docker

或者

service docker start

(6)再次查看Docker镜像的目录,如下所示。

[root@localhost ~]# docker info | grep "Docker Root Dir"
Docker Root Dir: /home/docker

此时,Docker镜像目录迁移成功。

接下来,我们再说说修改配置法。

2.修改配置法

指定镜像和容器存放路径的参数是 –graph=/var/lib/docker ,我们只需要修改配置文件指定启动参数即可。

这里,我使用的服务器操作系统是CentOS。所以,可以通过如下方式方式修改了Docker的配置。

(1)停止Docker服务

systemctl stop docker

或者

service docker stop

(2)修改docker服务启动文件。

vim /etc/systemd/system/multi-user.target.wants/docker.service

在启动文件中增加如下一行代码。

ExecStart=/usr/bin/dockerd --graph=/home/docker

(3)重新加载配置并启动

systemctl daemon-reload
systemctl start docker

(4)再次查看Docker镜像的目录,如下所示。

[root@localhost ~]# docker info | grep "Docker Root Dir"
Docker Root Dir: /home/docker

此时,Docker镜像目录迁移成功。

Kafka集群可以临时使用了,先让数据跑起来。于是我又重新分配了服务器,搭建好Kafka集群,中午把测试环境迁移到新的Kafka集群上。目前还在测试中。。。

小伙伴们学会了吗?

PS: 我使用的服务器操作系统版本如下。

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)

使用的Docker版本如下。

[root@localhost ~]# docker info
Client:Debug Mode: false
Server:Containers: 4Running: 3Paused: 0Stopped: 1Images: 33Server Version: 19.03.8
############其他输出信息略############

最后,跟小伙伴们简单说下,为啥开始我需要运维小伙伴给Kafka集群的服务器硬盘设置的大一些呢?

因为我们生产环境的流量是比较大的,平时基本都在5万~8万QPS,如果遇到高峰期,会远比这些流量大的多。当时,我是在生产环境分了一部分流量到测试环境。如果Kafka集群的磁盘不设置的大一些的话,当Kafka消费者性能下降或者由于其他原因,造成消息在Kafka中堆积的话,会造成Kafka占用大量的磁盘空间。如果磁盘空间满了的话,那么Kafka所在的服务器就会崩溃,宕机。

好了,今天就到这儿吧,我是冰河,大家有啥问题可以在下方留言,也可以加我微信:sun_shine_lyz,我拉你进群,一起交流技术,一起进阶,一起进大厂~~

跟你说了,你不听,怎么样?服务器“炸”了吧?相关推荐

  1. java监听某端口和ip_Java 通过Socket监听指定服务器(IP)的指定端口,及向指定服务器的指定端口发送信息...

    客户端:向指定端口发送信息 package com.jszc.lottery.modules.longpay.util; import java.io.BufferedReader; import j ...

  2. java本地监听zk服务器节点【动态上下线】

    [README] java本地访问 zk cluster, refer 2 https://blog.csdn.net/PacosonSWJTU/article/details/111404364 [ ...

  3. 开启1521端口监听_服务器1521端口被关闭,如何开启?

    展开全部 方法如下: 1.修改远程桌面连接端口: (1)远程桌面终端服务默认端口为"3389",为防止他人进行恶意连接,就需要323131333532363134313032313 ...

  4. 开启1521端口监听_服务器1521端口被关闭,如何开启

    521是Oracle监听端口,问题估计还是出在监听本身. 我打开另一台也装有Oracle且1521可以连接的机器,查看NETWORKADMINlistener.ora文件,仔细对比两个Oracle该文 ...

  5. 监听web服务器状态,处理监听fd的流程 - web服务器lighttpd1.4.18代码详细分析_Linux编程_Linux公社-Linux系统门户网站...

    //接收一个新的连接connection*connection_accept(server*srv, server_socket*srv_socket) {/*accept everything*// ...

  6. activemq spring监听不了

    报错信息: 2017.06.27 00:00:03 ERROR DefaultMessageListenerContainer(947):? Could not refresh JMS Connect ...

  7. tcp测试监听工具_高清无码多图详解!性能测试六大核心体系(没人的时候偷偷看)...

    点击上方蓝字关注我们 ! 小编闭关多日,今天正式出关!值此七夕佳节,给大家送上沉痛的的祝福,祝大家节日快乐,有钱人终成眷属! 小编有话说 今天给大家介绍的是一个在课堂上整理出来的完整性能测试体系框架, ...

  8. java利用canal监听数据库

    springcloud如何使用canal监听mysql数据库操作 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQ ...

  9. Java UDP 广播、组播使用--系列2-多网卡监听问题

    **知识点:**单播:与某个人聊天 多播:拉了个群进行群聊 (多播IP地址就是D类IP地址,即224.0.0.0至239.255.255.255之间的IP地址) 广播:类似微信群发 可以这么简单理解, ...

最新文章

  1. 博客园添加访问人数统计超详细教程
  2. ofstream、ifstream、fstream
  3. Java高阶代码_Java高阶语法---Volatile
  4. 1/2 常用函数:内建函数
  5. scrapy框架架构
  6. 使用Flexible实现H5页面的终端适配
  7. B树插入和删除的各种情况分析
  8. vue 中provide的用法_浅谈vue中provide和inject 用法
  9. react 结合 axios 异步请求封装
  10. python爬网页html乱码问题
  11. win10内存占用率过高怎么办?Win10电脑内存占用率很高的原因和解决方法
  12. 计算机死机后 通过任务管理器关闭程序,电脑死机后,按哪个键结束程序
  13. 电脑桌面删除的文件怎么找回?
  14. CE-植物大战僵尸-关于阳光的修改
  15. 个人图床的最简单制作-腾讯云COS
  16. 联想笔记本——进入PE系统
  17. C++ Float和Double类型的有效位解释
  18. vue 调用pc端本地摄像头、麦克风实现拍照、录视频、录音 并上传到服务器指定树文件夹
  19. Spring boot 集成 Elastic-job 实现定时任务
  20. 360随身wifi产品分析

热门文章

  1. 2019电子设计大赛综测分享
  2. Python request爬取华为P30手机京东评论
  3. IDEA中merge分支时提示refusing to merged unrelated histories
  4. VS Code + Vue 开发环境搭建
  5. vue中生成条形码(jsbarcode)、二维码(qrcodejs2)
  6. 树莓派4b 串口通信实现自发自收
  7. 数控CNC加工中心采用滚珠导轨和滚柱导轨?有哪些区别?
  8. 参加2007新经济投融资大会感受
  9. 【leetcode】把数字翻译成字符串 c++
  10. 商业价值杂志:企业信息新战略--战情室