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

[经验分享] LVS 的 NAT模式和DR模式介绍及搭建

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-4 09:00:58 | 显示全部楼层 |阅读模式
LVS简介:
    LVS全称 Linux Vritual Server,linux虚拟服务器,主要用于多服务器的负载均衡,工作于网络层。LVS工作相似iptables,很多原理相通。


LVS调度方法:
1
2
3
4
5
6
7
8
9
10
11
12
# grep -i 'VS'/boot/config-2.6.32-431.el6.x86_64 |grep -A 10 'IPVS scheduler'
# IPVS scheduler
CONFIG_IP_VS_RR=m
CONFIG_IP_VS_WRR=m
CONFIG_IP_VS_LC=m
CONFIG_IP_VS_WLC=m
CONFIG_IP_VS_LBLC=m
CONFIG_IP_VS_LBLCR=m
CONFIG_IP_VS_DH=m
CONFIG_IP_VS_SH=m
CONFIG_IP_VS_SED=m
CONFIG_IP_VS_NQ=m




静态方法:仅根据调度算法本身进行调度
1
2
3
4
           rr: 轮流 轮询 轮叫。
           wrr:加权轮询。
           sh: 源地址hash,表示来源于同一个CIP的请求始终被定向至同一个RS。SESSION保持。
           dh: 目标地址hash。





           
动态方法:根据算法及各RS当前的负载情况进行调度
1
2
3
4
5
6
           lc: 最小连接。
           wlc:加权最小连接 。
           sed: 最短期望延迟,一个请求进来,性能最好的响应。
           nq: 永不排队连接,轮询一圈后,性能最好的开始响应。
           lblc:基于本地的最少连接。
           lblcr: 带复制的lblc







接下来在LVS主机安装ipvsadm
1
# yum install ipvsadm -y





ipvsadm 命令参数:
1
2
3
4
5
6
7
8
9
10
11
12
13
ipvsadm -A|E-t|u|f service-address [-s scheduler]
-A:在内核虚拟服务器表中添加一个虚拟服务器记录。添加一个新的虚拟IP地址。
-E:编辑内核虚拟服务器的参数。
-D:删除内核虚拟表中的一条记录。
-C:清除虚拟服务表中的配置记录。
-S:保存配置好的内核虚拟表规则。
  
-a: 在内核虚拟服务器表中添加一个被转发的主机地址,也就是后端的服务器。
-e: 编辑一条虚拟服务表中记录中的真实服务器记录。
-t: tcp,指定转发的协议
-u: udp,同tcp。
-w: 权重。
-r: 指定后端节点ip地址。




NAT模型工作原理:
wKiom1QG8teTlS4CAAE49oOQzww259.jpg
NAT模式是用户iptables做转发功能的,后来用于解决公网IP地址不足的一个方案。LVS的NAT工作过程对比iptables做了修改,就成了一种高并发负载方案。客户端通过http请求Virtual IP,服务器接收http请求转发给DIP所对应的一个Real Server IP地址,Real Server处理完成后响应客户端,这个时候如果直接使用Real ServerIP去响应客户端的话,客户端不会接收,因为客户端请求的是Virtual IP地址。这个时候,Real Server会把请求响应发给DIP,DIP和Vritual同处一个主机,封装VritualIP响应报文返回给客户端。

LVS主机端IP地址划分。
1
2
3
4
# ifconfig eth0 |grep 'inet addr'
inetaddr:172.16.32.10 Bcast:172.16.255.255 Mask:255.255.0.0
# ifconfig eth1 |grep 'inet addr'
inetaddr:10.0.0.1  Bcast:10.255.255.255  Mask:255.0.0.0





WEB主机1IP地址划分。
1
2
3
4
# ifconfig eth0 |grep 'inet addr'
inetaddr:172.16.32.11 Bcast:172.16.255.255 Mask:255.255.0.0
# ifconfig eth1 |grep 'inet addr'
inetaddr:10.0.0.10  Bcast:10.255.255.255  Mask:255.0.0.0





WEB主机2IP地址划分。
1
2
3
4
# ifconfig eth0 |grep 'inet addr'
inet addr:172.16.32.12  Bcast:172.16.255.255  Mask:255.255.0.0
# ifconfig eth1 |grep 'inet addr'
inetaddr:10.0.0.11  Bcast:10.255.255.255  Mask:255.0.0.0





