客户端向目标vip发出请求,lvs接收 ,LVS根据负载均衡算法选择一台活跃的的节点,将此节点的ip所在网卡的mac地址作为目标mac地址,发送到局域网里
节点在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文.随后重新封装报文,发送到局域网.此时IP包的目标ip是客户端,源ip是自己的vip地址。
DR模式小结:
1、通过在调度器LB上修改数据包的目的MAC地址实现转发。注意源地址仍然是CIP,目的地址仍然是VIP地址。
2、请求的报文经过调度器,而RS响应处理后的报文无需经过调度器LB,因此并发访问量大时使用效率很高(和NAT模式比)
3、因为DR模式是通过MAC地址改写机制实现转发,因此所有RS节点和调度器LB只能在一个局域网里面
4、RS主机需要绑定VIP地址在LO接口上,并且需要配置ARP抑制。
5、RS节点的默认网关不需要配置成LB,而是直接配置为上级路由的网关,能让RS直接出网就可以。
6、由于DR模式的调度器仅做MAC地址的改写,所以调度器LB就不能改写目标端口,那么RS服务器就得使用和VIP相同的端口提供服务。
----------------------------------------------------------------------------------------------------------------------------------
vip为10.0.0.1
与nat不同的是每个节点上都要有10.0.0.1这个ip地址
LVS服务器的配置:
ifconfig eth0:0 10.0.0.1 (lvs不用重启网卡可以设置个临时ip来用)
ifconfig eth0 10.0.0.3
yum -y install ipvsadm #配置好yum源下载lvs管理工具
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -A -t 10.0.0.1:80 -s rr
-A:添加虚拟服务器
-t :指定vip及tcp端口
-s:指定算法
rr:轮询
ipvsadm -a -t 10.0.0.1:80 -r 10.0.0.2 -g -w 1
ipvsadm -a -t 1.0.0.1:80 -r 10.0.0.4 -g -w 1
-a :添加节点
-t :指定vip和端口
-r :指定节点ip及端口
-g:表示使用DR模式
-w:设置权重
ipvsadm-save #保存策略
service ipvsadm start #开启服务
cat /etc/sysconfig/ipvsadm #策略都会保存到这个文件
网站服务器10.0.0.2上的配置:
网卡ip 10.0.0.2
lo:0接口配置成vip
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vi ifcfg-lo:0
修改为下面内容 广播地址网络地址那些可以删掉
然后重启网络就可以了
设置过后的网卡信息是这样的
echo "10.0.0.4">/var/www/html/index.html
service httpd start
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
arp_announce为2时:只向该网卡回应与该网段匹配的ARP报文。
arp_ignore为1:只响应目的IP地址为接收网卡上的本地地址的arp请求。
------------------------------------------------------------------------------
网站服务器10.0.0.4上的配置:
网卡ip 10.0.0.4
lo:0接口配置成vip 10.0.0.1
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vi ifcfg-lo:0
改成下面内容
重启网卡
echo "10.0.0.4">/var/www/html/index.html
service httpd start
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
因为设置的轮询所以刷新一次就换一台服务器
搭建完毕。下面是关于其他调度算法的资料,大家可以看一下。
1)RR 轮询
Round Robin :新的连接请求被轮流分配至各RealServer,优点是该算法无需记录当前所有连接的状态,效率高;但缺点是在RealServer当中如果有性能不均等的情况下,性能差的主机将负载比较大。该算法容易倒致服务器之间负载不均衡;
2)WRR 加权轮询
Weighted RR :优点与RR一样,无需记录所有连接状态;通过设定一定的权重值来分配连接请求;
3)SH 源地址哈希
Source Hashing :通过一个散列函数将去往同一个目的IP的请求映射到一台服务器或链路上。
4)DH 目标地址哈希
Destination Hashing : 通过一个散列函数将来自同一个源IP的请求映射到一台服务器或链路上
5)LC 最少连接数
Least Connection :根据当前各服务器的连接数来估计服务器的负载情况,把新的连接分配给连接数最小的服务器;负载率=active*256+inactive,值小的优先分配请求;
6)WLC 加权最少连接数
Weighted LC :与LC类似,根据当前各服务器的连接数来估计服务器的负载情况,把新的连接分配给连接数最小的服务器;负载率=(active*256+inactive)/weight,值小的优先分配请求;
7)SED 最短期望延迟
Shortest Expect Delay : 这个算法主要是优化LC的,在服务均在请求少的时候避免负载到一台服务器上做的优化;负载率=(active+1)*256/weight,值小的优先分配请求;
8)NQ 永不排队
Nerver Queue :在负载低时,请求直接分配到空闲服务器上,不会产生请求等待;当服务器都很忙时,将轮询;
9)LBLC 基于本地最少连接
Locality-Based Least Connection:根据请求的目标IP地址找出该目标IP地址最近使用的RealServer,若该Real Server是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接”的原则选出一个可用的服务器,将请求发送到该服务器。
10)LBLCR 带复制的基于本地最少连接
Replicated and Locality-BasedLeast Connection :该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。