1. 程式人生 > >lvs的nat和dr實現,nginx反向代理,虛擬主機

lvs的nat和dr實現,nginx反向代理,虛擬主機

html servers 參數 網絡拓撲 nag sysctl version conn keepal

1.LVS的基本用法

1.管理工具:ipvsadm
2.基本概念

VS:Virtual Server,調度器 
RS:Real Server(lvs), upstream server(nginx)    backend server(haproxy)  實際服務器
CIP:Client IP  客戶端IP
VIP: Virtual serve IP VS外網的IP  
DIP: Director IP  VS內網的IP 
RIP: Real server IP   實際服務器IP

3.轉發模式:

lvs-nat:修改請求報文的目標IP,多目標IP的DNAT 
lvs-dr:操縱封裝新的MAC地址   (應用更廣泛)
lvs-tun:在原請求IP報文之外新加一個IP首部  
lvs-fullnat:修改請求報文的源和目標IP

4.指定VS服務器規則命令(指定VIP和算法)

 ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine] [-b sched-flags] 
 -A 增加
 -E  修改
 ipvsadm -D -t|u|f service-address 刪除 

 -t: TCP協議的端口,VIP:TCP_PORT    -t 192.168.0.119:80
-u: UDP協議的端口,VIP:UDP_PORT   
-f:firewall MARK,標記,一個數字
 [-s scheduler]:指定集群的調度算法,默認為wlc 

5.指定RS服務器規則命令(指定RIP和lvs類型)

ipvsadm -a|e -t|u|f service-address(VIP) -r server-address(RIP) [-g|i|m] [-w weight]    
-a 增加
-e  修改
ipvsadm -d -t|u|f service-address -r serveraddress   刪除
指定lvs使用類型
-g: gateway, dr類型,默認   -i: ipip, tun類型   -m: masquerade, nat類型   
-w weight:權重

6.其他用法

ipvsadm –C  清空 
ipvsadm –R  重載 
ipvsadm -S [-n]  保存 
ipvsadm -Z [-t|u|f service-address] 清空計數器
ipvsadm -L|l [options]  查看規則  
ipvsadm -Ln 查看規則(常用)
--numeric, -n:以數字形式輸出地址和端口號    
--exact:擴展信息,精確值     
--connection,-c:當前IPVS連接輸出   
--stats:統計信息   
--rate :輸出速率信息 

7.保存規則3種方法(-n禁止解析成主機名)

1.ipvsadm-save -n > /PATH/TO/IPVSADM_FILE    (建議保存至/etc/sysconfig/ipvsadm)
2.ipvsadm -Sn > /PATH/TO/IPVSADM_FILE  
3.systemctl stop ipvsadm.service  (這也可以保存)

8.加載規則3種方式

1.ipvsadm-restore < /PATH/FROM/IPVSADM_FILE  
2.ipvsadm -R < /PATH/FROM/IPVSADM_FILE  
3.systemctl restart ipvsadm.service

9.開機啟動:


systemctl enabled ipvsadm.service 

10.打標簽 (-f)
借助於防火墻標記來分類報文,而後基於標記定義集群服務; 可將多個不同的應用使用同一個集群服務進行調度
例如http和https 共用一個集群 ,使得80 和443 端口共用一個集群

在Director主機(LVS主機)打標記:

iptables -t mangle -A PREROUTING -d $vip -p $proto –m multiport --dports $port1,$port2,… -j MARK --set-mark NUMBER (寫一個數字)

在Director主機基於標記定義集群服務:

ipvsadm -A -f NUMBER [options]

iptables -t mangle -A PREROUTING -d 10.0.0.100 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 10 
ipvsadm -A -f 10 -s rr # -f 10就是引用這個標簽
ipvsadm -a -f 10 -r 192.168.30.17 -g
ipvsadm -a -f 10 -r 192.168.30.27 -g

11.持久連接(-p)
session 綁定:對共享同一組RS的多個集群服務,需要統一進行綁 定,lvs sh算法無法實現
持久連接( lvs persistence )模板:實現無論使用任何調度算法, 在一段時間內(默認360s ),能夠實現將來自同一個地址的請求始 終發往同一個RS

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]]   不加時間默認6分鐘,單位秒

如 ipvsadm -A -t 192.168.0.1 -s rr -p 720

12.指定算法(-s)
靜態方法:不管RS工作情況調度

1、RR:roundrobin,輪詢   (循環調度)

2、WRR:Weighted RR,加權輪詢 (按比列循環調度) 

