原本是打算搭建個小部落格站點做實驗,突然想起之前遇到的一次負載均衡失效的經歷,便打算做一次實驗重現當初的情況並記錄下來,防止日後再遇到類似的情況懵逼。
復現流程
架構體系
原環境:前端依賴nginx做負載均衡的排程器,web端是httpd+php-fpm分離,分別處理動態和靜態頁面,後端mariadb資料庫做資料儲存,nfs伺服器提供站點檔案作出共享,防止,web端出現站點檔案不一致的情況。
模擬環境:nginx做負載均衡器,httpd和php-fpm共存在同一主機,nfs和mariadb分處2臺主機,整個模擬一共使用5臺主機。
軟體環境與架構圖
前提:所有節點主機全部關閉selinux,清空防火牆規則。
系統 httpd php nginx maiadb
架構圖記一次負載均衡+nfs部落格站點搭建的總結
配置各個節點
配置nginx節點
1.安裝nginx
yum install nginx -y
2.編輯nginx配置檔案
vim /etc/nginx/conf.d/upstream.conf
#寫入下面內容
#定義負載**的後端ip
upstream www.douma.com
#配置主配置資訊
server
}3.啟動nginx
systemctl start nginx
記一次負載均衡+nfs部落格站點搭建的總結
配置mariadb
1.安裝mariadb
#這裡直接yum,新版的mariadb要到官網去配置新版的mariadb更新源
yum install mariadb -y
systemctl start mairadb
2.授權賬號
mariadb [(none)]> grant all on wp.* to wp_admin@『192.168.99.%』 identified by 『admin』;
mariadb [(none)]> flush privileges;
3.建立wordpress資料庫
mariadb [(none)]> create database wp;
記一次負載均衡+nfs部落格站點搭建的總結
配置nfs
1.安裝nfs管理工具,並且啟動
yum install nfs-utils -y
systemctl start nfs-server
2.編輯配置檔案
vim /etc/exports
#寫入想要共享的目錄和允許掛載的機器和讀寫許可權
/web/wordpress 192.168.99.0/24(rw)
3.建立目錄並且放入wordpress站點檔案
mkdir /web
cd /web
wget
tar -xvf wordpress-4.9.4-zh_cn.tar.gz
4.設定acl許可權,要給父附錄許可權,否則在wordpress在上傳檔案會失敗
#由於httpd是yum安裝的,所以uid號相同,所以設定一次就好
setfacl -r -m u:48:rwx /web
5.將nfs目錄分享出去
cd wordpress
mv wp-config.sample.php wp-config.php
vim wp-config.php
記一次負載均衡+nfs部落格站點搭建的總結
配置web伺服器
2臺web都按照如下配置
1.安裝httpd和php-fmp
#由於未做分離所以可以直接啟動,無需修改,如果分離,要注意修改配置檔案允許遠端訪問和監聽全部ip
systemctl start php-fpm
2.配置httpd
#自定義配置檔案名字,但是目錄和結尾要固定
#寫入如下字段
#將php也作為預設頁
directoryindex index.php
#關閉**請求
proxyrequests off
#設定允許**的請求,這裡未做分離所以直接**到httpd目錄就好
proxypassmatch ^/(.*.php)$ fcgi:
記一次負載均衡+nfs部落格站點搭建的總結
3.安裝nfs管理工具
yum install nfs-utils -y
#檢視nfs伺服器共享的資料夾
showmount -e 192.168.99.135
記一次負載均衡+nfs部落格站點搭建的總結
4.掛載目錄
#這裡有2中方法
#法一,編譯fstabl檔案
vim /etc/fstab
192.168.99.135:/web/wordpress /var/www/html/ nfs defaults 0 0
mount -a
記一次負載均衡+nfs部落格站點搭建的總結
#法二,直接命令掛載
mount 192.168.99.135:/web/wordpress /var/www/html/
5.啟動httpd
配置宿主機
由於沒有做dns所以要修改宿主機的hosts檔案才能實現基於網域名稱的訪問
c:\windows\system32\drivers\etc\hosts
#添入如下字段
192.168.99.150 www.douma.com
安裝wordpress
1.宿主機在瀏覽器開啟www.douma.com
填寫好對應資訊
記一次負載均衡+nfs部落格站點搭建的總結
2.安裝wordpress等待完成
記一次負載均衡+nfs部落格站點搭建的總結
3.重新開啟www.douma.com
記一次負載均衡+nfs部落格站點搭建的總結
部署完成。
總結整個部署基本是按照問題解決後的配置來進行安裝的,所以負載均衡可以正常實現。下面將會列出剛開始錯誤的點和配置。
注意點nginx反向**的配置
記一次負載均衡+nfs部落格站點搭建的總結
記一次負載均衡+nfs部落格站點搭建的總結
上面2幅圖分別是正確和錯誤的配置,不過正常來說2個配置都沒問題,但是在這裡並不行;錯誤配置是將請求192.168.99.150的請求**到後端的2臺httpd機器上,但是在這裡同時會將http://backend 也**到後端,而wordpress會在安裝過程中記錄下這個站點名稱,並且之後的請求會直接請求http://backend
wordpress資料庫的記錄
1.下面是wordpress記錄到資料庫的內容
這裡我使用了phpmyadmin這個web端的mysql管理工具
記一次負載均衡+nfs部落格站點搭建的總結
圖中方框內記錄的便是wordpress記錄的站點位址,同時也會是以後請求的位址。
2.下面是使用除錯視窗看到的請求,正常情況下下次請求會重新去請求記錄的站點位址,可以重新通過nginx實現負載均衡。如果請求的站點位址不是網域名稱而是上面nginx錯誤配置或者是某個web節點的位址的話,負載均衡會完全失效。
記一次負載均衡+nfs部落格站點搭建的總結
記一次Nginx負載均衡ip hash會話失效問題
2tomcat nginx ip hash 頁面在載入的時候,提示會話超時,其他頁面都正常。根據現場反饋過來的問題,第一時間問了專案架構,得知是ip hash的策略,第一時間還楞了一下,ip hash怎麼會有會話失效的問題。後來遠端到了現場環境上面,發現提示會話失效的頁面,介面請求返回資料時間比較長...
記一次typcecho部落格搭建
找到安裝包 rz 工具上傳後解壓tar xvf 1.1 17.10.30 release.tar.gz 得到乙個 bulid 檔案 再將build裡面的所有檔案複製到網頁家目錄下cp ri build www html 會提示是否需要overwrote 按 n就好 到現在一切正常 然後發現不能執行p...
記一次github部落格的搭建
記錄一下個人部落格搭建過程中遇到的問題。參考 申請倉庫,轉殖主題檔案,選主題花費了我大量時間。這裡比較簡單吧 edit config.yml for base information posts for articles,keep the name in right style assets ima...