Lvs-nat就是多目标DNAT,也就是多目标的地址转换;通过将请求报文中的目标地址和端口地址修改为挑选出来的某RS的RIP和PORT实现转发;













Lvs-nat处理请求过程及其特点:

1、当客户端发出请求时,前端主机接受请求;此时源IP时CIP,目标IP时VIP

2、当客户端请求报文经过PREROUTING流入本机的INPUT链上时,如果发现此请求是个集群服务, 随后直接将请求发送给POSTROUTING;再经由前端主机挑选出由那个后端主机提供服务;随后再将请求报文发送给后端主机;此时源IP时CIP,目标IP是RIP1(注意:DIP的网关要指向RIP1)

3、RIP1接受请求,处理请求,将构建好的响应报文外加一层IP守护;随后再将响应报文发送给前端主机;此时源IP是RIP1,目标IP时CIP(注意:谁最初请求的就响应给谁;同时RIP的网关要指向DIP,这样才能发送报文)

4、VIP接受到报文后;再将响应报文发送个给客户端;此时源IP是VIP;目标IP是CIP

真正提供服务的是后端主机;但人们认为提供服务的时前端主机;所以后端主机形成了完美的地址伪装;具有较高的安全性,以防被******;但是在整个过程中,所有的响应都必须要经过前端主机,当有大量的用户请求时,前端主机的性能是一个瓶颈!


nfs:Network flile system,网络文件系统,监听在tcp协议的2049端口;主要作用是实现文件共享存储;


准备环境:

虚拟机1:网卡1: 172.18.42.122;网卡2:10.0.1.100;作为前端主机

虚拟机2:10.0.1.99;作为后端主机

虚拟机3:10.0.1.200;作为nfs文件共享存储


在虚拟机1安装ipvsadm

[root@localhost~]#yuminstallipvsadm-y[root@localhost~]#ipvsadm-Ln##查看规则的先关信息IPVirtualServerversion1.2.1(size=4096)ProtLocalAddress:PortSchedulerFlags->RemoteAddress:PortForwardWeightActiveConnInActConn

随后定义规则

[root@localhost~]#ipvsadm-A-t172.18.42.122:80-srr##增加一条集群规则[root@localhost~]#ipvsadm-a-t172.18.42.122:80-r10.0.1.99-m-w1##在指定的集群上添加RS的规则[root@localhost~]#curlhttp://172.18.42.122##查看规则是否定义成功<h2>10.0.1.99WebServerRS1</h2>


在虚拟机3启动nfs服务;

[root@localhost~]#vim/etc/exports/lweim10.0.1.99(rw)##添加这一行[root@localhost~]#exportfs-r##重载文件

在虚拟机2查看使用showmount命令查看

[root@localhost~]#showmount-e10.0.1.200##查看是否共享Exportlistfor10.0.1.200:/lweim10.0.1.99[root@localhost~]#mount-tnfs10.0.1.200:/lweim/var/www/html/##把指定的目录挂载至虚拟机2上[root@localhost~]#mount##查看是否挂载上10.0.1.200:/lweimon/var/www/htmltypenfs(rw,vers=4,addr=10.0.1.200,clientaddr=10.0.1.99)


在虚拟3上更改共享目录的权限以及属主

[root@localhost~]#chown-Rapache:apache/lweim/*##将共享目录下所有文件属组属主更改为apache[root@localhost~]#ll/lweim/wtc/##查看是否更改total24-rw-rw-r--1apacheapache451Nov292014AUTHORS-rwxrwxr-x1apacheapache3757Nov292014LICENSE-rw-r--r--1apacheapache5796Nov292014profile_run.htm-rw-rw-r--1apacheapache516Nov292014readme.txtdrwxrwxr-x14apacheapache4096Nov292014upload[root@localhost~]#setfacl-mu:apache:rwx/lweim/wtc/*##更改其权限[root@localhost~]#ll/lweim/wtc/total24-rw-rwxr--+1apacheapache451Nov292014AUTHORS-rwxrwxr-x+1apacheapache3757Nov292014LICENSE-rw-rwxr--+1apacheapache5796Nov292014profile_run.htm-rw-rwxr--+1apacheapache516Nov292014readme.txtdrwxrwxr-x+14apacheapache4096Nov292014upload


在虚拟2上安装lamp以及php-xml(phpwind的扩展能够;否则安装的时候有可能失败)

[root@localhost ~]# yum install httpd php php-mysql mysql-server -y ##安装程序

[root@localhost ~]# service httpd start ##启动httpd服务


在Web服务上访问php程序


在虚拟机2启动mysql程序,并授权

[root@localhost~]#servicemysqldstart#启动mysql服务mysql>grantallonlweim.*tolweim@'127.0.0.1'identifiedby'lweim';##创建本地授权用户“lweim”QueryOK,0rowsaffected(0.00sec)mysql>createdatabaselweim;##创建数据库“lweim”QueryOK,1rowaffected(0.00sec)mysql>flushprivileges;##更新数据库QueryOK,0rowsaffected(0.00sec)



安装phpwind并登陆


问题小结:

(1)对于nfs共享的目录一定要更改其属主属组以及权限;同时在客户端和服务端一定又要UID相同的用户,这一点很重要;

(2)在对前端主机设置管理服务器规则时要注意到底是基于VIP还是基于DIP访问Web服务;