LVS-DR模型

LVS-DR模型

 

实验规划:

client 桥接 eth0 192.168.1.123/24 网关:192.168.1.200
         
router 桥接 eth1 192.168.1.200/24  
仅主机 eth0 192.168.8.200/24  
eth0:1 10.0.0.200/8  
         
LVS 仅主机 eth0 DIP192.168.8.7/24 网关:192.168.8.200
      VIP10.0.0.100/8  
         
RS1 仅主机 eth0 192.168.8.17/24 网关:192.168.8.200
      VIP10.0.0.100/8  
         
RS2 仅主机 eth0 192.168.8.27/24 网关:192.168.8.200
      VIP10.0.0.100/8  

 

主机router:开启ip转发

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1     

主机RS1,RS2运行如下脚本:

#!/bin/bash
vip=10.0.0.100
mask='255.0.0.0'
dev=lo:1
rpm -q httpd &> /dev/null || yum -y install httpd &> /dev/null
service httpd start &> /dev/null && echo "the httpd server is ready!"
echo "<h1>`hostname`</h1>" > /var/www/html/index.html

case $1 in
start)
    echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ifconfig $dev $vip netmask $mask
    echo "the RS server is ready!"
    ;;
stop)
    ifconfig $dev down
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce
    echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ;;
*)
    echo "Usage: $(basename $0) start|stop"
    exit 1
    ;;                                                                             
esac
~     

限制响应级别: arp_ignore为1

仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应

限制通告级别: arp_announce为2

必须避免将接口信息向非本网络进行通告
 

主机LVS运行如下脚本:

#!/bin/bash
vip='10.0.0.100'
iface='eth0:1'
mask='255.0.0.0'
port='80'
rs1='192.168.8.17'
rs2='192.168.8.27'
scheduler='wrr'
type='-g' #dr
rpm -q ipvsadm &> /dev/null || yum -y install ipvsadm &> /dev/null

case $1 in
start)
    ifconfig $iface $vip netmask $mask
    iptables -F

    ipvsadm -A -t ${vip}:${port} -s $scheduler
    ipvsadm -a -t ${vip}:${port} -r ${rs1} $type -w 1
    ipvsadm -a -t ${vip}:${port} -r ${rs2} $type -w 1
    echo "the VS server is ready!"
    ;;
stop)
    ipvsadm -C
    ifconfig $iface down
    echo "the VS server is canceled!"
    ;;
*)
    echo "Usage $(basename $0) start|stop"                                         
    exit 1
    ;;
esac
~      

ipvs scheduler调度算法:分为4种静态方法和6种动态方法

静态:

1、RR:轮询

2、WRR:加权轮询

3、SH:源IP地址hash,来自同一IP地址的请求,始终发往第一次挑中的RS,从而实现会话绑定

4、DH:目标地址hash,将发往同一目标地址的请求始终转发至第一次挑中的RS,

典型场景:正向代理缓存场景中的负载均衡,如:宽带运营商

正向,反向代理:离服务端近,反向,离客户端近,正向

动态:

主要根据每个RS当前的负载状态及调试算法进行调试  Overhead=value 较小的RS将被调度

1、LC :适用于长连接应用

Overhead=activeconns(活动链接)*256+inactiveconns (非活动链接)

谁值小,说明负载小,优选调度

2、WLC:默认调度方法

Overhead=(activeconns*256+inactiveconns)/weight(权重)

缺点:第一次大家值都一样,都是0

3、SED

Overhead=(activeconns+1)*256/weight

初始连接高权重优先,针对上面的缺点,先都加1

缺点:可能造成权重高的一样在调度,一直没能超过低的值

例如:权重比10:1   (0+1)*256/10<(0+1)*256/1 (1+1)*256/10<(0+1)*256/1 

4、NQ

针对上面的缺点,第一次不考虑权重,均匀分配,后续SED

5、LBLC 动态的DH算法

场景:根据负载状态实现正向代理

6、LBLCR 带复制功能的LBLC

解决LBLC负载不均衡问题,从负载重的复制到负载轻的RS

 

主机Client:

[[email protected] ~]#curl 10.0.0.100
<h1>RS2</h1>
[[email protected] ~]#curl 10.0.0.100
<h1>RS1</h1>
[[email protected] ~]#curl 10.0.0.100
<h1>RS2</h1>
[[email protected] ~]#curl 10.0.0.100
<h1>RS1</h1>

yum从光盘安装,修改

cd /
cd mnt
mkdir cdrom
cd ..
mount /dev/sr0 /mnt/cdrom/

vim /etc/yum.repos.d/CentOS-Media.repo 

[dvd]
name=Media
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0