23decxf 发表于 2015-9-5 09:41:38

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功能
      # 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

查看配置是否正确:
# 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方式原理一样,通过一对多的方式实现,修改三层地址源地址和目的地址的方式就行转发数据包正确的设备

从图中画的四个过程成可以分别对SIPDIP进行图解,容易理解
我使用一个完整的IP数据包进行分析器过程如图:




过程1
      client--->VIP
      SIP=CIP 192.168.0.101DIP=VIP192.168.0.10

过程2:由于数据包经过Directory 调度器,在内核层次ipvs会控制数据包,由于符合定义的规则
且方式为nat方式,所以改变数据包的三层地址
      Directory-->RS1
      SIP=CIP 192.168.0.101   DIP=RIP192.168.100.7

到达RS1服务器上面,发现是自己要接受的,所以返回数据
      

过程3:RS1-->Directory
      SIP=RIP 192.168.100.7   DIP=CIP192.168.0.101
      
   经过Directory
过程四:Directory--> Clinet
      SIP=DIP 192.168.0.10DIP=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

页: [1]
查看完整版本: lvs-nat模型的实验和原理剖析