首页 > 代码库 > lvs-nat模型的实验和原理剖析

lvs-nat模型的实验和原理剖析

首先单词:masquerade  表示化妆 伪装的意思 ...nat的意思

实验机:
 
vm1 vm2 vm3 三台虚拟机
vm1 拥有双网卡,一个连接外网  一个host-only 连接内网,部署好LVS--NAT环境的网络结构图

vm2 和vm3 都是host-only在内网中

实验物理结构图:

实验图及地址分布说明:
clinet的IP为 CIP:此实验为  192.168.0.101
vm1 的VIP为192.168.0.10
vm1 的DIP为192.168.100.10
 
vm2的是一台RS1机器,IP地址为 192.168.100.7  网关一定要是  192.168.100.10,指向DIP
vm3的是一台RS2机器,IP地址为 192.168.100.7  网关一定要是  192.168.100.10,指向DIP
 
完成NAT模型集群的配置:
第一步配置DR
 
第一:配置Direcory机器作为一台可以调度RS1和RS2组成的集群服务机器:
第二:完成ipvsadm命令管理配置ipvs
查看内核支持ipvs功能
        [root@DR ~]# cat /boot/config-2.6.32-358.el6.x86_64 | grep -i "vs"
安装ipvsadm
        yum install ipvsadm
    
第三:ipvsadm命令完成
        1 实现管理集群服务:ipvsadm -A -t 192.168.0.10:80 -s rr    
        2 实现管理集群realserver:  
 ipvsadm -a -t 192.168.0.10:80 -r 192.168.100.7 -m
                      ipvsadm -a -t 192.168.0.10:80 -r 192.168.100.9 -m

 第二步

配置RS1 和RS2以RS1为例
第一:网络的正确性
 
 
route add default gw 192.168.100.10   如果不是请用此命令修改网关或者setup进行网络设置
 
第二: 准备一个web服务器:(如httpd)并准备一个测试页面
 
结果测试:
因为是调度器的实现方法是RR轮询的
 
改变调度方法为:wrr 进行测试(当然你也可以用clinet的浏览器进行测试,但注意关闭防火墙和360等)
# ipvsadm -E -t 192.168.0.10:80 -s wrr
# ipvsadm -e -t 192.168.0.10:80 -r 192.168.100.7 -m -w 3
 
查看配置是否正确:
[root@DR ~]# ipvsadm -L 
IP Virtual Server version 1.2.1 (size=4096) 
Prot LocalAddress:Port Scheduler Flags 
-> RemoteAddress:Port Forward Weight ActiveConn InActConn 
TCP 192.168.0.10:http wrr 
-> 192.168.100.7:http Masq 3 0 0 
-> 192.168.100.9:http Masq 1 0 0
 
现在导致的结果是: RS1:RS2的值为3:1  由rww中weight设置的结果
测试结果:
 
 
 
测试完结果后对配置进行保存
vim /etc/sysconfig/ipvsadm-config 
修改:默认重启不保存配置到 /etc/sysconfig/ipvsadm
 
 
 
# ipvsadm-save
# /etc/init.d/ipvsadm restart
查看以保存的配置
# cat /etc/sysconfig/ipvsadm
 
 
原理分析
 
 
分析原理:
NAT方式的LVS原理:是和nat方式原理一样,通过一对多的方式实现,修改三层地址源地址和目的地址的方式就行转发数据包正确的设备
 
从图中画的四个过程成可以分别对SIP  DIP进行图解,容易理解
我使用一个完整的IP数据包进行分析器过程如图:
 
 
过程1
        client--->VIP
        SIP=CIP 192.168.0.101  DIP=VIP  192.168.0.10
 
过程2:由于数据包经过Directory 调度器,在内核层次ipvs会控制数据包,由于符合定义的规则
且方式为nat方式,所以改变数据包的三层地址
        Directory-->RS1
        SIP=CIP 192.168.0.101     DIP=RIP  192.168.100.7
 
到达RS1服务器上面,发现是自己要接受的,所以返回数据
        
 
过程3:RS1-->Directory
        SIP=RIP 192.168.100.7   DIP=CIP  192.168.0.101
      
   经过  Directory
过程四  :Directory--> Clinet
        SIP=DIP 192.168.0.10  DIP=CIP 192.168.0.101
 
 
附上捉包tcpdump结果:
过程1
 
 
 
ipvsadm命令的使用 附件:
附上ipvsadm的命令用法:
ipvsadm 的用法介绍
man ipvsadm
功能
        1 管理集群服务
                添加 -A   -t|u|f service-address [-s scheduler] 
                         -t : TCP 协议的集群
                                    service-address 表示的IP:port
                        -u : UDP 协议的集群
                                    service-address 表示的IP:port
                        -f:FWM防火墙标记
                                    service-address 表示的Mark Number
                        -s : 调度器的方法,默认是wlc
                修改 -E
                删除 -D -t|u|f service-address
   # ipvsadm -A -t 172.16.100.1:80 -s rr                    
        2 管理集群服务的realserver
                添加realserver -a  -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]
                            service-address: 前面已经定义的某集群服务
                            -r 指定realserver的RIP,在NAT模型中,可使用IP:PORT 实现端口映射
                             [-g|i|m] 表示LVS类型
                                    -g :DR  (默认方式)
                                     -i :TUN   
                                     -m: NAT
                            -w 指定无服务器的权重
                修改 -e
                删除 -d -t|u|f service-address -r server-address
    # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 -m
    # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -m
        3 查看
                -L|-l|--list
                        -n 数字格式,不反解IP和port
                         --stats 显示统计信息
                        --rate: 速率
                        --timeout   显示当前ipvs当中tcp upd tcpfin协议的超时时间长度(这是默认的)
                        --daemon 显示进程状况和多播端口的
                        --sort 对列出进行排序
                        -c  显示ipvs连接状况的
               -C: 清空ipvs规则,删除所有集群服务
         4 保存规则
                -s
                # ipvsadm -S > /path/to/file
             载入此前第一的规则
                # ipvsadm -R < /path/to/file
 

lvs-nat模型的实验和原理剖析