(資料圖片)
本人前幾天買了一臺2核4G+40G磁盤空間的云服務(wù)器用來學(xué)習(xí)使用,在服務(wù)器上安裝了docker。為了學(xué)習(xí)redis主從架構(gòu),使用docker-compose部署了一主二從三臺redis服務(wù),部署完成之后測試發(fā)現(xiàn)從服務(wù)器并沒有同步主服務(wù)器的數(shù)據(jù),查看配置文件沒有看出來什么問題,進入三臺redis服務(wù)容器內(nèi)部使用info replication
查看主從信息發(fā)現(xiàn)也沒有問題,看了很久都沒看出問題于是就先休息了。第二天想著是不是服務(wù)器哪里的問題重啟看看能不能解決,重啟之后運行docker ps
命令查看容器運行情況結(jié)果提示:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?。由于服務(wù)器上docker配置了開機啟動,redis的docker-compose.yml配置了重啟策略
# docker服務(wù)設(shè)置開機啟動systemctl start dockersystemctl enable docker# docker-compose.yml設(shè)置重啟策略restart: always
所以理論上重啟應(yīng)該會自動啟動docker服務(wù)并運行redis容器
定位問題過程既然錯誤提示沒有啟動docker,那就systemctl start docker
手動啟動試試,結(jié)果報錯Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
,跟隨提示執(zhí)行systemctl status docker.service
命令查看錯誤信息結(jié)果詳細信息里也沒看出具體什么原因?qū)е碌膁ocker啟動失敗,于是就開始上網(wǎng)查資料,看看有沒有遇到類似問題的博客,docker安裝后啟動失敗--cclovezbf這位老哥的博客給了我思路,雖然我們的錯誤不一樣,但是可以通過tail -200f /var/log/messages
查看所有軟件的日志,執(zhí)行命令找到如下日志
Jun 26 02:06:13 hecs-411924 dockerd: time="2023-06-26T02:06:13.217249515+08:00" level=error msg="Error writing log message" driver=json-file error="error writing log entry: write /var/lib/docker/containers/77c466b6276136d2de92716f184ff4153ee400f828fd265e34ce472f8fe6ce12/77c466b6276136d2de92716f184ff4153ee400f828fd265e34ce472f8fe6ce12-json.log: no space left on device" message=
可以看到問題出在磁盤空間不足,但是我這個40G的磁盤剛安裝了docker和幾個鏡像,怎么會磁盤就滿了呢?最后通過du df
命令一頓操作發(fā)現(xiàn)問題處在兩個redis從服務(wù)器的日志上,路徑是/var/lib/docker/containers/
,兩個從服務(wù)器日志文件分別占了大概18G,查看日志內(nèi)容發(fā)現(xiàn)一直在刷重復(fù)日志看這一段Unexpected reply to PSYNC from master: -NOAUTH Authentication required.\n","stream": "stdout","time":"2023-06-25T14:36:02.104810656Z"}
,問題原因找到了,我主服務(wù)器設(shè)置了密碼,但是從服務(wù)器配置文件中卻沒有配置主服務(wù)器的密碼,導(dǎo)致從服務(wù)器容器一直在刷日志,最終導(dǎo)致磁盤爆滿。另外之前的從服務(wù)器數(shù)據(jù)沒有同步的問題也是這個原因
發(fā)現(xiàn)問題之后解決就很簡單了,在從服務(wù)器配置文件中加上主服務(wù)器密碼
# 設(shè)置主服務(wù)器密碼masterauth ******
重啟容器之后問題解決
關(guān)鍵詞: