速來圍觀老司機快速排錯--解決論壇遷移到proxmox超融合私有云平臺後後部分功能不能使用的問題


問題描述php

 

考慮到在山東移動機房租賃的物理服務器的存在單點,並時不時出現故障,致使業務中止,所以決定從物理服務器把某個老牌論壇遷移到可用性極高的proxmox超融合私有云平臺。昨天夜裏,兄弟們忙乎了一整夜,非常辛苦(我在11點對那些壞掉的文件系統進行修復,用screen仍在那裏,本身睡覺去了)。html

 

上午睡了個懶覺,還沒清醒過來,有電話、qq消息過來了,說論壇頁面能打開,詳情頁也沒問題,但不能簽到、發帖、發附件等。nginx

paicuo01.jpg

催得厲害,趕忙進行處理。數據庫

 

運行環境後端

 

主要包括負載均衡及超融合私有云proxmox。負載均衡負責用戶轉發,使用的是公網ip;超融合私有云proxmox使用的是四個節點的物理服務器,運行30幾個虛擬機。瀏覽器

paicuo02.jpg

域名解析到負載均衡的vip,haproxy負責把請求轉發到proxmox上的指定的虛擬機。因爲論壇容量不是很大(400G左右),就直接把論壇程序、附件及數據庫部署在同一個虛擬機上(其它的應用,程序與數據庫是分離的)。bash

 

基本思路服務器

 

超融合私有云平臺proxmox上的其它虛擬機及應用都是正常狀態,所以能夠排除底層架構的問題。架構

 

另外兩個大的排查點就是負載均衡及論壇虛擬機自己。其餘兄弟懷疑是負載均衡配置的問題,還發來了相關操做信息。負載均衡

paicuo03.jpg

我一直強調,必定要先從後端真實提供服務的系統進行排查,真實服務提供者有問題,排查負載均衡有什麼用處呢?

 

問題定位

 

登陸系統,查看論壇的配置,主要是nginx及php。論壇頁面能夠打開,能夠初步判定php沒什麼問題。

 

接下來,打開nginx配置看看,主配置文件有以下幾行包含項:

include vhosts/default.conf;
include vhosts/bbs.formyz.net.conf;
include vhosts/file.formyz.net.conf;
include vhosts/net.formyz.net.conf;

include vhosts/default.conf;

include vhosts/bbs.formyz.net.conf;

include vhosts/file.formyz.net.conf;

include vhosts/net.formyz.net.conf;

對nginx進行語法檢查,未發現異常。老辦法,查nginx錯誤日誌,很快有以下發現:

FastCGI sent in stderr: "Primary script unknown" while reading   response header from upstream

FastCGI sent in stderr: "Primary script unknown" while reading   response header from upstream

 

心中有底了,必定是哪一個包含文件配置上有問題。分別對這三個配置文件進行備份,而後挨個打開,發先有兩個配置文件裏,嵌套了包含項以下:

root      /data/html/bbs.formyz.net;
               fastcgi_pass  127.0.0.1:9000;
               fastcgi_index index.php;
               include   fastcgi.conf;

root      /data/html/bbs.formyz.net;

               fastcgi_pass  127.0.0.1:9000;

               fastcgi_index index.php;

               include   fastcgi.conf;

而另一個配置文件裏,嵌套的項確是這樣的:

root      /data/html/bbs.formyz.net;
               fastcgi_pass  127.0.0.1:9000;
               fastcgi_index index.php;
               include   fastcgi_params;

root      /data/html/bbs.formyz.net;

               fastcgi_pass  127.0.0.1:9000;

               fastcgi_index index.php;

               include   fastcgi_params;

 

再比較文件fastcgi.conf與文件fastcgi_params,不一樣之處以下:

Fastcgi.conf

fastcgi_params

fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;

 

把不一致的嵌套包含,都改爲include fastcgi.conf,重啓nginx。綁定服務器的主機名及ip到本地的hosts文件,瀏覽器訪問論壇,測試簽到、發帖等,一切恢復正常!

相關文章
相關標籤/搜索