LVS/DR

版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40195432/article/details/84869267

VS/DR模式拓扑:

                              ++++++++++++++++   
         +----------->  +	     Client         +
         |                   ++++++++++++   down eth1 1.1.1.250/24
         |                                  |
                                        router
         |                                  |
         |                   ++++++++++++   VIP eth0:1  1.1.1.1/24
         |                   +      Director         +
         |                   ++++++++++++   DIP eth0     1.1.1.100/24
         |                                  |
         +___________________ | __________________
                    |                                                        | 
                    |                                                        |
       ++++++++++++++++                  ++++++++++++++++
       +  Real Server A   +                 +  Real Server B    +
       ++++++++++++++++                  ++++++++++++++++
        eth0 1.1.1.10/24                      eth0 1.1.1.20/24
        lo  1.1.1.1/32                          lo 1.1.1.1/32
  1. 客户端要找vip访问80端口,因为是在同一个网段,所以发arp广播找vip的mac地址通信
  2. 因为有rs上也有vip,我们不能直接让rs上的vip回应客户端的广播,所以设置文件arp_ignore的内容为1
    1的意思是如果发来的广播包里面目标地址不是我的“进口地址”–>也就是“eth0”(对应的是非进口地址本地回环接口lo),那我就不回应这个arp广播)。
  3. 当dr的vip收到这个广播之后,回应mac地址,然后得到客户端发来的80端口请求,再通过lvs分发到一个rs
  4. 那么dr如何分发到一个rs?
    dip发出arp广播询问rs的ip地址所对应的mac地址,然后发出一个目标ip为rs_vip,目标mac为rs_eth0_mac的包到rs
  5. 这个rs必须要使用他lo设置的vip把回应包发出去(这样client收到之后一看源地址是vip,他就会相信这是正确的地址发来的包)
  6. 那么怎样让rs使用lo的vip而不使用eth0?
    设置arp_announce文件的内容为2, 2的意思是使用本机最好的本地IP地址把回应包发出去
  7. 最后怎么算是最好的本地IP地址?
    同一个网段下,使用可变长度子网掩码最长的IP地址被认为是好IP,因为他更精确

VS/DR模式数据包走向:

1.Client-------------------------->Director
sip: CIP dip: VIP
smac: Client_mac dmac: VIP_mac

2.Director---------------------->Real Server


  • Director在给Real Server发包前要广播找Real Server mac *
  • sip: DIP dip: RIP *
  • smac: DIP_mac dmac: broadcast *
  •   												                              *	
    
  • sip: RIP dip: DIP *
  • smac: RealServer_mac dmac: DIP_mac *

sip: CIP dip: VIP
smac: DIP_mac dmac: RealServer_mac

3.Real Server------------------>Client
sip: VIP dip: CIP //这里的VIP是realserver的lo额外添加的那个VIP地址
smac: RealServer_mac dmac: Client_mac

=VS/DR模式配置========
Client:
[root@localhost ~]# route add default gw 1.1.1.1 dev eth0

