LVS-DR

作者: print("") 分类: linux 发布时间: 2017-04-21 09:52

LVS_DR模式(一)

  • LVS-DR集群模式工作原理

首先,来自客户端计算机CIP的请求被发送到Director的VIP。然后Director使用相同的VIP目的IP地址将请求发送到集群节点或真实服务器。然后,集群某个节点将回复该数据包,并将改数据包直接发送到客户端计算机(不经过Director)并且以此回复数据包使用的目的VIP地址作为源IP地址、因此实际上是客户计算机被欺骗了。而客户端计算机始终认为它正在与同一台计算机对话、而实际上它正在发送请求数据包给一台计算机(LB)、并从另一台计算机(RS)接受回复的数据包。

  • DR模式具体的调度原理过程描述如下
  • 首先、来自客户端计算机CIP的请求被发送到LVS调度器的VIP
  • LVS调度器收到目标地址为VIP的客户端请求包后、将该数据包的MAC地址改成LVS调度器选择的某一台RS的MAC,并通过交换机(数据链路层)发给这台RS服务器、(因为mac地址是rs服务器,所以,rs可以接受到该数据包)、注意:此时数据包的目的的及源IP地址没有发生任何改变
  • RS的连接层收到发来的数据报文请求后,从链路层往上传给IP层、此时IP层需要验证请求的目标IP地址。因为包的目标IP(即VIP)地址并不是像常规数据包那样为RS的本地IP,而仅仅目的的MAC地址是RS的

所以在RS上需要配置一个VIP的loopback device。(回环网卡)这样RS服务器的IP层收到数据包报文并验证目的的IP为RS本地IP后才会网上递交给传输层、之所以把VIP配置成loopback device,是因为loopback device是服务器本地使用的网络借口、对外是不可见的。不跟LVS的VIP冲突(这里还有一个ARP抑制问题)

  • RS处理数据包完成后、将应答包直接返回给客户端(此时数据包报文的源地址为客户端请求报文的目的地址VIP、而目的地址为客户端的IP即CIP),回复数据包报文不再经过LVS调度器、因此,如果是对外提供LVS负载均衡服务、则RS需要连上互联网(公网IP或网关)才能将应答包返回给客户、不过、RS最好为带有公网IP的服务器、这样可以不经过网关直接回应客户、如果多个RS使用一个网关出口、网关会变成LVS架构的瓶颈、会大大降低LVS的性能。

整个过程简图如下所示: 三、LVS DR模式具体的调度原理过程图

  • S DR模式应用特点
  • 所有集群节点RS必须和Director 在相同的物理网段(即同一局域网)上。
  • 所有客户端入站(而不是出站)请求有Director首先接受。并转发给集群节点RS
  • 集群节点RS、通常来说最好带外部IP、而不使用Director及某个固定机器作为默认网关、以便数据包直接回复给客户端计算机、且不会产生回包的瓶颈
  • 所有集群节点RS上必须在lo网卡上绑定一个VIP地址、以便验证通过目的IP非RS的数据包
  • 由于所有集群节点RS上必须在lo网卡上绑定VIP地址、因此,带来ARP问题、即集群节点RS默认会相应发往Director VIP的数据包、因此要对所有集群节点RS做ARP抑制处理、把相应VIP的请求交给LVS director
  • 很多操作系统都可以在集群内部的RS真实服务器上、只要改操作系统能够实现ARP隐藏,如:windows 、linux、unix
  • LVS/DR 模式不需要开启调度器转发功能、这点和LVS/NAT模式是不同的
  • LVS/DR Director(服务器数量100台)可以比 LVS-NAT director (服务器数量10-20)承受更多的并发请求和转发更多服务器数量
  • RS arp 抑制问题
  • 提示:广播消息会通过物理网卡到达真实服务器、而真实服务器上有VIP所以会相应抑制ARP之后就不会相应VIP地址的ARP广播
  • 现在就只要Director相应了。五、安装LVS软件
    试验环境四台虚拟机地址表如下

    服务器列表IP 角色 VIP地址
    Director 192.168.132.139 Director  Server 192.168.132.140
    RS1 SIP 192.168. 132.132 RS1 真实服务器
    RS2 SIP 192.168. 132.137 RS2 真实服务器
    客户端 192.168.132.135 客户端

    在RS1 RS2 中配置httpd服务
    (RS1p配置)yum install httpd
    server httpd restart
    echo “132” >/var/www/html/index.html
    (RS2p配置)yum install httpd
    server httpd restart
    echo “133” >/var/www/html/index.html
    RS2 和RS3 启动服务后面测试http

