大家好,我是冰河~~
估計年前祭拜服務器不靈了,年后服務器總是或多或少的出現點問題,不知是人的問題,還是風水問題,昨天下班時,跟運維小伙伴交代了好幾遍:如果使用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: 4
Running: 3
Paused: 0
Stopped: 1
Images: 33
Server Version: 19.03.8
############其他輸出資訊略############
最后,跟小伙伴們簡單說下,為啥開始我需要運維小伙伴給Kafka集群的服務器硬碟設定的大一些呢?
因為我們生產環境的流量是比較大的,平時基本都在5萬~8萬QPS,如果遇到高峰期,會遠比這些流量大的多,當時,我是在生產環境分了一部分流量到測驗環境,如果Kafka集群的磁盤不設定的大一些的話,當Kafka消費者性能下降或者由于其他原因,造成訊息在Kafka中堆積的話,會造成Kafka占用大量的磁盤空間,如果磁盤空間滿了的話,那么Kafka所在的服務器就會崩潰,宕機,
好了,今天就到這兒吧,我是冰河,大家有啥問題可以在下方留言,也可以加我微信:sun_shine_lyz,我拉你進群,一起交流技術,一起進階,一起進大廠~~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/274536.html
標籤:其他
