设为首页 收藏本站
查看: 1430|回复: 0

[经验分享] lvs-nat模型的实验和原理剖析

[复制链接]

尚未签到

发表于 2015-9-5 09:41:38 | 显示全部楼层 |阅读模式
  首先单词:masquerade  表示化妆 伪装的意思 ...nat的意思

实验机:

vm1 vm2 vm3 三台虚拟机
vm1 拥有双网卡,一个连接外网  一个host-only 连接内网,部署好LVS--NAT环境的网络结构图  vm2 和vm3 都是host-only在内网中
  实验物理结构图:
DSC0000.png

实验图及地址分布说明:
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组成的集群服务机器:
DSC0001.png
第二:完成ipvsadm命令管理配置ipvs
查看内核支持ipvs功能
        [iyunv@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为例
第一:网络的正确性

DSC0002.jpg

route add default gw 192.168.100.10   如果不是请用此命令修改网关或者setup进行网络设置

第二: 准备一个web服务器:(如httpd)并准备一个测试页面
DSC0003.png


结果测试:
因为是调度器的实现方法是RR轮询的

DSC0004.png

改变调度方法为: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

查看配置是否正确:
[iyunv@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设置的结果
测试结果:

DSC0005.png



测试完结果后对配置进行保存
vim /etc/sysconfig/ipvsadm-config
修改:默认重启不保存配置到 /etc/sysconfig/ipvsadm

DSC0006.png



# ipvsadm-save
# /etc/init.d/ipvsadm restart
查看以保存的配置
# cat /etc/sysconfig/ipvsadm


原理分析



分析原理:
NAT方式的LVS原理:是和nat方式原理一样,通过一对多的方式实现,修改三层地址源地址和目的地址的方式就行转发数据包正确的设备

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

DSC0007.png


过程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

DSC0008.jpg


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、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-109610-1-1.html 上篇帖子: LVS基本介绍 下篇帖子: LVS调整hash bucket及内核编译
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表