Director Server 配置
配置一个VIP
[root@mail2 mnt]# ifconfig eth0:1 192.168.132.140 broadcast 192.168.132.140 netmask 255.255.255.0 up
再配置一个路由
[root@mail2 mnt]# route add -host 192.168.132.140 dev eth0:1
[root@mail2 mnt]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.132.140 0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.132.0   0.0.0.0         255.255.255.0   U     1      0        0 eth0
0.0.0.0         192.168.132.2   0.0.0.0         UG    0      0        0 eth0
[root@mail2 mnt]#
已经添加了一条路由
yum install ipvsadm
[root@mail2 mnt]# ipvsadm -A -t 192.168.132.140:80 -s wlc
[root@mail2 mnt]# ipvsadm -a -t 192.168.132.140:80 -g  -r 192.168.132.132 -w 1
[root@mail2 mnt]# ipvsadm -a -t 192.168.132.140:80 -g  -r 192.168.132.137 -w 2
[root@mail2 mnt]# service ipvsadm save
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm: [确定]
[root@mail2 mnt]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.132.140:80 wlc
-> 192.168.132.132:80           Route   1      0          0
-> 192.168.132.137:80           Route   2      0          0
[root@mail2 mnt]#
 
RS1 配置
[root@mail2 ~]# echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore
[root@mail2 ~]# echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce
[root@mail2 ~]# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
[root@mail2 ~]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce
[root@mail2 ~]#
[root@mail2 ~]# ifconfig lo:0 192.168.132.140 netmask 255.255.255.255 broadcast 192.168.132.140
[root@mail2 ~]# route add -host 192.168.132.140 dev lo:0
[root@mail2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:EF:8F:AD
inet addr:192.168.132.132  Bcast:192.168.132.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feef:8fad/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:2144 errors:0 dropped:0 overruns:0 frame:0
TX packets:694 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:160317 (156.5 KiB)  TX bytes:72925 (71.2 KiB)
Interrupt:19 Base address:0x2000
 
lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:48 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3412 (3.3 KiB)  TX bytes:3412 (3.3 KiB)
 
lo:0      Link encap:Local Loopback
inet addr:192.168.132.140  Mask:255.255.255.255
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RS2 的配置和RS1 一样的配置
[root@4 ~]# ifconfig lo:0 192.168.132.140 netmask 255.255.255.255 broadcast 192.168.132.140
[root@4 ~]# route add -host 192.168.132.140 dev lo:0
[root@4 ~]#
[root@4 ~]#
[root@4 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:97:5C:7A
inet addr:192.168.132.137  Bcast:192.168.132.255  Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe97:5c7a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:1791 errors:0 dropped:0 overruns:0 frame:0
TX packets:441 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:139403 (136.1 KiB)  TX bytes:45271 (44.2 KiB)
Interrupt:19 Base address:0x2000
 
lo        Link encap:Local Loopback
inet addr:127.0.0.1  Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING  MTU:16436  Metric:1
RX packets:28 errors:0 dropped:0 overruns:0 frame:0
TX packets:28 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1936 (1.8 KiB)  TX bytes:1936 (1.8 KiB)
 
lo:0      Link encap:Local Loopback
inet addr:192.168.132.140  Mask:255.255.255.255
UP LOOPBACK RUNNING  MTU:16436  Metric:1
 
四、在客户端测试一下
[root@mial ~]# curl http://192.168.132.140
137
[root@mial ~]# curl http://192.168.132.140
132
[root@mial ~]# curl http://192.168.132.140
137
[root@mial ~]# curl http://192.168.132.140
137
[root@mial ~]# curl http://192.168.132.140
132
[root@mial ~]# curl http://192.168.132.140
137 已经测试成功了。
完! 2017-04-21

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

说点什么

avatar
  Subscribe  
提醒