lvs的nat和dr实现,nginx反向代理,虚拟主机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lvs的nat和dr实现,nginx反向代理,虚拟主机相关的知识,希望对你有一定的参考价值。
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,并且开启路由转发功能
[[email protected] ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[[email protected] ~]# sysctl -p
net.ipv4.ip_forward = 1
rs服务器,由于NAT模式中回应包要回到LVS服务器,所以RS服务器网关要指向DIP
3.在rs服务器搭建http服务器,并搭建主页
[[email protected] ~]#echo 192.168.1.113 > /var/www/html/index.html
[[email protected] ~]#echo 192.168.1.114 > /var/www/html/index.htm
启动httpd服务
4.在LVS服务器安装ipvsadm设定规则
[[email protected] ~]# yum install ipvsadm
[[email protected] ~]# ipvsadm -A -t 192.168.0.112:80 -s wrr #指定加权轮询 算法
[[email protected] ~]# ipvsadm -a -t 192.168.0.112:80 -r 192.168.1.113 -m -w 2 #-m指定NAT -w 指定权重
[[email protected] ~]# ipvsadm -a -t 192.168.0.112:80 -r 192.168.1.114 -m
[[email protected] ~]# 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.在客服端测试
[[email protected] ~]#curl 192.168.0.112
192.168.1.114
[[email protected] ~]#curl 192.168.0.112
192.168.1.113
[[email protected] ~]#curl 192.168.0.112
192.168.1.113
[[email protected] ~]#curl 192.168.0.112
192.168.1.114
[[email protected] ~]#curl 192.168.0.112
192.168.1.113
[[email protected] ~]#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
路由器启动路由转发
[[email protected] ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
rs服务器网关指向192.168.1.115
3.RS服务器禁用arp应答和通告
[[email protected] ~]#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
[[email protected] ~]#sysctl -p
4.RS服务器在lo网卡中绑定VIP 192.168.2.112
[[email protected] ~]#ip a a 192.168.2.112/32 dev lo
5.LVS服务器加入规则
[[email protected] ~]# ipvsadm -A -t 192.168.2.112:80 -s wrr 指定lvs的VIP和算法
[[email protected] ~]# ipvsadm -a -t 192.168.2.112:80 -r 192.168.1.113 -w 2 # -w 指定权重
[[email protected] ~]# ipvsadm -a -t 192.168.2.112:80 -r 192.168.1.114
[[email protected] ~]# 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.测试网页
[[email protected] ~]#curl 192.168.2.112
192.168.1.114
[[email protected] ~]#curl 192.168.2.112
192.168.1.113
[[email protected] ~]#curl 192.168.2.112
192.168.1.113
[[email protected] ~]#curl 192.168.2.112
192.168.1.114
[[email protected] ~]#curl 192.168.2.112
192.168.1.113
[[email protected] ~]#curl 192.168.2.112
192.168.1.113
4.nginx实现虚拟主机
1.安装nginx服务
2.建立自己独立配置文件vhost.conf,定义三个虚拟主机
[[email protected] ~]#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端口是否打开
[[email protected] ~]#nginx
[[email protected] ~]#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.创建目录和网页
[[email protected] ~]#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’
[[email protected] ~]#echo www.a.com > /data/nginx/a/index.html
[[email protected] ~]#echo www.b.com > /data/nginx/b/index.html
[[email protected] ~]#echo 8080 > /data/nginx/c/index.html
[[email protected] ~]#echo images > /data/nginx/image/index.html
[[email protected] ~]#chown -R nginx:nginx /data/nginx/
[[email protected] ~]#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.客户端加入名字解析
[[email protected] ~]# vim /etc/hosts
192.168.0.109 www.a.com www.b.com
测试
[[email protected] ~]# curl www.a.com
www.a.com
[[email protected] ~]# curl www.b.com
www.b.com
[[email protected] ~]# curl 192.168.0.109:8080
8080
[[email protected] ~]# 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到要共享目录
[[email protected] ~]# systemctl start nfs-server
[[email protected] ~]# tar -xf phpMyAdmin-4.4.15.10-all-languages.tar.xz -C /data/
2.修改phpmyadmin配置文件
[[email protected] phpmyadmin]# cp config.sample.inc.php config.inc.php
[[email protected] 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文件夹共享出去
[[email protected] ~]# vim /etc/exports.d/wp.exports
/data/phpmyadmin 192.168.1.0/24(rw,sync,root_squash,no_all_squash)
4.启动查看共享目录
[[email protected] ~]# exportfs -r
[[email protected] ~]# 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.挂载共享目录
[[email protected] ~]# mkdir -p /apps/phpmyadmin
[[email protected] ~]# mount 192.168.1.114:/data/phpmyadmin /apps/phpmyadmin/
2.安装nginx服务并修改其默认主页
[[email protected] ~]#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.修改配置文件让其实现动静分离反代功能
[[email protected] ~]#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.挂载共享目录
[[email protected] ~]# mkdir -p /apps/phpmyadmin
[[email protected] ~]# 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处理动态页面
[[email protected] 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.挂载共享目录
[[email protected] ~]# mkdir -p /apps/phpmyadmin
[[email protected] ~]# mount 192.168.1.114:/data/phpmyadmin /apps/phpmyadmin/
E.在192.168.1.115安装mariadb
1.安装修改配置
[[email protected] network-scripts]# yum install mariadb-server
[[email protected] 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 [email protected]‘%‘ 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文件解析域名
[[email protected] ~]# vim /etc/hosts
192.168.0.109 www.a.com
2.在浏览器需要www.a.com
3.查看192.168.1.112日志文件,确实有png图片被调度到该服务器处理
[[email protected] ~]# 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请求被调度到该服务器处理
[[email protected] ~]# 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反向代理,虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章