2021-11-13

Kafka 服务器宕机


前言

现在很多公司工具都分开部署,从而保证安全性。而且如果使用 Docker 安装 Kafka 集群的话,也需要把 Kafka 集群的服务器硬盘分配的大一些,因为很多服务的通信、数据的流转、日志采集的传输等,都是通过 Kafka 消息总线进行的。


一、挂机事件

公司2019年后,业务量扩大,也更新了之前的消息队列,换成了kafka,所以使用 Docker 安装 Kafka 集群的话,特意叮嘱运维需要把 Kafka 集群的服务器硬盘分配的大一些,没想到第二天邮件里瞬间收到大量服务器告警信息,紧接着看到监控显示内网几台测试服务器挂机。

二、解决步骤

1.登录服务器

将当前服务器终端所在的目录切换到 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% /dockerhome
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

发现已经overlay了,根目录磁盘空间占用率 100%。

2.移动目录

/dockerhome目录还是比较空闲的,我们可以把 Docker 默认的镜像目录从 /var/lib/docker目录移动到 /dockerhome/docker目下,来临时缓解下服务器的压力,进行测试。其他的就等重新分配好服务器再切换。然后使用修改配置法去迁移 Docker 默认镜像目录。
指定镜像和容器存放路径的参数是–graph=/var/lib/docker ,我们只需要修改配置文件指定启动参数即可。公司使用的服务器操作系统是 CentOS。所以,可以通过如下方式方式修改了 Docker 的配置。
(1)停止 Docker 服务

systemctl stop docker

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

vim /etc/systemd/system/multi-user.target.wants/docker.service
ExecStart=/usr/bin/dockerd --graph=/dockerhome/docker

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

systemctl daemon-reload
systemctl start docker

总结

生产环境的流量是比较大的,正常基本都在 5万 QPS,如果遇到高峰期,几乎是2-3倍。公司kafka集群有5台机器,正常情况下3台机器足够了,但是懂的都懂,一台机器配置80T左右。基本上配置内存都在,当时,我是在生产环境分了一部分流量到测试环境。如果 Kafka 集群的磁盘不设置的大一些的话,当 Kafka 消费者性能下降或者由于其他原因,造成消息在 Kafka 中堆积的话,会造成 Kafka 占用大量的磁盘空间。如果磁盘空间满了的话,那么 Kafka 所在的服务器就会崩溃,宕机。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值