测试的时候可以把WEB主机的eth0网卡down掉。这里是方便配置。

在LVS主机测试WEB节点是否可以正常访问。
1
2
3
4
# curlhttp://10.0.0.10
Lvs Web1Node
# curl http://10.0.0.11
Lvs Web2Node





开启内核转发功能
1
# echo 1 >/proc/sys/net/ipv4/ip_forward




设置LVS。
1
2
3
4
5
6
7
8
9
10
11
# ipvsadm -A -t172.16.32.10:80 -s rr
# ipvsadm -a -t172.16.32.10:80 -r 10.0.0.10 -m
# ipvsadm -a -t172.16.32.10:80 -r 10.0.0.11 -m
  
# ipvsadm -L -n
IP Virtual Serverversion 1.2.1 (size=4096)
ProtLocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.32.10:80 rr
  -> 10.0.0.10:80                 Masq    1     0          2         
  -> 10.0.0.11:80                 Masq    1     0          3






打开浏览器输入VIP地址。

wKioL1QG83fAtbPAAADJ-GItfeA354.jpg
wKiom1QG83XC8WfgAADMCdtnzYA901.jpg



好了,已经看到效果了。
DR模型工作原理:
wKioL1QG86uxumclAAGYgjUCOuw994.jpg
DR和Real Server通用一个Virtual IP地址对外提供服务,LVS主机和后端WEB主机同一个网段。在同一个广播域内,进来的请求通过ARP广播方式请求响应,而这时通过配置只有DR响应,而Real server则对这个IP的ARP采取静默方式。DR根据调度算法找到Real server,把目的的MAC地址改为Real server的MAC地址,并发给Real server。Real server 接收处理后,等同于直接接到客户端请求,处理后直接由Real server 响应给客户端,而不在经由DR。

接下来构建DR模式。
arp_ignore: 如何响应接收ARP地址请求,默认0,1表示仅在请求的地址配置在请求报文的接口进行响应。
arp_announce: 如何通告本地地址,默认0,2表示仅通过网络直连的接口的地址。

LVS主机端
1
2
3
4
5
# ifconfig eth0:0172.16.32.88/16 up
# ifconfig eth0:0
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:E1:B1:1B  
          inet addr:172.16.32.88  Bcast:172.16.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1






WEB节点1设置:
修改RS上的内核参数,将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址请求
1
2
3
4
5
6
7
8
9
10
11
12
# echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
# ifconfig lo:0172.16.32.88/16 up
# ifconfig lo:0
lo:0      Link encap:Local Loopback  
          inet addr:172.16.32.88  Mask:255.255.0.0
          UP LOOPBACK RUNNING  MTU:16436 Metric:1
  
# ifconfig lo:0172.16.32.88 netmask 255.255.255.255 broadcast 172.16.32.88 up
# route add -host172.16.32.88 dev lo:0





WEB节点2设置:
1
2
3
4
5
6
7
8
9
10
11
12
# echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce
# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
# ifconfig lo:0172.16.32.88/16 up
# ifconfig lo:0
lo:0      Link encap:Local Loopback  
          inet addr:172.16.32.88  Mask:255.255.0.0
          UP LOOPBACK RUNNING  MTU:16436 Metric:1
  
# ifconfig lo:0172.16.32.88 netmask 255.255.255.255 broadcast 172.16.32.88 up
# route add -host172.16.32.88 dev lo:0






LVS主机设置。
1
2
3
4
5
6
7
8
9
10
# ipvsadm -A -t172.16.32.88:80 -s rr
# ipvsadm -a -t172.16.32.88:80 -r 172.16.32.11 -g -w 1
# ipvsadm -a -t172.16.32.88:80 -r 172.16.32.12 -g -w 1
# ipvsadm -L -n
IP Virtual Serverversion 1.2.1 (size=4096)
ProtLocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.16.32.88:80 rr
  -> 172.16.32.11:80              Route   1     1          3         
  -> 172.16.32.12:80              Route   1     0          4




wKiom1QG9CSCUiujAAC9w60sSlg259.jpg
wKioL1QG9CjygPA5AADMCdtnzYA167.jpg
   




运维网声明 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.yunweiku.com/thread-24343-1-1.html 上篇帖子: LVS-DR模型测试实验 下篇帖子: LVS-NAT实现discuz论坛搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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