3、SH:Source Hashing,實現session sticky,源IP地址 hash;將來自於同一個IP地址的請求始終發往第一次挑中的 RS,從而實現會話綁定   (保持會話調度) 

4、DH:Destination Hashing;目標地址哈希,將發往同一個目標地址的請求始終轉發至第一次挑中的RS,典型使用場景是正向代理緩存場景中的負載均衡,如:寬帶運營商  (正向代理調度服務器到緩存服務器使用,利用目標地址固定調度到同一緩存服務器中,提高緩存服務器利用率) 

動態方法:考慮RS工作情況調度

1、LC: 適用於長連接應用  公式:Overhead=activeconns*256+inactiveconns 
2、WLC:默認調度方法(加入權重)  公式:Overhead=(activeconns*256+inactiveconns)/weight 
3、SED:初始連接高權重優先(加入初始權重判斷)  公式:Overhead=(activeconns+1)*256/weight ,
4、NQ:第一輪均勻分配,後續SED 
5、LBLC:Locality-Based LC,動態的DH算法,使用場景: 根據負載狀態實現正向代理 
6、LBLCR:帶復制功能的LBLC 解決LBLC負載不均衡問題,從負載重的復制到負載輕的RS,也是實現正向代理中使用,減輕某個緩存服務器壓力

2.LVS實現NAT

1.搭建4臺主機

客戶端:192.168.0.109
LVS調度器:VIP:192.168.0.112  DIP:192.168.1.112
RS服務器兩臺 192.168.1.113  192.168.1.114

2.搭建網絡拓撲結構
lvs服務器,搭建兩個網卡,設定VIP和DIP,並且開啟路由轉發功能

