lvs的nat和dr實現,nginx反向代理,虛擬主機
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反向代理,虛擬主機