記一次負載均衡+NFS博客站點搭建的總結
原本是打算搭建個小博客站點做實驗,突然想起之前遇到的一次負載均衡失效的經歷,便打算做一次實驗重現當初的情況並記錄下來,防止日後再遇到類似的情況懵逼。
復現流程
架構體系
原環境:前端依賴nginx做負載均衡的調度器,web端是httpd+php-fpm分離,分別處理動態和靜態頁面,後端mariadb數據庫做數據存儲,NFS服務器提供站點文件作出共享,防止,web端出現站點文件不一致的情況。
模擬環境:nginx做負載均衡器,httpd和php-fpm共存在同一主機,NFS和mariadb分處2臺主機,整個模擬一共使用5臺主機。
軟件環境與架構圖
前提: 所有節點主機全部關閉selinux,清空防火墻規則。 |
系統 | httpd | php | nginx | maiadb |
---|---|---|---|---|---|
CentOS 7 | httpd2.4 | 5.4.14 | 1.10.2 | 10.2.15 |
架構圖
配置各個節點
配置nginx節點
1.安裝nginx
yum install nginx -y
2.編輯nginx配置文件
vim /etc/nginx/conf.d/upstream.conf #寫入下面內容 #定義負載轉發的後端ip upstream www.douma.com { server 192.168.99.131:80; server 192.168.99.130:80; } #配置主配置信息 server { listen 80; server_name www.douma.com; access_log /var/log/douma-access.log; error_log /var/log/douma-error.log debug; #set your default location location / { proxy_pass http://www.douma.com; } }
3.啟動nginx
systemctl start nginx
配置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
1.安裝nfs管理工具,並且啟動
# centos7,centos6要先啟動rpcbind服務才能啟動nfs-server
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 https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
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目錄分享出去
#重讀exports文件
exportfs -r
#查看分享出去的目錄和權限
exportfs -v
6.編輯wordpress的配置文件
cd wordpress
mv wp-config.sample.php wp-config.php
vim wp-config.php
配置web服務器
2臺web都按照如下配置
1.安裝httpd和php-fmp
yum install httpd php-fpm php-mysql -y
#由於未做分離所以可以直接啟動,無需修改,如果分離,要註意修改配置文件允許遠程訪問和監聽全部ip
systemctl start php-fpm
2.配置httpd
#自定義配置文件名字,但是目錄和結尾要固定
vim /etc/httpd/conf.d/php-fpm.conf
#寫入如下字段
#將php也作為默認頁
DirectoryIndex index.php
#關閉代理請求
ProxyRequests Off
#設置允許代理的請求,這裏未做分離所以直接代理到httpd目錄就好
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
3.安裝nfs管理工具
yum install nfs-utils -y
#查看nfs服務器共享的文件夾
showmount -e 192.168.99.135
4.掛載目錄
#這裏有2中方法
#法一,編譯fstabl文件
vim /etc/fstab
192.168.99.135:/web/wordpress /var/www/html/ nfs defaults 0 0
mount -a
#法二,直接命令掛載
mount 192.168.99.135:/web/wordpress /var/www/html/
5.啟動httpd
systemctl start httpd
配置宿主機
由於沒有做dns所以要修改宿主機的hosts文件才能實現基於域名的訪問
C:\Windows\System32\drivers\etc\hosts
#添入如下字段
192.168.99.150 www.douma.com
安裝wordpress
1.宿主機在瀏覽器打開www.douma.com
填寫好對應信息
2.安裝wordpress等待完成
3.重新打開www.douma.com
部署完成。
總結
整個部署基本是按照問題解決後的配置來進行安裝的,所以負載均衡可以正常實現。下面將會列出剛開始錯誤的點和配置。
註意點
nginx反向代理的配置
上面2幅圖分別是正確和錯誤的配置,不過正常來說2個配置都沒問題,但是在這裏並不行;錯誤配置是將請求192.168.99.150的請求轉發到後端的2臺httpd機器上,但是在這裏同時會將http://backend 也轉發到後端,而wordpress會在安裝過程中記錄下這個站點名稱,並且之後的請求會直接請求http://backend
wordpress數據庫的記錄
1.下面是wordpress記錄到數據庫的內容
這裏我使用了phpmyadmin這個web端的mysql管理工具
圖中方框內記錄的便是wordpress記錄的站點地址,同時也會是以後請求的地址。
2.下面是使用調試窗口看到的請求,正常情況下下次請求會重新去請求記錄的站點地址,可以重新通過nginx實現負載均衡。如果請求的站點地址不是域名而是上面nginx錯誤配置或者是某個web節點的地址的話,負載均衡會完全失效。
記一次負載均衡+NFS博客站點搭建的總結