[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 1

rs服務器,由於NAT模式中回應包要回到LVS服務器,所以RS服務器網關要指向DIP

3.在rs服務器搭建http服務器,並搭建主頁

[root@localhost ~]#echo 192.168.1.113 > /var/www/html/index.html
[root@localhost ~]#echo 192.168.1.114 > /var/www/html/index.htm

啟動httpd服務

4.在LVS服務器安裝ipvsadm設定規則

[root@localhost ~]# yum install ipvsadm
[root@localhost ~]# ipvsadm -A -t 192.168.0.112:80 -s wrr #指定加權輪詢 算法
[root@localhost ~]# ipvsadm -a -t 192.168.0.112:80 -r 192.168.1.113 -m -w 2  #-m指定NAT -w 指定權重
[root@localhost ~]# ipvsadm -a -t 192.168.0.112:80 -r 192.168.1.114 -m 
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.0.112:80 wrr
  -> 192.168.1.113:80             Masq    2      0          0         
  -> 192.168.1.114:80             Masq    1      0          0  

5.在客服端測試

[root@centos7 ~]#curl 192.168.0.112
192.168.1.114
[root@centos7 ~]#curl 192.168.0.112
192.168.1.113
[root@centos7 ~]#curl 192.168.0.112
192.168.1.113
[root@centos7 ~]#curl 192.168.0.112
192.168.1.114
[root@centos7 ~]#curl 192.168.0.112
192.168.1.113
[root@centos7 ~]#curl 192.168.0.112
192.168.1.113

3.LVS實現DR模式

1.搭建5臺主機

客戶端:192.168.0.109
前端路由器:192.168.0.115(客戶端網關) 192.168.2.115(lvs服務器vip網關)  192.168.1.115(rs服務器網關)(192.168.2.115和192.168.1.115綁定在一個網卡中)
LVS調度器:VIP:192.168.2.112  DIP:192.168.1.112
RS服務器兩臺 192.168.1.113  192.168.1.114

註意:RS和Director要在同一個物理網絡,因此整個內網在(物理上)是一個網段,因此客戶端與路由器用橋接vmnet1,而路由器另一網卡與lvs服務器、rs服務器在僅主機模式中一個網段vmnet2。

2.搭建網絡拓撲
客戶端網關指向192.168.0.115
路由器啟動路由轉發

[root@centos7 ~]#echo 1 > /proc/sys/net/ipv4/ip_forward

rs服務器網關指向192.168.1.115

3.RS服務器禁用arp應答和通告

[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

[root@localhost ~]#sysctl -p

4.RS服務器在lo網卡中綁定VIP 192.168.2.112

[root@localhost ~]#ip a a 192.168.2.112/32 dev lo

5.LVS服務器加入規則

[root@localhost ~]# ipvsadm -A -t 192.168.2.112:80 -s wrr   指定lvs的VIP和算法
[root@localhost ~]# ipvsadm -a -t 192.168.2.112:80 -r 192.168.1.113  -w 2  # -w 指定權重
[root@localhost ~]# ipvsadm -a -t 192.168.2.112:80 -r 192.168.1.114 
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.2.112:80 wrr
  -> 192.168.1.113:80             Route    2      0          0         
  -> 192.168.1.114:80             Route   1      0          0  

6.測試網頁

[root@centos7 ~]#curl 192.168.2.112
192.168.1.114
[root@centos7 ~]#curl 192.168.2.112
192.168.1.113
[root@centos7 ~]#curl 192.168.2.112
192.168.1.113
[root@centos7 ~]#curl 192.168.2.112
192.168.1.114
[root@centos7 ~]#curl 192.168.2.112
192.168.1.113
[root@centos7 ~]#curl 192.168.2.112
192.168.1.113

4.nginx實現虛擬主機

1.安裝nginx服務
2.建立自己獨立配置文件vhost.conf,定義三個虛擬主機

[root@centos7 ~]#vim /etc/nginx/conf.d/vhost.conf
server {
        server_name www.a.com;   #定義主機www.a.com
        root /data/nginx/a;
        }

server {
        server_name www.b.com;

  location / {
                alias /data/nginx/b/;#註意要以 / 結尾
                }
        }
server {
        listen 192.168.0.109:8080;#定義8080端口為一個主機
        root /data/nginx/c;
        location /image/ {
                root /data/nginx/;
                }
        }

3.啟動nginx服務,查看80端口和8080端口是否打開

[root@centos7 ~]#nginx
[root@centos7 ~]#ss -ntl
State      Recv-Q Send-Q           Local Address:Port                          Peer Address:Port              
LISTEN     0      128                          *:111                                      *:*                  
LISTEN     0      128              192.168.0.109:8080                                     *:*                  
LISTEN     0      128                          *:80                                       *:*                  
LISTEN     0      5                192.168.122.1:53                                       *:*                  
LISTEN     0      128                          *:22                                       *:*                  
LISTEN     0      128                  127.0.0.1:631                                      *:*                  
LISTEN     0      100                  127.0.0.1:25                                       *:*                  
LISTEN     0      128                          *:43550                                    *:*                  
LISTEN     0      128                         :::111                                     :::*                  
LISTEN     0      128                         :::80                                      :::*                  
LISTEN     0      128                         :::22                                      :::*                  
LISTEN     0      128                        ::1:631                                     :::*                  
LISTEN     0      100                        ::1:25                                      :::*                  
LISTEN     0      128                         :::46052                                   :::* 

4.創建目錄和網頁

[root@centos7 ~]#mkdir -pv /data/nginx/{a,b,c,image}
mkdir: created directory ‘/data/nginx’
mkdir: created directory ‘/data/nginx/a’
mkdir: created directory ‘/data/nginx/b’
mkdir: created directory ‘/data/nginx/c’
mkdir: created directory ‘/data/nginx/image’
[root@centos7 ~]#echo www.a.com > /data/nginx/a/index.html
[root@centos7 ~]#echo www.b.com > /data/nginx/b/index.html 
[root@centos7 ~]#echo 8080 > /data/nginx/c/index.html          
[root@centos7 ~]#echo images > /data/nginx/image/index.html
[root@centos7 ~]#chown -R nginx:nginx /data/nginx/
[root@centos7 ~]#ll /data/nginx/
total 0
drwxr-xr-x 2 nginx nginx 24 Mar  5 17:17 a
drwxr-xr-x 2 nginx nginx 24 Mar  5 17:17 b
drwxr-xr-x 2 nginx nginx 24 Mar  5 17:18 c
drwxr-xr-x 2 nginx nginx 24 Mar  5 17:18 image

5.客戶端加入名字解析

[root@localhost ~]# vim /etc/hosts
192.168.0.109 www.a.com www.b.com
測試
[root@localhost ~]# curl www.a.com
www.a.com
[root@localhost ~]# curl www.b.com
www.b.com
[root@localhost ~]# curl 192.168.0.109:8080
8080
[root@localhost ~]# curl 192.168.0.109:8080/image/
images

6.定義虛擬主機選項

server {   
    listen address[:PORT]|PORT;    定義監聽地址 端口   
    server_name SERVER_NAME;    定義服務名字
    root /PATH/TO/DOCUMENT_ROOT;    定義主頁路徑
 } 

1.listen address[:PORT]|PORT; 定義監聽地址 端口

加入default_server 變成默認主機
ssl  限制僅能夠通過ssl連接提供服務  
backlog=number 超過並發連接數後,新請求進入後援隊列的長度  (等待隊列)
rcvbuf=size 接收緩沖區大小  
sndbuf=size 發送緩沖區大小 

2.server_name name ...;

虛擬主機的主機名稱後可跟多個由空白字符分隔的字符串 ?
支持*通配任意長度的任意字符  
server_name *.magedu.com  www.magedu.* ?
支持~起始的字符做正則表達式模式匹配,性能原因慎用    
server_name  ~^www\d+\.magedu\.com$  \d 表示 [0-9] ?
匹配優先級機制從高到低: 
(1) 首先是字符串精確匹配 如:www.magedu.com 
(2) 左側*通配符  如:*.magedu.com 
(3) 右側*通配符  如:www.magedu.* 
(4) 正則表達式   如: ~^.*\.magedu\.com$ 
(5) default_server

3.tcp_nodelay on | off;

在keepalived模式下的連接是否啟用TCP_NODELAY選項  當為off時,延遲發送,合並多個請求後再發送  
默認On時,不延遲發送  
可用於:http, server, location 

4.sendfile on | off;

是否啟用sendfile功能,在內核中封裝報文直接發送  默認Off 
可以開啟

5.server_tokens on | off | build | string

是否在響應報文的Server首部顯示nginx版本  建議關閉  
在http{...}中

6.root 設置web資源的路徑映射;用於指明請求的URL所對應的文檔 的目錄路徑,
用於http, server, location, if in location

7.location [ = | ~ | ~* | ^~ ] uri { ... }

location @name { ... } 
在一個server中location配置段可存在多個,用於實現從uri到 文件系統的路徑映射;
ngnix會根據用戶請求的URI來檢查定義的所有 location,並找出一個最佳匹配,而後應用其配置  

示例:

server {
        ...   
        server_name  www.magedu.com;   
        location /images/ {    (單獨設定該主機/images訪問路徑的實際目錄)
                    root  /data/imgs/;    
                 } 
         }  

 http://www.magedu.com/images/logo.jpg    --> /data/imgs/images/logo.jpg   

匹配模式

=:對URI做精確匹配;   
location = /index.html {   
        ...  
     }  
http://www.magedu.com/index.html 匹配  http://www.magedu.com/test.html 不匹配 

^~:對URI的最左邊部分做匹配檢查,不區分字符大小寫 
~:對URI做正則表達式模式匹配,區分字符大小寫 
~*:對URI做正則表達式模式匹配,不區分字符大小寫 
不帶符號:匹配起始於此uri的所有的uri 
匹配優先級從高到低:  =, ^~, ~/~*, 不帶符號 

8.alias path;

路徑別名,文檔映射的另一種機制;僅能用於location上下文 
  alias 和root區別
 示例: http://www.magedu.com/bbs/index.html
location /bbs/ {  
        alias /web/forum/; 
        }      --> /web/forum/index.html     (用/web/forum/替換/bbs/)
location /bbs/ {  
        root /web/forum/;        
         }      --> /web/forum/bbs/index.html  (用/web/forum/替換/)
註意:location中使用root指令和alias指令的意義不同  
(a) root,給定的路徑對應於location中的/uri/左側的/  
(b) alias,給定的路徑對應於location中的/uri/右側的/ 

9.index file ...; 指定默認網頁文件

10.error_page code ... [=[response]] uri;

定義錯誤頁,以指定的響應狀態碼進行響應  
可用位置:http, server, location, if in location  
error_page  404  /404.html  
error_page  404  =200  /404.html  重定向到響應碼200   防止瀏覽器劫持自己錯誤頁面

11.try_files file ... uri;

try_files file ... =code;
按順序檢查文件是否存在,返回第一個找到的文件或文件夾(結尾加斜線 表示為文件夾),如果所有的文件或文件夾都找不到,會進行一個內部重 定向到最後一個參數,

找不到的文件會顯示默認文件


location /images/ {      
    try_files $uri /images/default.gif;      在images找不到,顯示default.gif
    } 
location / {      
    try_files $uri $uri/index.html $uri.html =404;    
     } 
 $uri指用戶輸入路徑

12.keepalive_timeout timeout [header_timeout]; 設定保持連接超時時長,0表示禁止長連接,默認為75s

13.keepalive_requests number; 在一次長連接上所允許請求的資源的最大數量 默認為100

14.keepalive_disable none | browser ... 對哪種瀏覽器禁用長連接

15.send_timeout time; 向客戶端發送響應報文的超時時長,此處是指兩次寫操作 之間的間隔時長,而非整個響應過程的傳輸時長

16.client_body_buffer_size size;

用於接收每個客戶端請求報文的body部分的緩沖區大小 ;默認為16k;超出此大小時,其將被暫存到磁盤上的由下面 client_body_temp_path指令所定義的位置  

17.client_body_temp_path path [level1 [level2 [level3]]];

設定用於存儲客戶端請求報文的body部分的臨時存儲路 徑及子目錄結構和數量      
目錄名為16進制的數字;    
client_body_temp_path   /var/tmp/client_body  1 2 2  
1 1級目錄占1位16進制,即2^4=16個目錄 0-f  
2 2級目錄占2位16進制,即2^8=256個目錄 00-ff  
2 3級目錄占2位16進制,即2^8=256個目錄 00-ff 

16和17 是用於處理用戶上傳文件,創建多層目錄 避免一個目錄下文件過多影響效率

18.limit_rate rate; 限制響應給客戶端的傳輸速率,單位是bytes/second 默認值0表示無限制

19.limit_except method ... { ... },

僅用於location  限制客戶端使用除了指定的請求方法之外的其它方法 
method:GET, HEAD, POST, PUT, DELETE   MKCOL, COPY, MOVE, OPTIONS, PROPFIND,   PROPPATCH, LOCK, UNLOCK, PATCH 

如:limit_except GET {    (除了get方法限制) 
            allow 192.168.1.0/24;   允許該網段的人使用get以外方法     
            deny  all;    其他人拒絕使用get以外的方法       
            }
  get方法實際上包含head方法

20.aio on | off | threads[=pool]; 是否啟用aio功能 ,異步io,提高效率

21.directio size | off; 當文件大於等於給定大小時,例如directio 4m,先寫緩存,達到4m時候同步(直接)寫磁盤 , ,off 值同步寫磁盤

22.open_file_cache off; 或者 open_file_cache max=N [inactive=time];

nginx可以緩存以下三種信息:  (1) 文件元數據:文件的描述符、文件大小和最近一次的修改時間  
(2) 打開的目錄結構  
(3) 沒有找到的或者沒有權限訪問的文件的相關信息   
max=N:可緩存的緩存項上限;達到上限後會使用LRU算法實現管理  
inactive=time:緩存項的非活動時長,在此處指定的時長內未被命中 的或命中的次數少於open_file_cache_min_uses指令所指定的次數的緩存項 即為非活動項,將被刪除

23.open_file_cache_errors on | off; 是否緩存查找時發生錯誤的文件一類的信息 默認值為off

24.open_file_cache_min_uses number;

open_file_cache指令的inactive參數指定的時長內,至少被命中此處指定的次數方可被歸類為活動項  默認值為1 open_file_cache_min_uses 2;  
指定時間內被訪問2次的才緩存,少於則從緩存中刪除

25.open_file_cache_valid time; 緩存項有效性的檢查頻率 默認值為60s


5.nginx實現反向代理

實現應用級反向代理(動靜分離)
需要nginx代理服務器192.168.0.109 192.168.1.109
靜態服務器192.168.1.112
動態服務器192.168.1.113
數據庫服務器192.168.1.115
nfs服務器192.168.1.114

主要思路:利用nginx反向代理根據用戶的uri來把請求轉發到不同服務器,動態php程序轉發到192.168.1.113服務器處理,靜態圖片通過192.168.1.112服務器處理,nfs服務器實現各個服務器共享存儲,訪問數據庫則是192.168.1.115服務器

A.192.168.1.114服務器
1.在192.168.1.114啟動nfs服務並拷貝phpmyadmin到要共享目錄

[root@localhost ~]# systemctl start nfs-server
[root@localhost ~]# tar -xf phpMyAdmin-4.4.15.10-all-languages.tar.xz  -C /data/

2.修改phpmyadmin配置文件

[root@localhost phpmyadmin]# cp config.sample.inc.php config.inc.php
[root@localhost phpmyadmin]# vim config.inc.php
$cfg[‘blowfish_secret‘] = ‘sda1254z‘; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */   #修改該隨機數
$cfg[‘Servers‘][$i][‘host‘] = ‘192.168.1.115‘;

3.編輯共享目錄配置,把phpmyadmin文件夾共享出去

[root@localhost ~]# vim /etc/exports.d/wp.exports
/data/phpmyadmin 192.168.1.0/24(rw,sync,root_squash,no_all_squash)

4.啟動查看共享目錄

[root@localhost ~]# exportfs -r
[root@localhost ~]# exportfs -v
/data/phpmyadmin
           192.168.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)

B.在192.168.1.112安裝nginx服務器用於處理靜態頁面
1.掛載共享目錄

[root@localhost ~]# mkdir -p /apps/phpmyadmin
[root@localhost ~]# mount  192.168.1.114:/data/phpmyadmin /apps/phpmyadmin/

2.安裝nginx服務並修改其默認主頁

[root@localhost ~]#vim /etc/nginx/nginx.conf
 server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        root         /apps/phpmyadmin;

        include /etc/nginx/default.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

C.在192.168.0.109安裝nginx服務器
1.修改配置文件讓其實現動靜分離反代功能

[root@centos7 ~]#vim /etc/nginx/conf.d/www.conf
server {
        server_name www.a.com;
        root /apps/phpmyadmin/;
        location / {
                index index.php index.html;

        }
        location ~* \.(gif|jpg|png|bmp|jpeg)$ {
                proxy_pass http://192.168.1.112;  #把圖片文件交給192.168.1.112處理
        }
        location ~* \.php$ {
                proxy_pass http://192.168.1.113; #把php交給192.168.1.113處理
        }
}

2.掛載共享目錄

[root@localhost ~]# mkdir -p /apps/phpmyadmin
[root@localhost ~]# mount  192.168.1.114:/data/phpmyadmin /apps/phpmyadmin/

D.在192.168.1.113安裝httpd fpm服務
1.fpm需要編譯安裝php-7.1.26,詳細步驟參考上一篇文章
2.修改httpd配置文件,加載fpm處理動態頁面

[root@localhost network-scripts]# vim /etc/httpd/conf.d/fcgi.conf
DirectoryIndex index.php 
DocumentRoot /apps/phpmyadmin/  
ProxyRequests Off  
ProxyPassMatch ^/(.*\.php)$  fcgi://127.0.0.1:9000/apps/phpmyadmin/$1 
AddType application/x-httpd-php .php 
AddType application/x-httpd-php-source .phps 
<Directory "/apps/phpmyadmin/">  
Options None   
AllowOverride None   
Require all granted  
</Directory>

3.掛載共享目錄

[root@localhost ~]# mkdir -p /apps/phpmyadmin
[root@localhost ~]# mount  192.168.1.114:/data/phpmyadmin /apps/phpmyadmin/

E.在192.168.1.115安裝mariadb
1.安裝修改配置

[root@localhost network-scripts]# yum install mariadb-server
[root@localhost network-scripts]# vim /etc/my.cnf
[mysqld]
innodb_file_per_table = on
skip_name_resolve = on

2.建立數據庫和賬號

MariaDB [(none)]> create database wpdb;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on wpdb.* to wpuser@‘%‘ identified by "centos";
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

F.客戶端測試
1.修改host文件解析域名

[root@centos6 ~]# vim /etc/hosts
192.168.0.109 www.a.com

2.在瀏覽器需要www.a.com
技術分享圖片技術分享圖片

3.查看192.168.1.112日誌文件,確實有png圖片被調度到該服務器處理

[root@localhost ~]# tail -n 3 /var/log/nginx/access.log
192.168.1.109 - - [27/Mar/2019:18:49:59 +0800] "GET /themes/pmahomme/img/window-new.png HTTP/1.0" 200 468 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
192.168.1.109 - - [27/Mar/2019:18:49:59 +0800] "GET /themes/pmahomme/img/b_more.png HTTP/1.0" 200 111 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"
192.168.1.109 - - [27/Mar/2019:18:52:02 +0800] "GET /themes/pmahomme/img/s_unlink.png HTTP/1.0" 200 589 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0" "-"

4.查看192.168.1.113日誌文件,確實有php請求被調度到該服務器處理

[root@localhost ~]# tail -n 3 /var/log/httpd/access_log
192.168.1.109 - - [27/Mar/2019:18:49:59 +0800] "POST /navigation.php?ajax_request=1 HTTP/1.0" 200 2015 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
192.168.1.109 - - [27/Mar/2019:18:50:00 +0800] "POST /ajax.php HTTP/1.0" 200 1383 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"
192.168.1.109 - - [27/Mar/2019:18:50:00 +0800] "POST /version_check.php HTTP/1.0" 200 64 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0"

lvs的nat和dr實現,nginx反向代理,虛擬主機