1. 程式人生 > >記一次負載均衡+NFS博客站點搭建的總結

記一次負載均衡+NFS博客站點搭建的總結

共存 AI 遠程 id號 base system32 water fst http

起因

  
原本是打算搭建個小博客站點做實驗,突然想起之前遇到的一次負載均衡失效的經歷,便打算做一次實驗重現當初的情況並記錄下來,防止日後再遇到類似的情況懵逼。
  

復現流程

  

架構體系

  
  原環境:前端依賴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博客站點搭建的總結