Real Server A & Real Server B:
[root@localhost ~]# yum install httpd
[root@localhost ~]# ifconfig lo:0 1.1.1.1/32
[root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore eth0可以换成all
[root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce

Director: route -n 上面的一条路由做dip 下面一条做vip
[root@localhost ~]# yum install ipvsadm
[root@localhost ~]# ipvsadm -A -t 1.1.1.1:80 -s rr
[root@localhost ~]# ipvsadm -a -t 1.1.1.1:80 -r 1.1.1.10:80 -g
[root@localhost ~]# ipvsadm -a -t 1.1.1.1:80 -r 1.1.1.20:80 -g

保存:
# service ipvsadm save
Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]
清空:
# ipvsadm -C
查看
# ipvsadm -Ln
# ipvsadm -Ln --stats
# ipvsadm -Ln --rate
实时查看:
# watch -n.5 ‘ipvsadm -Ln -c’
-n.5 是0.5秒刷新一次
-n 5 5秒刷新一次

要解决三个问题:
1 .两个http服务器除了有自己的rip以外还要拥有vip
因为:数据包需从realServer返回 ,realServer返回的数据需要源IP为VIP
解决:添加 lo接口(本地环路接口) ,lo:1  vip/32.

2 .当GW向下广播vip的时候 要分发器的vip响应 而两个http的vip不要响应
因为:realServer的vip有了,接着就是同一个网段中拥有两个vip, 客户端在网关发送arp广播需找vip时需要让realServer不接受响应.
    解决:
    echo 1 >/proc/sys/net/ipv4/conf/eth0/arp_ignore
    arp_ignore 设置为1,意味着当别人的arp请求过来的时候,如果接收的设备没有这个ip,就不做出响应(这个ip在lo上,lo不是接收设备的进口)
    echo 2 >/proc/sys/net/ipv4/conf/eth0/arp_announce 
    使用最好的ip来回应,什么是最好的ip?同一个网段内子网掩码最长的
   
3 .当分发器向下找两个http服务器时,必须从dip发包
因为:Director 发送数据包给realServer , 要走dip的网卡,否则ip流向就是vip–>vip 发送不成功.
  解决:调整vip和dip网卡在路由表中的顺序,dip在上,vip在下即可解决。
 
  假如:192.168.1.1 是vip ,网卡eth0
  192.168.1.2 是dip,网卡eth1
  在添加这两个ip的时候,路由表会出现如下条目:
  192.168.1.0 0.0.0.0 255.255.255.0 u 0 0 0 eth0
  192.168.1.0 0.0.0.0 255.255.255.0 u 0 0 0 eth1
  这样的路由顺序会由eth0也就是vip发包,是不行的
  解决:直接删除eth0所在的网络
  #ip route del 192.168.1.0/24 dev eth0

注:LO接口本身的作用:
    假如包是由一个本地进程为另一个本地进程产生的, 它们将通过外出链的’lo’接口,然后返回进入链的’lo’接口.

另一个人版本实验:

VS/DR

实验说明:

  1. 网络使用桥椄模式
  2. 调度器、Real Server都使用虚拟机或使用真实服务器
  3. DR模式要求所有节点必须在同一个网段及广播域
  4. 所有节点网关均指定真实网关

网络拓朴:
Director: DIP:30.30.30.2
VIP:30.30.30.100

Real Server: 30.30.30.10 30.30.30.20 30.30.30.30

DNS Server: www.tianyun.com ===> 30.30.30.100

一、VS/DR实施

  1. 准备工作(集群中所有主机)
    IP, hostname, hosts, iptables, SELinux, ssh trust, ntp

cat /etc/hosts

127.0.0.1 localhost
30.30.30.2 director1.tianyun.com director1
30.30.30.10 node1.tianyun.com node1
30.30.30.20 node2.tianyun.com node2
30.30.30.30 node3.tianyun.com node3

  1. RS配置
    配置好网站服务器,测试所有RS //为了测试效果,提供不同的页面

ip addr add dev lo 30.30.30.100/32 //在lo接口上绑定VIP

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore //non-arp

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

  1. Director分发器配置
    配置VIP
    [root@tianyun ~]# ip addr add dev eth0 30.30.30.100/32 //配置VIP
    [root@tianyun ~]# yum -y install ipvsadm //确保LoadBalancer仓库可用

定义LVS的分发策略

ipvsadm -C

ipvsadm -A -t 30.30.30.100:80 -s rr

ipvsadm -a -t 30.30.30.100:80 -r 30.30.30.10 -g //gatewaying (direct routing)

ipvsadm -a -t 30.30.30.100:80 -r 30.30.30.20 -g

ipvsadm -a -t 30.30.30.100:80 -r 30.30.30.30 -g

service ipvsadm save

Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ]

ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 30.30.30.100:80 rr
-> 30.30.30.10:80 Route 1 0 0
-> 30.30.30.20:80 Route 1 0 0
-> 30.30.30.30:80 Route 1 0 0

ipvsadm -L -n

ipvsadm -L -n --stats

ipvsadm -L -n --rate

ipvsadm -Ln -c

watch -n.5 ‘ipvsadm -Ln -c’

  1. 测试
    [root@client ~]# elinks -dump http://192.168.2.220/
    [root@client ~]# ab -c 1000 -n 1000 http://192.168.2.220/

  2. 小结
    VS/DR模式的原理是: 当一个client发送一个请求到VIP,Director根据VIP选择对应的real-server的Pool,
    根据算法,在Pool中选择一台Real-server,然后将client的请求包发给选择的Real-server,最后选择的Real-server
    把应答包直接传给client
    =================================================================================

猜你喜欢

转载自blog.csdn.net/qq_40195432/article/details/84869267
今日推荐