第十四周作业

1、LVS实现nat,dr
nat模式:

本质是多目标IP的DNAT模式,就是通过修改目标IP来实现调度,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发。

nat模式有以下几个特点:

RIP和DIP必须在同一个IP网络,且应该使用私网地址;

RS的网关要指向DIP

请求报文和响应报文都必须经由Director转发,Director

易于成为系统瓶颈

支持端口映射,可修改请求报文的目标PORT

VS必须是Linux系统,RS可以是任意OS系统

我们先来看下nat模式的一次完整的流程,如下图所示,分为6个步骤:

1.客户端发送请求,此时源ip为cip(客户端ip),目标Ip为vip(就是调度器的对外Ip)

2.到达调度器时,经过PREROUTING钩子,由于目标IP为vip,所以转向INPUT链

3.INPUT链上有IPVS规则,将本该发送到INPUT的请求修改目标IP,从VIP改为RIP,然后转到OUTPUT链

4.OUTPUT链将转发的请求发送到RS上,此时的源IP为CIP,目标IP为RIP

5.请求报文到达RS后,RS构建响应报文并发送给VS,此时的源IP为RIP,目标IP为VS

6.最后由VS将响应报文转发给客户端

所以针对这几个特点,我们实现nat时,需要注意将DIP和RIP设在同一IP网络,RIP的网关要指向DIP。

实验:实现nat模式

1.搭建环境:

为了防止selinux和iptables对实验的影响,我们在实验之前先将所有selinux策略临时调为0,将iptables服务关闭

客户机:192.168.200.101/24

调度器:VIP192.168.200.123/24 DIP172.16.251.34/16

节点rs1:172.16.254.122/16, 网关指向调度器DIP172.16.251.34/16

节点rs2:172.16.254.133/16, 网关指向调度器DIP172.16.251.34/16

2.由于调度器上需要转发请求,所以需要在内核中开启转发功能:

在调度器上,执行如下步骤

[root ~]$vim/etc/sysctl.conf修改这一行,将0改为1,表示开启转发功能net.ipv4.ip_forward = 1[root ~]$sysctl-p#读取配置文件,显示以下内容证明修改成功net.ipv4.ip_forward = 1...

3.添加调度器

在调度器上,执行以下步骤

[root ~]$ yum -y install ipvsadm#安装ipvaadm工具[root ~]$ ipvsadm -A -t192.168.200.123:80-s rr#设置调度器,调度算法为rr(轮询)

4.添加节点

在调度器上,执行以下步骤

[root ~]$ipvsadm-a -t 192.168.200.123:80 -r 172.16.254.122 -m#添加节点,模式为-m(nat模式)[root ~]$ipvsadm-a -t 192.168.200.123:80 -r 172.16.254.133 -m[root ~]$ipvsadm-Ln                        IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags  -> RemoteAddress:Port          Forward Weight ActiveConn InActConnTCP  192.168.200.123:80 rr  -> 172.16.254.122:80            Masq    1      0          0          -> 172.16.254.133:80            Masq    1      0          0

5.安装并启用httpd服务

在两台节点上,都安装httpd

[root@localhost ~]# yum -y install httpd

然后在rs1上:

[root@localhost ~]# echo"rs1"> /var/www/html/index.html[root@localhost ~]# service httpd startStarting httpd: httpd: Couldnotreliably determine the server's fully qualified domain name,usinglocalhost.localdomainforServerName                                                          [  OK  ]

在rs2上:

[root@localhost ~]# echo"rs2"> /var/www/html/index.html[root@localhost ~]# service httpd startStarting httpd: httpd: Couldnotreliably determine the server's fully qualified domain name,usinglocalhost.localdomainforServerName                                                          [  OK  ]

6.测试

编写一个简单的for循环,执行curl 调度器,查看获取到的信息

[root@vs ~]# for i in {1..10};do curl 192.168.200.123;doners2rs1rs2rs1rs2rs1rs2rs1rs2rs1

我们看到获取到了节点的http页面,轮询效果也实现了,实验成功

DR模式

DR模式:Direct Routing,就是直接路由模式,LVS默认模式,应用最广泛

,通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP

所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的

MAC地址;源IP/PORT,以及目标IP/PORT均保持不变

由于DR模式是通过MAC地址来转发请求的,源IP和目标IP都不变,所以响应报文直接就可以通过IP地址给客户端返回响应报文。所以vs和rs都要配置VIP,这样才能将相应报文直接返回给客户端,但是配置相同的VIP路由器将请求数据转发过来时,就不一定是走调度器了,也可能走某一个节点,而且调度器和节点之间会IP地址冲突。针对这种情况,我们有三种解决方法:

(1)在前端网关做静态绑定VIP和VS的MAC地址

(2)在RS上使用arptables工具

arptables -A IN -d $VIP -j DROP

arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP

(3)在RS上修改内核参数以限制arp通告及应答级别

arp_announce

arp_ignore

我们这次实验使用第三种方式

请求过程中的包头地址转换情况如下图所示

实验步骤

1.环境:

关闭selinux和iptables

客户端:172.16.254.33、16

路由器:192.168.200.222/24,172.16.251.170/16,开启转发功能

调度器:VIP172.16. 123.122/32 DIP172.16.251.34/16 网关172.16.251.170

节点rs1:VIP172.16. 123.122/32  172.16.254.122/16 网关172.16.251.170

节点rs2: VIP172.16. 123.122/32  172.16.254.111/16 网关172.16.251.170

2.在两台rs上执行

[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  #忽略arp广播  [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  [root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce[root@localhost ~]# ifconfig lo:0 172.16.123.122 netmask 255.255.255.255 broadcast  172.16.123.122 up    #在lo口上设置VIP[root@localhost ~]# route add -host 172.16.123.122 dev lo:0  #设置路由确保VIP能将回应包发出去[root@localhost ~]# yum -y install httpd    #安装httpd服务[root@localhost ~]# echo "rs1" > /var/www/html/index.html    #写入测试主页文件,注意这里两台rs上不一样,rs1上就echo rs1,rs2上写rs2[root@localhost ~]# service httpd start  #启动httpd服务

3.在VS调度器中执行如下操作

ifconfigeth1:0172.16.123.122netmask255.255.255.255broadcast172.16.123.122up#在eth1口上设置VIP[root@localhost ~]#yum-yinstallipvsadm#安装ipvsadm工具[root@localhost ~]#ipvsadm-A-t172.16.123.122:80-srr[root@localhost ~]#ipvsadm-a-t172.16.123.122:80-r172.16.254.122-g[root@localhost ~]#ipvsadm-a-t172.16.123.122:80-r172.16.254.111-g

4.路由器上开启转发功能:

[root@localhost network-scripts]# vim /etc/sysctl.conf修改如下内容net.ipv4.ip_forward =1[root@localhost network-scripts]# sysctl -p    #读取配置文件net.ipv4.ip_forward =1

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容